Consul初探-從安裝到執行
前言
偉大領袖毛主席說過:實踐是檢驗真理的唯一標準!經過上一篇的學習,我基本掌握了 Consul 的基本原理,接下來就是動手實踐了;Consul 的部署方式分為兩種,分別是二進位制包和docker方式,這次就以二進位制包的方式進行實驗吧。
本次實驗使用物料準備:
1、 Consul 伺服器叢集 3 臺,系統為 Centos7.0
下載二進位制包
訪問 Consul 的官方網站:https://www.consul.io,看懂非常牛逼的一句話,讓打造服務網格變簡單!然後大大的螢幕上放著兩個按鈕:Download or Get Started;表示你要麼立即開始幹要麼先學一段,右邊就是一個高大上的視訊操作介紹,看著就讓人熱血沸騰;這我哪裡能忍,點選下載:https://www.consul.io/downloads.html ,話不多說,開啟伺服器的 ssh,果斷敲下一梭子:
cd /tmp
wget https://releases.hashicorp.com/consul/1.5.1/consul_1.5.1_linux_amd64.zip
unzip consul_1.5.1_linux_amd64.zip -d /usr/local/bin
編輯 /etc/profile 檔案,新增環境變數,儲存後退出。
vi /etc/profile
export CONSUL_HOME=/usr/local/bin/consul
export PATH=$PATH:CONSUL_HOME
// 使用環境變數配置生效
source /etc/profile
驗證 Consul 安裝是否成功,在命令列輸入:consul
consul --version
輸出結果:
看到這個結果,我心裡是很安慰的,不過如此嘛,一點都不像其它軟體,從下載原始碼到編譯,從安裝 gcc 到 gdi+ 的依賴,先跑1萬個依賴檔案的列表,Consul 也太 easy 了。
入門必學必記文件
幫助文件:https://www.consul.io/docs/agent/options.html
安裝好 Consul 後,在啟動程式之前,需要掌握一些配置引數,通過掌握這些引數,可以一次性的成功執行 Consul 伺服器叢集,常用的引數如下:
引數名稱 | 用途 |
---|---|
-server | 此標誌用於控制代理是運行於伺服器/客戶端模式,每個 Consul 叢集至少有一個伺服器,正常情況下不超過5個,使用此標記的伺服器參與 Raft一致性演算法、選舉等事務性工作 |
-client | 表示 Consul 繫結客戶端介面的IP地址,預設值為:127.0.0.1,當你有多塊網絡卡的時候,最好指定IP地址,不要使用預設值 |
-bootstrap-expect | 預期的伺服器叢集的數量,整數,如 -bootstrap-expect=3,表示叢集伺服器數量為3臺,設定該引數後,Consul將等待指定數量的伺服器全部加入叢集可用後,才開始引導叢集正式開始工作,此引數必須與 -server 一起使用 |
-data-dir | 儲存資料的目錄,該目錄在 Consul 程式重啟後資料不會丟失,指定此目錄時,應確保執行 Consul 程式的使用者對該目錄具有讀寫許可權 |
-node | 當前伺服器在叢集中的名稱,該值在整個 Consul 叢集中必須唯一,預設值為當前主機名稱 |
-bind | Consul 在當前伺服器偵聽的地址,如果您有多塊網絡卡,請務必指定一個IP地址(IPv4/IPv6),預設值為:0.0.0.0,也可用使用[::] |
-datacenter | 代理伺服器執行的資料中心的名稱,同一個資料中心中的 Consul 節點必須位於同一個 LAN 網路上 |
-ui | 啟用當前伺服器內部的 WebUI 伺服器和控制檯介面 |
-join | 該引數指定當前伺服器啟動時,加入另外一個代理伺服器的地址,在預設情況下,如果不指定該引數,則當前代理伺服器不會加入任何節點。可以多次指定該引數,以加入多個代理伺服器, |
-retry-join | 用途和 -join 一致,當第一次加入失敗後進行重試,每次加入失敗後等待時間為 30秒 |
-syslog | 指定此標誌意味著將記錄 syslog,該引數在 Windows 平臺不支援 |
啟動 Consul
終於來到這一步了,目前我手上有 3 臺嗷嗷待哺的 Centos-7.0 伺服器,他們的IP地址分別是:
- 172.16.1.218
- 172.16.1.219
- 172.16.1.220
分別在三臺伺服器輸入以下對應的命令
// 172.16.1.218
consul agent -server -ui -bootstrap-expect=3 -data-dir=/data/consul -node=agent-1 -client=0.0.0.0 -bind=172.16.1.218 -datacenter=dc1
// 172.16.1.219
consul agent -server -ui -bootstrap-expect=3 -data-dir=/data/consul -node=agent-2 -client=0.0.0.0 -bind=172.16.1.219 -datacenter=dc1 -join 172.16.1.218
// 172.16.1.220
consul agent -server -ui -bootstrap-expect=3 -data-dir=/data/consul -node=agent-3 -client=0.0.0.0 -bind=172.16.1.220 -datacenter=dc1 -join 172.16.1.218
上面的命令幾乎無法再精簡,簡單來說,就是指定了 consul(-server) 叢集有3臺(-bootstrap-expect=3 )伺服器(-node),指定當前主機客戶端偵聽地址為( -client=0.0.0.0 ),因為我有多塊網絡卡,如果不指定,無法執行127.0.0.1。綁定了當前主機的IP地址(-bind),指定了一個數據中心的名稱(-datacenter=dc1),後兩臺伺服器在啟動的時候加入第一臺代理伺服器(-join 172.16.1.218),同時指定了啟用每臺伺服器的內建 WebUI 伺服器元件(-ui),當三臺伺服器都正確執行起來以後,Consul 叢集將自動選舉 leader,自動進行叢集事務,無需干預。
正常啟動的伺服器應該輸出下面的資訊
現在,我嘗試通過某臺伺服器訪問 Consul 的 WebUI 控制檯,web 控制檯預設埠為:8500,檢視叢集狀態,輸入地址:
http://172.16.1.218:8500
上面的IP地址可以是 3 臺 Consul 伺服器中的任意一臺,開啟網頁後,轉向 Nodes 選單,可以看到,由 3 臺代理伺服器組成的叢集已成功啟動和執行,健康檢查都是草原的顏色,非常的健康。
在網頁控制檯中,除了了看到 Consul 的伺服器叢集的資訊,還可以對 key/value 、ACL 等進行管理