模块微博开源:https://github.com/weibocom/nginx-upsync-module#upsync
实现方案:
nginx+consul
nginx+etcd
Installation
wget 'http://nginx.org/download/nginx-1.8.0.tar.gz' tar -xzvf nginx-1.8.0.tar.gz cd nginx-1.8.0/
添加upsync,upstream-check模块
./configure --add-module=/path/to/nginx-upstream-check-module --add-module=/path/to/nginx-upsync-module make make install
nginx配置
upstream test { server 127.0.0.1:28081 down; upsync 127.0.0.1:8500/v1/kv/upstreams/test/ upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off; upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf; include /usr/local/nginx/conf/servers/servers_test.conf; }
动态添加,删除节点
#add curl -X PUT http://$consul_ip:$port/v1/kv/upstreams/$upstream_name/$backend_ip:$backend_port
curl -X PUT -d '{"weight":2, "max_fails":2, "fail_timeout":10, "down":0}' http://127.0.0.1:8500/v1/kv/upstreams/arch/gateway_zuul/127.0.0.1:49199 #delete curl -X DELETE http://$consul_ip:$port/v1/kv/upstreams/$upstream_name/$backend_ip:$backend_port curl -X DELETE -d '{"weight":2, "max_fails":2, "fail_timeout":10, "down":0}' http://127.0.0.1:8500/v1/kv/upstreams/arch/gateway_zuul/127.0.0.1:49199