nginx一般直接在配置文件里配置upstream即可實現(xiàn)負載均衡,但有些特定的環(huán)境下此種方式就顯得有些局限性。比如后臺動態(tài)調整節(jié)點的時候;調整節(jié)點后不想修改配置文件重啟nginx。
可以將配置文件從nginx本地遷移到其他第三方服務上如etcd、consul上,然后通過nginx-upsync-module模塊實時同步到配置文件中,實現(xiàn)上下線節(jié)點動態(tài)同步到upstream配置中,再結合ngx_healthcheck_module實現(xiàn)后端健康檢測。
可以將配置文件從nginx本地遷移到其他第三方服務上如etcd、consul上,然后時候拉取配置到本地。本文采用nginx-upsync-module,主要支持consul、etcd,本文以etcd為例。
etcd介紹
etcd是使用Go語言開發(fā)的一個開源的、高可用的分布式key-value存儲系統(tǒng),可以用于配置共享和服務的注冊和發(fā)現(xiàn)。在這些用于存放nginx中關于upstream的配置信息。
etcd使用的2個默認端口號:2379和2380 2379:用于客戶端通信 2380:用于與集群中的Peer通信
1.安裝etcd(單機版)
2.啟動
3.生成腳本
4.nginx安裝
安裝nginx,同時安裝七層后端檢測模塊為例
5.配置說明
語法參數
server 127.0.0.1:11111;本機upsync工作虛擬端口
127.0.0.1:2379/v2/keys/upstreams/test, etcd服務器同步路徑
upsync_interval=6m;每隔一段時間從consul/etcd中拉出服務器
upsync_timeout=500ms,從consul/etcd請求中提取服務器超時。
upsync_type=etcd,從拉取服務器類型:consul,etcd。
strong_dependency=off,每次在nginx啟動或重新加載時,nginx是否從consul/etcd中拉出配置,on,拉取
off,不拉取配置
upsync_dump_path /usr/local/nginx/conf/upstream.conf, 同步存儲配置文件路徑
include /usr/local/nginx/conf/upstream.conf, 加載配置文件路徑
最終實際配置
6.啟動服務
7.后端服務添加配置
后端web服務上線后,需要向etcd中添加注冊信息,添加成功以后,nginx反代自動從etcd中拉取配置,實現(xiàn)后端服務上線自動添加至配置中。
后端web服務新上線
增加服務器節(jié)點語法
后端web服務新下線
刪除服務節(jié)點
調整服務參數
檢測
查看nginx中的配置文件