nginx更新后端不用重启nginx

600人浏览 / 0人评论

1. 安装 

安装nginx动态upstream配置模块,如果你已经安装了nginx,那么轻参考ttlsa上的如何安装nginx第三方模块,会安装的请跳过.

  1. cd /usr/local/src/

  2. # wget https://github.com/yzprofile/ngx_http_dyups_module/archive/master.zip \

  3. -O  ngx_http_dyups_module-master.zip

  4. # unzip ngx_http_dyups_module-master.zip

  5. # wget http://nginx.org/download/nginx-1.4.2.tar.gz

  6. # tar -xzvf nginx-1.4.2.tar.gz

  7. # cd nginx-1.4.2

  8. # ./configure --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module

  9. \--add-module=../ngx_http_dyups_module-master/

  10. # make

  11. # make install 

 2. 指令

模块: dyups_interface 

3. restful接口 

GET /detail 获取所有upstream名称以及upstream里面的servers信息 /list 获取upstream列表 /upstream/name 使用upstream名称获取upstream信息 POST /upstream/name 更新upstream body 配置内容; body server ip:port; DELETE /upstream/name 删除upstream,name相应修改 3.1 调用接口响应http状态码 500: 需要reload nginx 409: 重新调用一次接口,上个请求被锁了. 204:调用list或者detail时出现,表示没有响应内容 其他:你的命令错误,请修改 注意:你需要第三方模块来生成新的配置文件到nginx配置目录. 

4. nginx配置

http {
    # 从upstream读取初始upstream配置
    dyups_upstream_conf  conf/upstream.conf;
    include conf/upstream.conf;
 
    # 默认主机
    server {
        listen   80;
        location / {
            proxy_pass http://$host;
        }
    }
 
    # 动态配置upstream的接口站点
    server {
        listen 81;
        location / {
            dyups_interface; # 这个指令表示这边是接口站点
        }
    }
 
    # upstream后面的realserver,2台801,,82
    server {
        listen 801;
        location / {
            echo 801; 
        }
    }
 
    server {
        listen 802;
        location / {
            echo 802;
        }
    }
}

 upstream.conf配置

upstream ttlsa1 {
    server 127.0.0.1:801;
}
 
upstream ttlsa12 {
    server 127.0.0.1:802;
}

 5. 使用方法演示

添加upstream

# curl -d "server 127.0.0.1:801;server 127.0.0.1:802;" 127.0.0.1:81/upstream/ttlsa3
success

 测试

# curl -H "host: ttlsa3" 127.0.0.1
801
 
# curl -H "host: ttlsa3" 127.0.0.1
802

 查看upstream详细信息

curl 127.0.0.1:81/detail

 删除upstream

curl -i -X DELETE 127.0.0.1:81/upstream/ttlsa1

增加带ip_hash的upstream

 curl -d "ip_hash;server 127.0.0.1:801;server 127.0.0.1:802;" 127.0.0.1:81/upstream/ttlsa4

curl 127.0.0.1:81/upstream/ttlsa4

 

全部评论