不懂就问 关于 Jenkins 自动部署项目后的疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lyusantu
V2EX    程序员

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

  •  
  •   lyusantu 2022-03-11 09:21:16 +08:00 3751 次点击
    这是一个创建于 1361 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    真心求解

    第 1 条附言    2022-03-11 10:02:55 +08:00
    感谢各位指导,我参考然后实践一下大家给出的建议,结贴了各位
    21 条回复    2022-03-11 17:57:03 +08:00
    dier
        1
    dier  
       2022-03-11 09:29:15 +08:00   1
    jenkins 里面也可以写执行命令,你先通过命令行的方式把注释的操作写成脚本,然后在 jenkins 发布的时候执行就可以了
    d0m2o08
        2
    d0m2o08  
       2022-03-11 09:29:21 +08:00   2
    jenkins 可以调用 ansible 去操作 nginx
    itechify
        3
    itechify  
    PRO
          1
    不懂就问,部署启动也很快呀,为啥要注释再取消注释这一步?执行 nginx reload ?
    ------
    如果要这样,jenkins 写 shell ,sed 匹配替换?
    ijse
        4
    ijse  
       2022-03-11 09:33:42 +08:00   1
    可以分组,把其中一组标记为 backup, 这样两组先后部署就可以保持服务不间断
    Judoon
        5
    Judoon  
       2022-03-11 09:34:07 +08:00   1
    nginx 没有健康检查吗?
    部署的时候应用挂了就不会转流量进来啊
    cheng6563
        6
    cheng6563  
       2022-03-11 09:34:41 +08:00   1
    写脚本呗
    先在 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
        7
    beetlerx  
       2022-03-11 09:35:09 +08:00   2
    用 nginx health check 插件啊
    defunct9
        8
    defunct9  
       2022-03-11 09:41:21 +08:00
    why 注释,没道理。jenkins 不关 nginx 的事啊
    Illusionary
        9
    Illusionary  
       2022-03-11 09:44:40 +08:00
    招个运维,上 K8s
    liuhuansir
        10
    liuhuansir  
       2022-03-11 09:46:04 +08:00   1
    你们公司运维都没有,却有服务不中断的要求。。。何况自动部署中断的时间很短吧
    cais
        11
    cais  
       2022-03-11 09:49:22 +08:00   1
    为什么需要注释掉启动的那台机器呢? 没看懂,如果考虑服务访问不到 完全不用担心,nginx 负载会自动转到其他服务器上的
    lyusantu
        12
    lyusantu  
    OP
       2022-03-11 09:55:43 +08:00
    @dier @dier get 到了,Send Build artifacts over SSH 可以添加多个 server 和 Transfers Set ,之前没注意
    lyusantu
        13
    lyusantu  
    OP
       2022-03-11 10:01:27 +08:00
    @liuhuansir
    @cais nginx 没有健康检查以及配置 backup ,所以在部署项目的时候,为了避免在部署中无法正常响应请求,所以人为的注释掉了

    不过这完全是因为为我这方面能力不达标,所以才会产生此种问题,才会在此请教各位
    lx0758
        14
    lx0758  
       2022-03-11 11:31:01 +08:00
    nginx health | traefik
    docker swarm
    k8s
    pckillers
        15
    pckillers  
       2022-03-11 12:26:38 +08:00
    把操作 nginx 的部分也写进 jenkins 不就解决了。sed 一下配置文件,再 nginx -reload 。
    sampeng
        16
    sampeng  
       2022-03-11 14:06:22 +08:00 via iPhone
    换个网关…比如 kong ,内核也是 nginx 。但可以通过 api 的方式控制
    dany813
        17
    dany813  
       2022-03-11 14:58:23 +08:00
    @sampeng kong 关注好久了,好用吗
    sampeng
        18
    sampeng  
       2022-03-11 15:48:51 +08:00 via iPhone
    @dany813 基本够用
    litchinn
        19
    litchinn  
       2022-03-11 17:37:09 +08:00
    纯 nginx lb ,没有用注册中心+网关吗,感觉网关才是解决这种需求的正经方案呢
    cco
        20
    cco  
       2022-03-11 17:56:46 +08:00
    写个脚本,jenkins 任务执行的时候调用一下就行。执行完在调用一次。比较笨的办法。
    thrallchen
        21
    thrallchen  
       2022-03-11 17:57:03 +08:00
    用 k8s ,rancher 操作 k8s 很简单,升级策略设置为新 pod 启动后再停止旧 pod ,就可以不中断服务
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     947 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 19:45 PVG 03:45 LAX 11:45 JFK 14:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86