在上次 <https://www.cnblogs.com/cmt/p/11302666.html>发布失败后,很多朋友建议我们改用 k8s
,但我们还是想再试试 docker swarm ,实在不行再改用 k8s 。

在改进了 docker swarm 集群的部署后,我们准备今天 17:30 左右进行一次发布尝试。

docker swarm 集群是我们使用阿里云服务器自己搭建的,这次进行了3方面的改进。

1. 升级了 worker 节点服务器的配置

worker 节点由6台4核8G服务器换成了3台8核16G服务器,基于3点考虑:

1)提高单台服务器的处理能力;

2)提高服务器的网络处理能力,阿里云的服务器配置越高,网络处理能力越强;

3)减少服务器数量可以减少 docker swarm 节点之间的通信开销。

2. 升级了 docker engine,由 18.09.4 升级至 19.03.1 

wget -c
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
&& \wget -c
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.1-3.el7.x86_64.rpm
&& \wget -c
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-19.03.1-3.el7.x86_64.rpm
&& \yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm && \ yum install -y
docker-ce-19.03.1-3.el7.x86_64.rpm && \yum install -y
docker-ce-cli-19.03.1-3.el7.x86_64.rpm
3. nginx 改用 host 网络模式部署
ports: - target: 80 published: 80 protocol: tcp mode: host
另外,改进了博客系统缓存部分的代码,解决了新旧版切换时的缓存冲突问题。

这次发布如果遇到问题,我们可以快速回退到旧版。

如果在发布过程中出现问题影响您的正常访问,请您谅解。

------------------------------------------

发布过程记录

17:40 使用 nginx 转发,切换了1/5不到的流量就出现了1秒延迟的问题。

18:20 改为 kestrel 以端口映射的方式直接监听 80 端口,切换了1/3左右的流量,未出现延迟1秒的问题。

18:33 所有流量都已切换,未出现延迟1秒的问题。

以下是发布过程中服务器同时连接数监控,使用 nginx 转发时,当同时连接数超过 40K ,所有请求都出现1秒延迟的问题。当改为 kestrel
直接监听80端口后,即使同时连接数超过 100K ,也没出现1秒延迟的问题。没想到1秒延迟竟然是 nginx 的问题(或者是 nginx 对 docker
swarm 的支持问题),不是 docker swarm 网络本身的问题。



21:00 今天发布后一直在线上,如果明天上午的访问高峰能撑住,那就说明发布成功了。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信