一、集群規划
consul借助agent來運行,類似elk的logstash agent 或 zabbix監控系統的agent ,
每個需要被發現的服務上,通過consul agent client 來收集服務本身的信息,然后向consul agent server匯報, consul server 可以集群部署。
規划一下:
序號 |
節點ip |
節點名稱 |
角色 |
1 |
193.168.30.207 |
server-207 |
server |
2 |
193.168.30.208 |
server-208 |
server |
3 |
193.168.30.209 |
server-209 |
server & web ui |
這是按正式生產環境來規划的,如果本機開發,有一個方便的dev模式(后面再講)。 上述表格中,我們打算組建3個server節點的consul server cluster,另外有1個client,模擬客戶端以及充當consul的web admin ui(管理界面)。
二、下載安裝
1、本例以1.2.0為例下載地址:
wget https://releases.hashicorp.com/consul/1.2.0/consul_1.2.0_linux_amd64.zip
2、下載文件后解壓到:opt/soft/consul下,如果沒有建立相關目錄
解壓后目錄為:
3、查詢版本
一、啟動服務
3.1 啟動server端
基本的命令為:
第一個節點(207機器啟動方式如下)
nohup ./consul agent -server -bind=193.168.30.207 -client=0.0.0.0 -bootstrap-expect=2 -data-dir=/home/tycoon/consul/data -node=server-207 >/dev/null 2>&1
第二個節點
nohup ./consul agent -server -bind=193.168.30.208 -client=0.0.0.0 -bootstrap-expect=2 -data-dir=/home/tycoon/consul/data -node=server-208 >/dev/null 2>&1
第三個節點
nohup ./consul agent -server -bind=193.168.30.209 -client=0.0.0.0 -bootstrap-expect=2 -data-dir=/home/tycoon/consul/data -node=client-209 -ui >/dev/null 2>&1 &
(第三個與前兩個服務有點區別就是添加了一個 ui,既可以查看管理服務)
3.2 參數說明
-server 表示是以服務端身份啟動
-bind 表示綁定到哪個ip(有些服務器會綁定多塊網卡,可以通過bind參數強制指定綁定的ip)
-client 指定客戶端訪問的ip(consul有豐富的api接口,這里的客戶端指瀏覽器或調用方),0.0.0.0表示不限客戶端ip
-bootstrap-expect=3 表示server集群最低節點數為3,低於這個值將工作不正常(注:類似zookeeper一樣,通常集群數為奇數,方便選舉,consul采用的是raft算法)
-data-dir 表示指定數據的存放目錄(該目錄必須存在)
-node 表示節點在web ui中顯示的名稱
3.3 組建cluster
現在我們有了3個server node 其中一個node同時也為web node,3個節點都是相互獨立的.
3.4 在任何一個節點運行下:
consul members,Consul info 可查看相關信息,既然如下:
3.5 集群加入
(1)例如207做主節點,其他兩個上加入集群運行:consul join 193.168.30.207即可
(2)成功會輸出:
3.6 從集群中撤出
在撤出節點上執行:consul leave
3.7 web ui
啟動成功后,終端窗口不要關閉,可以在瀏覽器里,訪問下,類似 http://193.168.30.209:8500/,正常的話,應該會會出現以下截圖:
3.8 查看集群狀態
3.9 禁止重新連接
consul force-leave