不懂就问 关于 Jenkins 自动部署项目后的疑问

2022-03-11 09:21:16 +08:00
 lyusantu

不懂就问,这个公司没有运维,目前项目采用的是集群的方式部署,搭了一套 jenkins 自动打包部署到服务器,但是每次都得人为的在 Nginx 的负载均衡配置里把当前自动部署的这台服务器的地址注释掉,全部部署好了之后再全部取消注释,有没有什么办法把 nginx 这一步也自动化呀?

真心求解

3323 次点击
所在节点    程序员
21 条回复
dier
2022-03-11 09:29:15 +08:00
jenkins 里面也可以写执行命令,你先通过命令行的方式把注释的操作写成脚本,然后在 jenkins 发布的时候执行就可以了
d0m2o08
2022-03-11 09:29:21 +08:00
jenkins 可以调用 ansible 去操作 nginx
oneisall8955
2022-03-11 09:30:05 +08:00
不懂就问,部署启动也很快呀,为啥要注释再取消注释这一步?执行 nginx reload ?
------
如果要这样,jenkins 写 shell ,sed 匹配替换?
ijse
2022-03-11 09:33:42 +08:00
可以分组,把其中一组标记为 backup, 这样两组先后部署就可以保持服务不间断
Judoon
2022-03-11 09:34:07 +08:00
nginx 没有健康检查吗?
部署的时候应用挂了就不会转流量进来啊
cheng6563
2022-03-11 09:34:41 +08:00
写脚本呗
先在 nginx 配置文件的 server 后面打个注释标记,比如这样:
server 192.168.1.10:8080; # __serv0__

脚本如下:
tag='__serv0__'
file='/etc/nginx/nginx.conf'
sed -i -E 's/(.+'"$tag"'.*)/#\1/g' $file
可以在标记行最前面插入注释
sed -i -E 's/#+(.+'"$tag"'.*)/\1/g' $file
可以取消最前面的注释
beetlerx
2022-03-11 09:35:09 +08:00
用 nginx health check 插件啊
defunct9
2022-03-11 09:41:21 +08:00
why 注释,没道理。jenkins 不关 nginx 的事啊
Illusionary
2022-03-11 09:44:40 +08:00
招个运维,上 K8s
liuhuansir
2022-03-11 09:46:04 +08:00
你们公司运维都没有,却有服务不中断的要求。。。何况自动部署中断的时间很短吧
cais
2022-03-11 09:49:22 +08:00
为什么需要注释掉启动的那台机器呢? 没看懂,如果考虑服务访问不到 完全不用担心,nginx 负载会自动转到其他服务器上的
lyusantu
2022-03-11 09:55:43 +08:00
@dier @dier get 到了,Send Build artifacts over SSH 可以添加多个 server 和 Transfers Set ,之前没注意
lyusantu
2022-03-11 10:01:27 +08:00
@liuhuansir
@cais nginx 没有健康检查以及配置 backup ,所以在部署项目的时候,为了避免在部署中无法正常响应请求,所以人为的注释掉了

不过这完全是因为为我这方面能力不达标,所以才会产生此种问题,才会在此请教各位
lx0758
2022-03-11 11:31:01 +08:00
nginx health | traefik
docker swarm
k8s
pckillers
2022-03-11 12:26:38 +08:00
把操作 nginx 的部分也写进 jenkins 不就解决了。sed 一下配置文件,再 nginx -reload 。
sampeng
2022-03-11 14:06:22 +08:00
换个网关…比如 kong ,内核也是 nginx 。但可以通过 api 的方式控制
dany813
2022-03-11 14:58:23 +08:00
@sampeng kong 关注好久了,好用吗
sampeng
2022-03-11 15:48:51 +08:00
@dany813 基本够用
litchinn
2022-03-11 17:37:09 +08:00
纯 nginx lb ,没有用注册中心+网关吗,感觉网关才是解决这种需求的正经方案呢
cco
2022-03-11 17:56:46 +08:00
写个脚本,jenkins 任务执行的时候调用一下就行。执行完在调用一次。比较笨的办法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/839575

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX