传统的负载均衡,若是Upstream参数发生变化,每次都须要从新加载nginx.conf文件,所以扩展性不是很高,因此咱们能够采用动态负载均衡,实现Upstream可配置化、动态化,无需人工从新加载nginx.conf,相似分布式的配置中心html
https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip
yum -y install unzip
unzip consul_0.7.5_linux_amd64.zip
[root@localhost local]# ./consul usage: consul [--version] [--help] <command> [<args>] Available commands are: agent Runs a Consul agent configtest Validate config file event Fire a new event exec Executes a command on Consul nodes force-leave Forces a member of the cluster to enter the "left" state info Provides debugging information for operators join Tell Consul agent to join cluster keygen Generates a new encryption key keyring Manages gossip layer encryption keys kv Interact with the key-value store leave Gracefully leaves the Consul cluster and shuts down lock Execute a command holding a lock maint Controls node or service maintenance mode members Lists the members of a Consul cluster monitor Stream logs from a Consul agent operator Provides cluster-level tools for Consul operators reload Triggers the agent to reload configuration files rtt Estimates network round trip time between nodes snapshot Saves, restores and inspects snapshots of Consul server state version Prints the Consul version watch Watch for changes in Consul
5.启动consul
./consul agent -dev -ui -node=consul-dev -client=192.168.102.129node
Upsync是新浪微博开源的基于Nginx实现动态配置的三方模块。Nginx-Upsync-Module的功能是拉取Consul的后端server的列表,并动态更新Nginx的路由信息。此模块不依赖于任何第三方模块。Consul做为Nginx的DB,利用Consul的KV服务,每一个Nginx Work进程独立的去拉取各个upstream的配置,并更新各自的路由。
nginx-upsync-module:linux
wget https://github.com/weibocom/nginx-upsync-module/archive/master.zip
upsync_dump_path指定从consul拉取的上游服务器后持久化到的位置,这样即便consul服务器出问题了,本地还有一个备份。nginx
负载均衡信息参数
{"weight":1, "max_fails":2, "fail_timeout":10, "down":0}git
Upstream 动态配置
##动态去consul 获取注册的真实反向代理地址
upstream tmpup{github
server 127.0.0.1:11111; upsync 192.168.212.134:8500/v1/kv/upstreams/tmp upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off; upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf; } server { listen 80; server_name localhost; location / { proxy_pass http://tmpup; index index.html index.htm; } }
upsync指令指定从consul哪一个路径拉取上游服务器配置;upsync_timeout配置从consul拉取上游服务器配置的超时时间;upsync_interval配置从consul拉取上游服务器配置的间隔时间;upsync_type指定使用consul配置服务器;strong_dependency配置nginx在启动时是否强制依赖配置服务器,若是配置为on,则拉取配置失败时nginx启动一样失败。upsync_dump_path指定从consul拉取的上游服务器后持久化到的位置,这样即便consul服务器出问题了,本地还有一个备份。后端