nginx代理上下线,停服

原创文章,转载请注明出处。

Nginx代理组一般有2个nginx服务器,互为主备。

对某一个应用服务的启动、停止、重启,这几个过程都涉及Nginx的上下线。

很显然,运维平台中,在对某一个服务进行停止的操作中,大致过程如下:

1、将服务下线:代理组2个nginx都要下线,调用nginx的下线接口即可;此外,应该在下线后,检测服务是否真的下线成功。

2、将所有服务器上该服务都给停止。

按照这个逻辑,很可能写出代码:

for nginx in nginx_list:
    # 1、获取该nginx上所代理该服务的服务器列表    
    
    for server in server_list:
        # 2、对每个服务器进行:下线->停服务

这隐藏问题:

1、比如,Nginx1 在svr1下线---停服务 的时候,此时,nginx2还是没有下线的,这样会导致,nginx2过来的请求还是直接代理到该服务器,客户端会报错的。而且当服务器数量较多的时候,内循环操作时间较长,那么走nginx2过来的请求,都会收到报错响应。

2、现在,Nginx1 代理的服务器都停止完了,Nginx 2也重复下线---停服务  这个动作,你会发现,下线没毛病,但是服务又被停止了一次。。。。。。

3、如果是启动服务,那么是启动服务----上线的操作流程。这样你会发现,服务同样会被启动多1次。

如何解决这个问题呢???

可以用下图来有个直观的认识:

很简单,把上面代码的内外循环调过来:

for server in server_list:
    # 外循环为服务器列表
    for nginx in nginx_list:
        # 对每个nginx进行下线,停服务操作
        pass

这样做的逻辑为,每个服务器依次下线----停服务,内循环为nginx列表,对一个svr 1 的操作中,将其从代理组的两个nginx中都先下线了,然后再停止服务。

 

暂时先写到这里吧。后续有心得再补充。

启动服务: 启动服务---- 上线

停止服务:下线 ---- 停止服务

重启服务:下线----停止服务----启动服务----上线

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值