nginx后端节点更新不停机

nginx负载均衡后端节点时可以实现后端服务的高可用状态避免单机故障带来的安全隐患
但是存在问题的是当批量更新后端会造成业务的短暂不可用,可以增加backup参数来保障更新带来的暂时可用性
搭配tengine健康参数(这种方式在业务大量使用期间可能也会存在故障,没有过多的压测和落地)只是简单记录
节点端口
nginx1(node1)8888
nginx2(backup)9999
nginx3 (node2)7777
nginx4(代理服务)81
容器模拟环境
  1. 运行节点
[root@00fb4b8e82cf ~]# docker run -itd --name nginx1 -p 8888:80 harbor.od.com/public/nginx:v1.20
[root@00fb4b8e82cf ~]# docker run -itd --name nginx2 -p 9999:80 harbor.od.com/public/nginx:v1.20
[root@00fb4b8e82cf ~]# docker run -itd --name nginx3 -p 7777:80 harbor.od.com/public/nginx:v1.20
  1. 配置页面
[root@00fb4b8e82cf ~]# docker exec -it nginx1 bash -c "echo "node1" > /usr/share/nginx/html/index.html"
[root@00fb4b8e82cf ~]# docker exec -it nginx2 bash -c "echo "backup" > /usr/share/nginx/html/index.html"
[root@00fb4b8e82cf ~]# docker exec -it nginx3 bash -c "echo "node2" > /usr/share/nginx/html/index.html"
  1. 访问正常,端口节点
[root@00fb4b8e82cf ~]# for i in {8888,9999,7777};do curl http://10.1.7.109:${i};done
node1
backup
node2
  1. 启动代理节点
4.1 本地创建配置文件挂载目录
[root@00fb4b8e82cf ~]# mkdir conf.d/

4.2 编辑配置文件(以下配置比较简单只是单纯为了实现方式)
[root@00fb4b8e82cf ~]# vi conf.d/default.conf
upstream back {
 server 10.1.7.109:7777 weight=1;
 server 10.1.7.109:8888 weight=1;
 server 10.1.7.109:9999 backup;
 check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_http_send "HEAD / HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
}

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    location / {
	proxy_pass http://back;
    }
    location /status {
	check_status;
	}
}

4.3 启动容器并挂载配置文件,方便后续修改
[root@00fb4b8e82cf ~]# docker run -itd --name nginx4 -p 81:80 -v /root/conf.d/:/etc/nginx/conf.d/  harbor.od.com/public/tengine

4.4 负载均衡正常
[root@00fb4b8e82cf ~]# for i in {1..5};do curl http://10.1.7.109:81;done
node2
node1
node2
node1
node2
  1. 简单压测方式:每秒循环请求
5.1 手动停止nginx1 nginx3,最终结果两节点下线后,转发将完全请求到backup节点
[root@00fb4b8e82cf ~]# while true;do curl http://10.1.7.109:81 ;sleep 1 ;done
node1
node2
node1
node2
node1
...
node2
node2
node2
node2
node2
...
backup
backup
backup
backup

5.2 等手动启动nginx1 nginx3后又会被重新调度到,backup节点不再受理。当然不能避免大并发访问,调度检查中存在的失败请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值