標籤: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部署高可用負載平衡