说明:
本文档的目的是让发布部署做到用户无感知,不影响现网正常使用。
这里只包括web和服务端的部署,数据库要根据实际情况来做处理,很难做到热部署,所以这里不做说明。
另外,由于发布部署过程中,会将部分服务器从现网摘除,所以仍然会影响到现网的处理能力,需要根据在线用户情况来权衡,最好还是要在用户比较少的时候部署。
- web部署
- 从nginx中去掉要部署的服务
- 修改nginx配置
- 从nginx中去掉要部署的服务
使用ssh登录到服务器
打开nginx配置文件
# cd /usr/local/nginx/
# vi conf/nginx.conf
找到upstream配置:
将服务注释掉,比如我们要部署10.13.1.18,则注释掉server 10.13.1.18:3311;
保存退出
-
-
- 使nginx配置生效
-
# sbin/nginx -s reload
如果没有任何错误信息,说明配置正确
看一下日志,是否已经切换了
# cd /home/logs/nginx
# tail -f access.log
多访问几次,看看是否已经没有了10.13.1.18:3311的日志,如果没有了,说明修改生效。
-
- 通过jenkins发布
使用jenkins发布新的war包到10.13.1.18,这部分和以前一样,这里不再详细说明
-
- 在nginx中加上服务
- 恢复nginx配置
- 在nginx中加上服务
War包发布成功以后,将服务恢复,同样打开nginx的配置文件
# cd /usr/local/nginx/
# vi conf/nginx.conf
将之前注释的部分去掉
改为:
-
-
- 使nginx配置生效
-
# sbin/nginx -s reload
如果没有任何错误信息,说明配置正确
看一下日志,是否已经切换了
# cd /home/logs/nginx
# tail -f access.log
多访问几次,看看是否有10.13.1.18:3311的日志,如果有了而且是status是200,说明修改生效。
- service部署
访问dubbo-monitor控制台:http://117.144.188.16/monitor/
你将看到如下页面:
-
- 去掉dubbo服务端注册信息
点击dubbo-monitor控制台中的Hosts菜单,可以看到当前所有的服务器信息
找到你要部署的服务端地址,点击Providers,比如我们要卸载重新部署10.13.1.13里的一个服务:
可以看到这里有两个服务提供者,点击进去可以看到服务提供者的详细信息,:
点击你想要部署的服务端右面的按钮,就会将改服务提供者从zookeeper中卸载掉了,如果你不知道服务端对应的是哪个tomcat,可以ssh到linux服务器,通过端口查找,如下:
# ssh root@10.13.1.13
根据服务提供者的端口,如图:
查看一下该端口对应的tomcat是哪个:
# netstat -anp|grep 20888
可以看到用java进程的ID,然后查看该ID对应的进程信息
# ps -ef|grep 4406
这样我们就知道了20888对应的是apache-tomcat-testdataverify02,到jenkins中根据配置就可以找到对应的部署任务。
-
- 等待服务把任务处理完
上一步从zookeeper中把服务端摘除,这个只是删除了注册信息,也就是说,新的任务不会看到它,但是它正在处理的任务还是要继续执行的,所以这里要关注一下日志信息,如果有日志打印,就说明还有任务,等待一会,当没有新的日志之后,再发布。
# cd /home/work/tomcat/apache-tomcat-testdataverify02
# tail -f logs/catalina.out
等待几分钟,当确实没有新的日志,再发布
-
- 通过jenkins发布
使用jenkins发布新的war包,这部分和以前一样,这里不再详细说明
发布完成后,服务端会自动注册到zookeeper中,可以通过dubbo-monitor控制台确认一下,是否有该服务。