Blue/Green Deployment(蓝绿部署),又称为蓝绿发布
,是一种通过切换蓝绿环境的方式实现新版本的不停机发布手法.通过这种方式可以实现应用的不停机升级,快速回滚等诸多好处.当然弊端是切换的瞬间对于尚未来得及响应的请求会丢失响应.
具体的做法是
- 1.部署两套生产环境,我们称这两套环境分别为
蓝色环境
和绿色环境
. - 2.使用负载均衡指向其中一套环境(也可以都指向),当版本升级时 先将版本发布到备用环境中 ,进行有效性测试, 测试通过后,将需要升级的环境(如蓝色环境)流量全部导流到备用环境中,此时备用环境与原来的正式环境完成了一次角色互换.
- 3.重新配置负载均衡.
- 4.如需回滚将LB流量重新指向旧环境即可.
当然,这里也可以让蓝绿两套环境同时支持线上, 思路是一样的, 核心的技术点仍然是通过nginx
配置热加载完成导流实现.
1.环境准备
- nginx一份
- tomcat两份(配置好端口并启动验证可访问)
2.LB配置
nginx.conf
配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 # ... 省略
http {
# ... 前面省略
upstream nginx_blue_green {
#蓝色环境
#server 127.0.0.1:8081 down;
#server 127.0.0.1:8080 weight=100;
#绿色环境
server 127.0.0.1:8080 down;
server 127.0.0.1:8081 weight=100;
}
# ... 中间省略
server {
location / {
proxy_pass http://nginx_blue_green;
}
}
# ... 后面省略
}
3.发布切换
发布时只需要编辑nginx.conf
注释解注对应蓝绿环境,然后使用nginx -s reload
重新加载配置即可实现蓝绿切换.
————————————– ** 分割线 ** ————————————–
** 以下内容为word手册版 **
1 蓝绿部署
1.1 目的
为实现在线服务新版本的不停机更新,可以采用蓝绿部署的方式实现版本的平滑升级。
1.2 前提
实现蓝绿部署需要同时配置两套tomca
作为蓝绿发布环境,同时配置nginx
作为负载。
1.3 步骤
1.3.1 配置蓝绿环境
解压附件包中的蓝绿环境tomcat
1.3.2 安装nginx
解压附件中的nginx-1.15.2.tar.gz
并执行如下命令
1.3.3 配置nginx
使用whereis查看nginx安装的路径,通常在/usr/local/nginx
下,修改nginx配置并使用如下配置替换原有配置内容
1.3.4 部署方式
** 首次部署方式:**
只需要按照章节4步骤部署一套应用即可,这里假设部署到tomcat-blue(8081)
,然后在nginx
目录下使用 ./sbin/nginx
启动nginx即可。
** 版本更新方式:**
1. 将新版本发布到绿色环境(tomcat-green)
,启动tomcat-green并验证是否可以访问,以及app是否可以正常使用。
2. 确认绿色环境测试通过,修改nginx配置放开绿色环境相关配置的注释,同时注释蓝色环境相关配置的注释
3. 使用 nginx -s reload
命令重新加载nginx配置完成蓝色环境到绿色环境的切换
4. 关闭蓝色环境tomcat,准备下次部署使用。
5. 如升级失败,修改nginx配置将负载重新指向蓝色环境
即可。