国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Linux > 正文

docker服務(wù)confd安裝配置學(xué)習(xí)教程

2024-08-27 23:59:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化.

confd:confd通過(guò)讀取配置(支持etcd,consul,環(huán)境變量),通過(guò)go的模板,生成最終的配置文件.

安裝:安裝和etcd一樣,非常方便,已經(jīng)提供了64位的可執(zhí)行程序,下載下來(lái)之后直接放到PATH中(/usr/local/bin)即可(別忘了+x).

haproxy配置生成:

confd配置文件默認(rèn)在/etc/confd中,可以通過(guò)參數(shù)-confdir指定,目錄中包含兩個(gè)子目錄,分別是:conf.d templates.

confd會(huì)先讀取conf.d目錄中的配置文件(toml格式),然后根據(jù)文件指定的模板路徑去渲染模板,基于之前配置的etcd集群,讀取/services/web中的目錄和key,結(jié)構(gòu)為:

  1. /services/web/$DOMAIN/$HOST/ip 
  2.                           |-port 

其中DOMAIN表示注冊(cè)應(yīng)用的域名,HOST表示注冊(cè)機(jī)器的主機(jī)名,首先創(chuàng)建confd配置文件,代碼如下:

  1. [template]   
  2. src = "haproxy.cfg.tmpl"   
  3. dest = "/home/babydragon/haproxy/haproxy.cfg"   
  4. keys = [   
  5. "/services/web",   
  6. ]   
  7. #reload_cmd = "/etc/init.d/haproxy reload" 

現(xiàn)在只測(cè)試模板生成,所以不關(guān)注檢查、重啟等命令,配置模板名稱、目標(biāo)路徑和獲取的key即可,著重看下模板變動(dòng)部分,前面就是寫死的一些haproxy的標(biāo)準(zhǔn)配置,如日志等,代碼如下:

  1. frontend webin 
  2. bind :80 
  3.  
  4. {{$domains := lsdir "/services/web"}} 
  5. {{range $domain := $domains}} 
  6. acl is_{{$domain}} hdr(host) -i {{$domain}} 
  7. {{end}} 
  8.  
  9. {{range $domain := $domains}} 
  10. use_backend {{$domain}}_cluster if is_{{$domain}} 
  11. {{end}} 
  12.  
  13. {{range $domain := $domains}} 
  14. backend {{$domain}}_cluster 
  15. cookie SERVERID insert indirect nocache 
  16. {{$domain_dir := printf "/services/web/%s" $domain}}{{range $host := lsdir $domain_dir}} 
  17. server {{base $host}} {{$ip_key := printf "/services/web/%s/%s/ip" $domain $host}}{{getv $ip_key}}:{{$port_key := printf "/services/web/%s/%s/port" $domain $host}}{{getv $port_key}} cookie {{base $host}} check 
  18. {{end}} 
  19. {{end}} 

這里主要有兩個(gè)循環(huán),第一個(gè)循環(huán)所有的域名,第一個(gè)循環(huán)每一個(gè)域名下的所有主機(jī),haproxy需要通過(guò)設(shè)置acl的方式來(lái)進(jìn)行按照域名做負(fù)載均衡,因此首先循環(huán)域名,為每個(gè)域名創(chuàng)建一個(gè)acl規(guī)則和一個(gè)規(guī)則的使用.

下面再通過(guò)一個(gè)循環(huán),創(chuàng)建沒(méi)個(gè)域名對(duì)應(yīng)的后段,confd模板詳細(xì)文檔可以參考github上的文檔,大致的意思是通過(guò)lsdir獲取當(dāng)前目錄下的所有子目錄,第一層子目錄為域名,根據(jù)域名即可生成acl規(guī)則、規(guī)則使用、后端名稱等數(shù)據(jù).

再重新通過(guò)瓶裝域名目錄,對(duì)域名目錄執(zhí)行l(wèi)sdir,讀取目錄下的每個(gè)主機(jī)名,創(chuàng)建后端的server條目,一個(gè)域名下的負(fù)載均衡后段服務(wù)器,同時(shí)獲取掛在這個(gè)目錄下的屬性鍵值對(duì)(這里只有ip和port),創(chuàng)建完模板和配置之后,先構(gòu)造一些測(cè)試數(shù)據(jù),代碼如下:

  1. etcdctl mkdir /services/web 
  2. etcdctl mkdir /services/web/a.abc.com 
  3. etcdctl mkdir /services/web/b.abc.com 
  4. etcdctl mkdir /services/web/a.abc.com/server1 
  5. etcdctl mkdir /services/web/a.abc.com/server2 
  6. etcdctl mkdir /services/web/b.abc.com/server1 
  7. etcdctl set /services/web/a.abc.com/server1/ip 10.0.0.1 
  8. etcdctl set /services/web/a.abc.com/server1/port 10000 
  9. etcdctl set /services/web/a.abc.com/server2/port 10001 
  10. etcdctl set /services/web/a.abc.com/server2/ip 10.0.0.1 
  11. etcdctl set /services/web/b.abc.com/server1/ip 10.0.0.2 
  12. etcdctl set /services/web/b.abc.com/server1/port 12345 

這里模擬三個(gè)容器,其中兩個(gè)作為域名a.abc.com運(yùn)行容器,一個(gè)作為b.abc.com容器,然后執(zhí)行confd,檢查生成的配置文件,代碼如下:

confd -confdir ./confd -onetime -backend etcd -node 127.0.0.1:4001

剛才那段模板渲染后為如下代碼:

  1. frontend webin 
  2.     bind :80
  3.  
  4.     acl is_a.abc.com hdr(host) -i a.abc.com 
  5.  
  6.     acl is_b.abc.com hdr(host) -i b.abc.com 
  7.  
  8.     use_backend a.abc.com_cluster if is_a.abc.com 
  9.  
  10.     use_backend b.abc.com_cluster if is_b.abc.com  
  11.  
  12. backend a.abc.com_cluster 
  13.     cookie SERVERID insert indirect nocache 
  14.  
  15.     server server1 10.0.0.1:10000 cookie server1 check 
  16.  
  17.     server server2 10.0.0.1:10001 cookie server2 check 
  18. //Vevb.com 
  19.  
  20. backend b.abc.com_cluster 
  21.     cookie SERVERID insert indirect nocache 
  22.  
  23.     server server1 10.0.0.2:12345 cookie server1 check
  24.  
  25. No Comments

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武平县| 日喀则市| 松桃| 边坝县| 郴州市| 寻甸| 通山县| 扎兰屯市| 依安县| 文安县| 敦化市| 阿瓦提县| 湖口县| 贵德县| 沐川县| 黄大仙区| 句容市| 天镇县| 鸡泽县| 嘉鱼县| 奈曼旗| 萨嘎县| 万安县| 北碚区| 鄂伦春自治旗| 新安县| 海丰县| 永平县| 海南省| 伊春市| 偏关县| 无为县| 常州市| 浮山县| 临夏县| 巴林右旗| 拉孜县| 九龙城区| 招远市| 洛扎县| 大英县|