nginx + etcd 七层动态负载均衡实践

 : jank    :   : 292    : 2019-06-30 17:28  linux

nginx + etcd + upsync module 实现七层动态负载均衡(无重启)

一、提前安装etcd

二、下载upsync 模块

     > cd /usr/local/src

     > git clone https://github.com/weibocom/nginx-upsync-module.git

三、编译安装nginx

      下载: > wget http://nginx.org/download/nginx-1.16.0.tar.gz

      安装: > tar -zxvf nginx-1.16.0.tar.gz

                > cd nginx-1.16.0

                > ./configure  --prefix=/usr/local/nginx  --add-dynamic-module=../nginx-upsync-module

                > make && make install

      nginx 编译安装完后,有目录/usr/local/nginx,且 在 /usr/local/nginx/modules/ 下有一个so文件:ngx_http_upsync_module.so

四、配置nginx 

      > cd /usr/local/nginx 

      > vim conf/nginx.conf

        输入如下配置信息:

user jank;
worker_processes  1;   #启动进程,和cpu数相等
load_module /usr/local/nginx/modules/ngx_http_upsync_module.so;  #引入unsync 模块
error_log  logs/error.log  debug;
pid       logs/nginx.pid;
events {
    worker_connections  1024;    #最大并发连接数
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    upstream etcd {
       upsync 127.0.0.1:2379/v2/keys/upstreams/pool upsync_timeout=6m upsync_interval=500ms upsync_type=etcd strong_dependency=off;
       upsync_dump_path /usr/local/nginx/conf/server_list.conf;
       include /usr/local/nginx/conf/server_list.conf;
   }

    server {
        listen 8090;
                                                                        
        location  /v1 {
            proxy_pass http://etcd;
        }
    
        #show all upstream 
        location /upstream_show {
            upstream_show;
        }      
   }                                                                                        
        
}

      在conf 下 创建一个server_list.conf 文件,并记录一条upstream配置信息,以备初次启动nginx时使用/nginx 配置动态更新时会刷新该配置信息

    server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=10s;

     

      测试:

       1.往etcd 中put 几条信息,由于 upsync 目前支持etcd v2版 http 接口,则调用如下所示:  

          curl -X PUT http://localhost:2379/v2/keys/upstreams/pool/127.0.0.1:8081 -d value='{"weight":1, "max_fails":2, "fail_timeout":10}'

          curl -X PUT http://localhost:2379/v2/keys/upstreams/pool/127.0.0.1:8082 -d value='{"weight":1, "max_fails":2, "fail_timeout":10}'

          curl -X PUT http://localhost:2379/v2/keys/upstreams/pool/127.0.0.1:8083 -d value='{"weight":1, "max_fails":2, "fail_timeout":10}'

        2. 访问 localhost/upstream_show 展示如下,同时server_list.conf 中也将出现三条配置信息

,说明配置成功

Upstream name: etcd; Backend server count: 3
        server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=10s;
        server 127.0.0.1:8082 weight=1 max_fails=2 fail_timeout=10s;
        server 127.0.0.1:8083 weight=1 max_fails=2 fail_timeout=10s;


至此整个配置过程完成。









  


   

备案编号:赣ICP备15011386号

联系方式:qq:1150662577    邮箱:1150662577@qq.com