Consul初探-從安裝到執行

Ron.Liang發表於2019-06-14

前言

偉大領袖毛主席說過:實踐是檢驗真理的唯一標準!經過上一篇的學習,我基本掌握了 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

輸出結果:

Consul初探-從安裝到執行

看到這個結果,我心裡是很安慰的,不過如此嘛,一點都不像其它軟體,從下載原始碼到編譯,從安裝 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初探-從安裝到執行

現在,我嘗試通過某臺伺服器訪問 Consul 的 WebUI 控制檯,web 控制檯預設埠為:8500,檢視叢集狀態,輸入地址:

http://172.16.1.218:8500

上面的IP地址可以是 3 臺 Consul 伺服器中的任意一臺,開啟網頁後,轉向 Nodes 選單,可以看到,由 3 臺代理伺服器組成的叢集已成功啟動和執行,健康檢查都是草原的顏色,非常的健康。

Consul初探-從安裝到執行

在網頁控制檯中,除了了看到 Consul 的伺服器叢集的資訊,還可以對 key/value 、ACL 等進行管理。

相關文章