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