使用consul实现nginx动态负载均衡

16 篇文章 0 订阅
9 篇文章 0 订阅

运用nginx-upsync-module模块定时调取consul的接口获取server列表,更新nginx的路由信息,也就是consul 作为 Nginx 的 db,利用 consul 的 KV 服务,每个 Nginx work 进程独立的去拉取各个 upstream 的配置,并更新各自的路由,通过增减consul的数据实现nginx的动态伸缩

安装nginx的nginx-upsync-modul模块,下载地址
通过容器安装consul服务节点
拉取dockerhub上的consul镜像到本地
docker pull consule
运行consul服务的容器
docker run -itd --name consul-upsync --network nginxbalancepro_nginxnetwork1 -p 8700:8500 --ip 192.168.5.15 consul

可以用以下命令进入consul容器查看运行

docker exec -it consul-upsync sh
进入负载均衡nginx容器,配置负载均衡nginx.conf
    upstream consulserver {
         server  36.112.201.233:10081 max_fails=3 fail_timeout=5s;
         upsync 36.112.201.233:8700/v1/kv/upstreams/consulserver upsync_timeout=20s upsync_interval=500ms  upsync_type=consul strong_dependency=off;
         upsync_dump_path /usr/local/nginx/conf/consulserver.conf;
         include /usr/local/nginx/conf/consulserver.conf;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
                        proxy_pass http://consulserver;
    }

upsync模块会去consul拉取最新的upstream信息并存到本地的文件中
upsync_timeout 配置从consul拉取上游服务器的超时时间
upsync_interval 配置从consul拉取上游服务器的间隔时间
upsync_type 指定使用配置服务器的类型,当前是consul
strong_dependency 启动时是否强制依赖配置服务器,如果配置为on,则拉取失败,nginx同样会启用失败

upsync_dump_path 指定从consul拉取的上游服务器后持久化到的位置,这样即使consul服务器出问题了,本地同样会有备份

使用 server 36.112.201.233:10081 作为默认项

手动创建consulserver.conf文件
touch /usr/local/nginx/conf/consulserver.conf
重启nginx
nginx -s reload
这时consul为空,多次访问页面只会使用默认的web1节点

在这里插入图片描述

使用curl模拟向consul动态添加server数据
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://36.112.201.233:8700/v1/kv/upstreams/consulserver/36.112.201.233:10082
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://36.112.201.233:8700/v1/kv/upstreams/consulserver/36.112.201.233:10083
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://36.112.201.233:8700/v1/kv/upstreams/consulserver/36.112.201.233:10081
访问consul可视化页面,可以看到数据

在这里插入图片描述

查看到nginx将consul数据读取到本地consulserver.conf文件中

在这里插入图片描述

多次访问页面。可以转发到新增的节点上

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值