Consul-template的簡單應用:配置中心,服務發現與健康監測


簡介

       Consul-template是Consul的一個方擴展工具,通過監聽Consul中的數據可以動態修改一些配置文件,大家比較熱衷於應用在Nginx,HAProxy上動態配置健康狀態下的客戶端反向代理信息。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的應用國內的圈子表象上比較小,出於工作原因平時研究也不是很深入,希望大家一起學習交流。群號:234939415

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM