问题
平滑升级是什么?
-
是一种在热升级手段,在不中断服务的情况下升级软件。
为什么平滑升级呢?
-
因为现在软件版本功能已经无法满足上产需求,所以需要升级新的版本,来提供更好的服务。
平滑升级是则么做到的?
-
用新的进程,把旧的进程替换掉。
具体是咋么做到的呢?请看
案例1
出现为题是否能回滚呢?
-
可以,回滚流程请看
案例2
案例一:平滑升级nginx服务
实验环境
selinux:关闭状态 firewalld:关闭状态 nginx两个版本: 例如:版本为nginx-1.20.1和nginx-1.21.3
实验过程
先安装nginx1.20.1版本 步骤如下:
把软件解压到当前目录
[root@localhost media]
安装编译工具
[root@localhost media]
进入目录编译安装nginx
[root@localhost media]
创建个用户没有家目录,并且登入环境为nologin,用来管理nginx软件
[root@localhost nginx-1.20.1]
[root@localhost nginx-1.20.1]
创建软连接,添加环境变量
[root@localhost nginx-1.20.1]
启动nginx服务
[root@localhost nginx-1.20.1]
查看进程
[root@localhost media]
root 25803 0.0 0.0 20520 620 ? Ss 18:44 0:00 nginx: master process nginx
nginx 25804 0.0 0.0 23048 1380 ? S 18:44 0:00 nginx: worker process
root 26121 0.0 0.0 112668 968 pts/3 S+ 19:15 0:00 grep --color=auto nginx
开始升级
[root@localhost media]
[root@localhost media]
[root@localhost media]
[root@localhost nginx-1.21.3]
[root@localhost nginx-1.21.3]
[root@localhost sbin]
[root@localhost nginx-1.21.3]
[root@localhost media]
root 25803 0.0 0.0 20520 620 ? Ss 18:44 0:00 nginx: master process nginx
nginx 25804 0.0 0.0 23048 1380 ? S 18:44 0:00 nginx: worker process
root 26121 0.0 0.0 112668 968 pts/3 S+ 19:15 0:00 grep --color=auto nginx
用此命令来平滑升级
[root@localhost sbin]
[root@localhost media]
root 25803 0.0 0.0 20520 804 ? Ss 18:44 0:00 nginx: master process nginx
nginx 25804 0.0 0.0 23048 1380 ? S 18:44 0:00 nginx: worker process
root 26202 0.0 0.0 20520 1604 ? S 19:24 0:00 nginx: master process nginx
nginx 26203 0.0 0.0 23048 1376 ? S 19:24 0:00 nginx: worker process
root 26205 0.0 0.0 112668 972 pts/3 S+ 19:24 0:00 grep --color=auto nginx
[root@localhost sbin]
[root@localhost media]
root 25803 0.0 0.0 20520 804 ? Ss 18:44 0:00 nginx: master process nginx
root 26202 0.0 0.0 20520 1604 ? S 19:24 0:00 nginx: master process nginx
nginx 26203 0.0 0.0 23048 1376 ? S 19:24 0:00 nginx: worker process
root 26224 0.0 0.0 112668 972 pts/3 S+ 19:27 0:00 grep --color=auto nginx
注:到此位置已升级完成,没问题可以把旧的进程直接kill掉。如果出现问题在这可知执行回滚操作
回滚流程
# 开始实现回滚操作
[root@localhost sbin]# kill -hup 25803
# 旧进程再次启动
[root@localhost sbin]# ps -aux | grep nginx
root 25803 0.0 0.0 20520 804 ? Ss 18:44 0:00 nginx: master process nginx
root 26202 0.0 0.0 20520 1604 ? S 19:24 0:00 nginx: master process nginx
nginx 26203 0.0 0.0 23048 1376 ? S 19:24 0:00 nginx: worker process
nginx 26330 0.0 0.0 23048 1376 ? S 19:39 0:00 nginx: worker process
root 26332 0.0 0.0 112668 972 pts/3 S+ 19:39 0:00 grep --color=auto nginx
[root@localhost media]# kill -winch 26202
[root@localhost media]# kill -9 26202
[root@localhost sbin]# ps -aux | grep nginx
root 25803 0.0 0.0 20520 804 ? Ss 18:44 0:00 nginx: master process nginx
nginx 26203 0.0 0.0 23048 1376 ? S 19:24 0:00 nginx: worker process
# 回滚完成
用来平滑升级和回滚的命令
命令 | 解释 | 系统支持的信号编号 |
---|
kill -usr2 | 用来平滑升级 | 12 | kill -winch | 从容关进程 | 28 | kill -hup | 激活进程 | 1 |
|