consul 安裝和高可用配置
consul 類似於eureka的註冊中心(單獨的服務)
1.根據需要下載consul(1.0和0.9的版本風格上有些差異)
也可以用命令列直接安裝(這裡安裝的是最新的版本)
brew install consul
2.下載完解壓並將二進位制檔案consul拷貝到bin目錄下
sudo scp consul /usr/local/bin/
3.測試consul是否安裝成功
如果出現command的相關介紹表示安裝成功
consul
4.啟動consul(# -dev表示開發模式執行,另外還有-server表示服務模式執行)
consul agent -dev
說明:
-dev(該節點的啟動不能用於生產環境,因為該模式下不會持久化任何狀態),
該啟動模式僅僅是為了快速便捷的啟動單節點consul
該節點處於server模式
該節點是leader
該節點是一個健康節點
相關命令:
常用的命令為啟動agent,agent下的詳細命令可以用consul agent –help查詢
-data-dir
指定agent儲存狀態的資料目錄,對於server尤其重要,因為他們必須持久化叢集的狀態-config-dir
指定service的配置檔案和檢查定義所在的位置,通常會指定為”某一個路徑/consul.d”-config-file
指定一個要裝載的配置檔案,該選項可以配置多次,進而配置多個配置檔案(
後邊的會合並前邊的,相同的值覆蓋)-bootstrap-expect
作用:該命令通知consul server我們現在準備加入的server節點個數,該引數是為了延遲日誌複製的啟動直到我們指定數量的server節點成功的加入後啟動。-node
a. 作用:指定節點在叢集中的名稱
b. 該名稱在叢集中必須是唯一的(預設採用機器的host)
c. 推薦:直接採用機器的IP-bind
a. 作用:指明節點的IP地址
b. 有時候不指定繫結IP,會報Failed to get advertise address: Multiple private IPs found. Please configure one. 的異常- -server
a. 作用:指定節點為server
b. 每個資料中心(DC)的server數推薦至少為1,至多為5
c. 所有的server都採用raft一致性演算法來確保事務的一致性和線性化,事務修改了叢集的狀態,且叢集的狀態儲存在每一臺server上保證可用性
d. server也是與其他DC互動的門面(gateway) -client
a. 作用:指定節點為client,指定客戶端介面的繫結地址,包括:HTTP、DNS、RPC
b. 預設是127.0.0.1,只允許迴環介面訪問
c. 若不指定為-server,其實就是-client-join
a. 作用:將節點加入到叢集- -datacenter(老版本叫-dc,-dc已經失效)
a. 作用:指定機器加入到哪一個資料中心中
5.叢集搭建
啟動node0機器上的Consul(node0機器上執行):
consul agent -data-dir /tmp/node0 -node=node0 -bind=192.168.11.143 -datacenter=dc1 -ui -client=192.168.11.143 -server -bootstrap-expect 1
啟動node1機器上的Consul(node1機器上執行):
consul agent -data-dir /tmp/node1 -node=node1 -bind=192.168.11.144 -datacenter=dc1 -ui
啟動node2機器上的Consul(node2機器上執行):
consul agent -data-dir /tmp/node2 -node=node2 -bind=192.168.11.145 -datacenter=dc1 -ui -client=192.168.11.145
將node1節點加入到node0上(node1機器上執行):
consul join 192.168.11.143
將node2節點加入到node0上(node2機器上執行):
consul join -rpc-addr=192.168.11.145:8400 192.168.11.143
這樣一個簡單的Consul叢集就搭建完成了,在node1上檢視當前叢集節點:
consul members -rpc-addr=192.168.11.143:8400