Press "Enter" to skip to content

NGINX服务器利用consul和nginx-upsync-module,实现负载均衡动态增删服务器节点

环境介绍,一台centos7服务器,安装了lnmp环境。
思路:首先给NGINX安装consul-upsync-module模块,利用docker拉取一个consul服务,然后修改相应的NGINX.conf文件。

Step 1:下载consul-upsync-module,并进行安装。

cd /usr/local/src/

wget  https://github.com/weibocom/nginx-upsync-module/archive/v2.1.0.tar.gz

tar -zxvf nyinx-upsync-modle.tar.gz

Step 2:进入nginx-1.2 目录下,重新编译NGINX

./configure --add-module=/root/nginx-upsync-module-2.1.0
make
make install

Step 3:拉取一个docker consul镜像

docker pull consul
docker run -itd --name consul -p 8700:8500 consul

Step 4:配置nginx.conf文件

    upstream up_test{
        server 127.0.0.1:8081;
        upsync  127.0.0.1:8700/v1/kv/upstreams/up_test upsync_timeout=6m upsync_interval=500ms  upsync_type=consul  strong_dependency=off;
        upsync_dump_path /usr/local/nginx/conf/servers_test.conf;
        include /usr/local/nginx/conf/servers_test.conf;
    }
    server {
        listen       80;
        server_name  nginx.zpfei.net;

        location / {
                proxy_pass http://up_test;
        }
    }

参数说明:

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

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

Step 5:增加删除一台负载均衡服务器。前提是我系统中已经利用docker运行了三个lnmp容器,所对应的端口分别是8081 8082 8083.

curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://$consul_ip:$port/v1/kv/$dir1/$upstream_name/$backend_ip:$backend_port //格式


curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://127.0.0.1:8700/v1/kv/upstreams/up_test/127.0.0.1:8081 //增加8081

curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://127.0.0.1:8700/v1/kv/upstreams/up_test/127.0.0.1:8082 //增加8082

curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://127.0.0.1:8700/v1/kv/upstreams/up_test/127.0.0.1:8083  //8083


curl  -X  DELETE  http://127.0.0.1:8700/v1/kv/upstreams/up_test/127.0.0.1:8081  //删除8081

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注