etcd+confd+nginx實現(xiàn)配置動態(tài)upstream

需求

使用Nginx做七層負(fù)載均衡办悟,后端是Tomcat躬厌。每次項目升級铛碑,都要停機(jī)發(fā)布或者手動先從Nginx下摘掉一組狠裹,然后再升級這組,這些操作顯然會增加部署時間汽烦,于是就想實現(xiàn)動態(tài)管理Nginx配置文件涛菠。

架構(gòu)圖

image.png

軟件

  • etcd:分布式KV存儲系統(tǒng),一般用于共享配置和服務(wù)注冊與發(fā)現(xiàn)。是CoreOS公司發(fā)起的一個開源項目碗暗。 ETCD存儲格式類似于文件系統(tǒng)颈将,以根"/"開始下面一級級目錄,最后一個是Key言疗,一個key對應(yīng)一個Value晴圾。
  • confd:管理本地應(yīng)用配置文件,使用etcd或consul存儲的數(shù)據(jù)渲染模板噪奄,還支持redis死姚、zookeeper等。confd有一個watch功能勤篮,通過HTTP API定期監(jiān)測對應(yīng)的etcd中目錄變化都毒,獲取最新的Value,然后渲染模板碰缔,更新配置文件账劲。

配置etcd

# 安裝etcd
yum install etcd 
# 啟動
systemctl start etcd
# 設(shè)置key
etcdctl set /nginx/www/server_name backend
etcdctl set /nginx/www/upstream/server01 192.168.0.1
etcdctl set /nginx/www/upstream/server02 192.168.0.2

配置confd

# 下載confd并移到bin目錄下
mv confd-0.11.0-linux-amd64 /usr/bin/confd
# 創(chuàng)建配置目錄
# mkdir -p /etc/confd/{conf.d,templates}
conf.d    # 配置文件,里面的文件必須以toml后綴
templates # 模板金抡,里面的文件必須以tmpl后綴

# 創(chuàng)建配置文件模板
# vi /etc/confd/templates/app01.conf.tmpl
upstream {{getv "/nginx/www/server_name"}} {
{{range getvs "/nginx/www/upstream/*"}}
     server {{.}};
{{end}}
}
 
server {
   server_name  localhost;
   location / {
       proxy_pass       http://{{getv  "/nginx/www/server_name"}};
       proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
# 創(chuàng)建confd配置文件
# vi /etc/confd/conf.d/app01.conf.toml
[template]
src = "app01.conf.tmpl"    # 默認(rèn)在/etc/confd/templates目錄下
dest = "/usr/local/nginx/conf/vhost/app01.conf"  # 渲染后的模板文件位置(要更新的配置文件)
keys = [
   "/nginx",            # 監(jiān)測的key
]
reload_cmd ="/usr/local/nginx/sbin/nginx -s reload"   # key更新后執(zhí)行的命令

測試

etcdctl set /nginx/www/upstream/server03 192.168.0.3 # 添加后端服務(wù)器
etcdctl rm /nginx/www/upstream/server01 192.168.0.1 #刪除

restapi操作etcd

curl -X PUT http://127.0.0.1:2379/v2/keys/nginx/www/upstream/server01 -d value="789"  # 增改key
curl -X DELETE http://127.0.0.1:2379/v2/keys/nginx/www/upstream/server01     # 刪除key 
curl http://127.0.0.1:2379/v2/keys/nginx/www/upstream/server01                 # 查詢key的值 

一臺主機(jī)tomcat

[root@web12 ~]# etcdctl get /app01/vacc/11
["server 192.168.140.11:7080","server 192.168.140.11:7081"]

# {{- }} 不換行輸出
{{- range  getvs "/nginx/app01/*" }}
{{- range jsonArray . }}
{{if eq . "server 192.168.140.11:7080" }}#{{.}} weight=5 max_fails=3 fail_timeout=30s;{{else}}{{.}} weight=5 max_fails=3 fail_timeout=30s;{{end}}
{{- end}}
{{- end}}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瀑焦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子梗肝,更是在濱河造成了極大的恐慌榛瓮,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巫击,死亡現(xiàn)場離奇詭異禀晓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坝锰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門粹懒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人什黑,你說我怎么就攤上這事崎淳。” “怎么了愕把?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵拣凹,是天一觀的道長。 經(jīng)常有香客問我恨豁,道長嚣镜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任橘蜜,我火速辦了婚禮菊匿,結(jié)果婚禮上付呕,老公的妹妹穿的比我還像新娘。我一直安慰自己跌捆,他們只是感情好徽职,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佩厚,像睡著了一般姆钉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抄瓦,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天潮瓶,我揣著相機(jī)與錄音,去河邊找鬼钙姊。 笑死毯辅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的煞额。 我是一名探鬼主播思恐,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼立镶!你這毒婦竟也來了壁袄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤媚媒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涩僻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缭召,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年逆日,在試婚紗的時候發(fā)現(xiàn)自己被綠了嵌巷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡室抽,死狀恐怖搪哪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坪圾,我是刑警寧澤晓折,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站兽泄,受9級特大地震影響漓概,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜病梢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一胃珍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦觅彰、人聲如沸吩蔑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烛芬。三九已至,卻和暖如春痴奏,著一層夾襖步出監(jiān)牢的瞬間蛀骇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工读拆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擅憔,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓檐晕,卻偏偏與公主長得像暑诸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辟灰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容