开发

生产环境慎用小服务商

本站从一个服务器被迫分成了两个轻量应用服务器和一个数据库

2023年3月23日
生产环境慎用小服务商
本文共有956字,预计阅读时间4分钟
这周花了点时间,把本站全部资源迁移到腾讯云了。

为什么要折腾

上周某一天,突然发现博客的EXIF查询挂了。仔细一看是原图链接无法访问。因为图片都是缓存所以一直没发现,也不知道什么时候挂的。
之前我用的是LayerStack的主机,因为价格还不错,就买了个4核8G的服务器,一个月才78港币。然后把所有本站相关的服务都部署上去了,包括Strapi、Next、评论、访问分析、推送和EXIF查询。这么多服务一起跑,从来没有遇到性能瓶颈。还可以加钱上CN2线路。
因为对服务器比较满意,也就用了他们家刚推出的对象存储。虽然功能极其简陋,只有一对key,没有其他任何管理存储桶的功能。但一个月20多港币的价格加上大陆直连还不错的速度,缺点也不是不能忍。
就是这个对象存储出的问题。
当我发现资源无法访问的时候,尝试找客服。然而他们花了很久也没弄清楚原因,甚至为了排查问题,还要去了服务器登录密码和网站的密码。
最终给我的答复是:你可以用http访问,不要用https。
一试果然如此。
可是我之前https用的没问题,我也没有对对象存储做任何设置变动——也没有什么设置可以变动,你甚至不能更换那对授权key——现在出了这个问题,可以确定是你们那边的责任啊。
可是他们没有给我提前通知,也没有在事后告诉我,更没有给出一个合理的解决方案。在我询问为什么之前可以用https现在不行的时候,他们就会重复车轱辘话。
我也尝试让对象存储支持https,但没有相关设置,文档也找不到说明。
我想了下,趁现在数据还不多,赶紧迁吧,将来出问题更不好迁。

新的部署方案

寻找替代方案的时候,我发现腾讯云的轻量应用服务器价格还行,就把所有服务逐步迁移到两个轻量应用服务器上。
所有Docker应用如评论、分析、推送部署在一个广州的2核2G机器上,所有Node应用部署在香港的一个2核8G机器上,包括Strapi、Next。
数据库则是一个轻量数据库,考虑到后续的数据安全,外部数据库应该会好点。
迁移Strapi的时候,因为数据库从PostgreSQL换成了MySQL,有一些兼容问题,被迫了解了一些SQL语句和数据库操作。
因为现在的服务器性能不像之前那么强,而经过next/image处理的图片,在第一次访问的时候,需要服务器实时压缩转码,而我网站的图片又多又大,结果就是在访问摄影相关页面的时候,会卡挺久。其实这不是网络问题,而是服务器性能问题。
于是我写了个自定义Image Loader,将处理图片的过程放到腾讯云CDN来做,减轻服务器压力。
在迁移数据的时候,Strapi、remark42都很顺利。但是Plausible的数据死活迁移不过来,官方也没提供方法。于是一怒之下把Web Analytics服务换成了Umami
现在已经基本折腾完,性能已经接近之前的方案了。我只希望腾讯云能稳一点,也别关门打老用户,以后我真的不想再经历一次搬家了。

评论