在上次 <https://www.cnblogs.com/cmt/p/11302666.html>發(fā)布失敗后,很多朋友建議我們改用 k8s
,但我們還是想再試試 docker swarm ,實在不行再改用 k8s 。
在改進了 docker swarm 集群的部署后,我們準(zhǔn)備今天 17:30 左右進行一次發(fā)布嘗試。
docker swarm 集群是我們使用阿里云服務(wù)器自己搭建的,這次進行了3方面的改進。
1. 升級了 worker 節(jié)點服務(wù)器的配置
worker 節(jié)點由6臺4核8G服務(wù)器換成了3臺8核16G服務(wù)器,基于3點考慮:
1)提高單臺服務(wù)器的處理能力;
2)提高服務(wù)器的網(wǎng)絡(luò)處理能力,阿里云的服務(wù)器配置越高,網(wǎng)絡(luò)處理能力越強;
3)減少服務(wù)器數(shù)量可以減少 docker swarm 節(jié)點之間的通信開銷。
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 網(wǎng)絡(luò)模式部署
ports: - target: 80 published: 80 protocol: tcp mode: host
另外,改進了博客系統(tǒng)緩存部分的代碼,解決了新舊版切換時的緩存沖突問題。
這次發(fā)布如果遇到問題,我們可以快速回退到舊版。
如果在發(fā)布過程中出現(xiàn)問題影響您的正常訪問,請您諒解。
------------------------------------------
發(fā)布過程記錄
17:40 使用 nginx 轉(zhuǎn)發(fā),切換了1/5不到的流量就出現(xiàn)了1秒延遲的問題。
18:20 改為 kestrel 以端口映射的方式直接監(jiān)聽 80 端口,切換了1/3左右的流量,未出現(xiàn)延遲1秒的問題。
18:33 所有流量都已切換,未出現(xiàn)延遲1秒的問題。
以下是發(fā)布過程中服務(wù)器同時連接數(shù)監(jiān)控,使用 nginx 轉(zhuǎn)發(fā)時,當(dāng)同時連接數(shù)超過 40K ,所有請求都出現(xiàn)1秒延遲的問題。當(dāng)改為 kestrel
直接監(jiān)聽80端口后,即使同時連接數(shù)超過 100K ,也沒出現(xiàn)1秒延遲的問題。沒想到1秒延遲竟然是 nginx 的問題(或者是 nginx 對 docker
swarm 的支持問題),不是 docker swarm 網(wǎng)絡(luò)本身的問題。
21:00 今天發(fā)布后一直在線上,如果明天上午的訪問高峰能撐住,那就說明發(fā)布成功了。
熱門工具 換一換