很长时间没有更新网站内容,不过还是抽出时间对网站架构进行了升级。
主要升级点
- 将网站平台由.NET 6.0迁移至.NET 7.0,这次迁移是平滑的,没有Break changes。
- 数据库也升级至PostgreSQL 15。
- 之前网站是基于Docker容器部署的,后来了解到Podman这个最佳替代,于是将Docker部署迁移至Podman部署。
- 编写了网站引导脚本(Boot Script),在启动网站程序前执行自动化测试检测外部环境设施(数据库、消息队列、邮件系统、传输代理等)是否正常,测试通过后拉起网站程序。
- 全站迁移至Cloudflare CDN。
需要特别提出的
- 使用Podman部署,其好处是去中心化,Podman不像Docker一样有个守护进程,守护进程崩溃了所有Docker容器也会崩溃,Podman是Rootless的相比较而言会更加安全(Docker也有Rootless部署方式),Podman与systemd结合紧密可以直接将容器做成独立的服务,当然Docker转Podman也遇到过大大小小的坑,有机会和大家分享一下。
- 使用引导脚本,最大原因就是外部环境设施启动较.NET应用慢,如果.NET先启动就会导致连接必要的外部基础设施超时报错,虽然通过容器Healthy状态编排了depends on,但这种现象依旧无法避免,连接超时会导致上游nginx 502 Bad Gateway报错,终端用户可能不断请求进一步消耗不必要的连接资源,引导脚本模拟了计算机启动自检,在自检没有完成的前提下,将请求流量用haproxy backup模式导入到临时页面上,显示友好错误消息,如果自检失败将自动通知网站管理员报告错误情况,自检成功后则拉起.NET应用,并恢复网站正常访问。
- 使用Cloudflare CDN,之前是通过DNS将境外访问流量导入Cloudflare,境内访问流量直接连接,主要考虑到Cloudflare境内会抽风,实际上境内恶化的国内线路问题即使直接连接服务器也会出现抽风问题,索性直接全部采用Cloudflare,后续再观察观察。
To continue use comments feature please understand our privacy policy first and then you should allow the following type of cookies that for comment service:
By click the button below you will being asked by a pop-up box to confirm which cookies you're happy for me to use.
Understood & Confirm Cookie Settings