consul-template + nginx部署高可用負載平衡

來源:互聯網
上載者:User

標籤:templates   inf   完成   資料格式   讀取   href   master   重要   image   

簡介

       Consul-template是Consul的一個方擴充工具,通過監聽Consul中的資料可以動態修改一些設定檔,大家比較熱衷於應用在Nginx,HAProxy上動態配置健康狀態下的用戶端反向 Proxy資訊。GitHub上的文檔比較詳細,這裡簡單做個入門介紹。

  關於配置中心不做過多介紹了。簡單描述就是項目多了,管理起來就會比較複雜,比如在海量應用中要修改一部分應用中的某些配置,由於大家變得越來越懶了,為了保證靈活穩定及時等,配置中心的重要性也就體現出來了。

假定情境

  此處假定一個高可用redis叢集讀寫分離的情境,存在一個商務服務BusinessService.Sample,通過對設定檔XXX.BusinessService.Sample.Redis.json中Redis的叢集資訊的讀取來維持Redis用戶端的正常讀寫,設定檔中的資料發生變化時。Redis用戶端會進行更新(假定情境- -只表達大致意思,勿噴)。

XXX.BusinessService.Sample.Redis.json中的配置資訊假定為

{    "redis":{      "servers": ["127.0.0.1:6378""127.0.0.1:6379"],      "master": "127.0.0.1:6378"    } }
註冊Redis健康監測及配置中心維護Redis的Master節點資訊

  將Redis的所有節點註冊到Consul,並應用Consul進行健康監測。

{   "services": [{     "id":"redis1",     "name":"redis",     "tags":["redis1"],     "address": "127.0.0.1",     "port":6378,     "checks": [       {         "Tcp": "127.0.0.1:6378",         "interval": "3s"       }     ]   },{     "id":"redis2",     "name":"redis",     "tags":["redis2"],     "address": "127.0.0.1",     "port":6379,     "checks": [       {         "Tcp": "127.0.0.1:6379",         "interval": "3s"       }     ]   }   ]} 

  Redis正常啟動並執行狀態如下:

 

  對於Master的節點資訊,這裡採用配置中心進程儲存

 到這裡基本工作算是完成了

建立Consul-template模板並註冊

  consul-template會通過Http請求從Consul中讀取叢集中的資料,資料發生變更時 consul-template會觸發更新指定設定檔的操作。此處根據XXX.BusinessService.Sample.Redis.json的資料格式建立.ctmpl模板檔案,內容如下(配置格式參考 Consul-template文檔):

{    "redis":{      "servers": [{{range service "redis" "passing"}}"{{.Address}}:{{.Port}}"{{end}}],      "master": "{{key "service/redis/master"}}"    } }

  然後進行註冊(此處以windows作為執行個體,Linux操作一樣)

consul-template.exe -consul "127.0.0.1:8500" -template="C:\Users\admin\Desktop\consul064\consul-temp\templates\XXX.BusinessService.Sample.Redis.json.ctmpl:C:\Users\admin\Desktop\BusinessService.Sample\BusinessService.Sample\BusinessService.Sample\XXX.BusinessService.Sample.Redis.json">> C:\Users\admin\Desktop\consul064\consul-temp\templates\logs\consul.log 2>&1

  -consul後是consul的webui介面 ,用web管理consul就用的8500連接埠。

  -template 後面是模板參數 第一個是模板地址 。冒號後的第二個參數是輸出位置。

  >> 後為日誌輸出路徑

  註冊完成後即可動態觸發XXX.BusinessService.Sample.Redis.json檔案的動態修改了,比如關閉一個Redis執行個體或者Master節點發生變更時即可及時完成更新。

Redis的Master節點更新

  master節點的更新此處可以通過監聽redis哨兵的+switch-master事件監聽,觸發修改Consul配置中心中指定Redis Key完成。

 

 

對於Consul的應用國內的圈子表象上比較小,出於工作原因平時研究也不是很深入,希望大家一起學習交流。

consul-template + nginx部署高可用負載平衡

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.