標籤:base64 因此 http efi trap nim interval 目錄 cal
一、Consul的基礎介紹
Consul是HashiCorp公司推出的開源工具,用於實現分布式系統的服務發現與配置。與其他分布式服務註冊與發現的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,內建了服務註冊與發現框 架、分布一致性協議實現、健全狀態檢查、Key/Value儲存、多資料中心方案,不再需要依賴其他工具(比如ZooKeeper等),使用起來也較 為簡單。Consul用Golang實現,因此具有天然可移植性(支援Linux、windows和Mac OS X);安裝包僅包含一個可執行檔,方便部署,與Docker等輕量級容器可無縫配合。
關於Consul的更多介紹,比如優點,這裡就不再贅述了,上網一搜就可以隨處找到了。但是,必須貼一個和其他類似軟體的對比:
?
二、Consul安裝前的理解
Consul Agent有兩種運行模式:Server和Client。這裡的Server和Client只是Consul叢集層面的區分,與搭建在Cluster之上的應用服務無關, 以Server模式啟動並執行Consul Agent節點用於維護Consul叢集的狀態,官方建議每個Consul Cluster至少有3個或以上的運行在Server Mode的Agent,Client節點不限。
Consul支援多資料中心,每個資料中心的Consul Cluster都會在運行於Server模式下的Agent節點中選出一個Leader節點,這個選舉過程通過Consul實現的raft協議保證,多個 Server節點上的Consul資料資訊是強一致的。處於Client Mode的Consul Agent節點比較簡單,無狀態,僅僅負責將請求轉寄給Server Agent節點。
這裡我們會示範兩種情況的安裝:一種單節點部署,二種叢集部署,由簡單到複雜的部署會更容易理解。
三、Consul正式安裝(單節點)
1、下載Consul
官網地址:https://www.consul.io/downloads.html,下載對應的版本即可
?
確認好版本好,下載到我們的本機目錄命令:
> wget -P /opt/consul/ https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip
2、安裝Consul
#先解壓Consul檔案> unzip consul_1.2.2_linux_amd64.zip#將Consul檔案拷貝到執行目錄> mv consul /usr/local/bin/註:如果找不到unzip命令請安裝,命令如:yum install -y unzip
3、測試Consul是否安裝成功
> consul
如表示成功:
?
4、啟動與配置Consul服務
consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=consul-1 -client=0.0.0.0 -bind=172.16.1.174 -datacenter=dc1
如表示啟動成功:
?
輸入地址查看服務狀態:目前Consul正常運行
?
進一步查看server的情況與角色狀態
查看各個server的情況> consul members查看目前全部的consul的角色狀態:> consul operator raft list-peers
?
5、通過設定檔來註冊服務(也可以從consul api 介面添加服務註冊,他會自動持久化)
vi /etc/consul/services_config.json{ "services":[ { "id": "CLIENT_SERVICE_01", "name" : "MVCClientService", "tags": [ "urlprefix-/MVCClientService01" ], "address": "172.16.1.110", "port": 5000, "checks": [ { "name": "clientservice_check", "http": "http://172.16.1.110:5000", "interval": "10s", "timeout": "5s" } ] }, { "id": "CLIENT_SERVICE_02", "name" : "APIClientService", "tags": [ "urlprefix-/APIClientService02" ], "address": "172.16.1.110", "port": 5000, "checks": [ { "name": "clientservice_check", "http": "http://172.16.1.110:5001/api/values", "interval": "10s", "timeout": "5s" } ] } ]}
重新運行命令:
consul agent -server -ui -bootstrap-expect=1 -config-dir=/etc/consul -data-dir=/tmp/consul -node=consul-1 -client=0.0.0.0 -bind=172.16.1.174 -datacenter=dc1
註:一定要保證後端服務正常運行:連接埠5000,5001
運行成功後,如:
?
以上操作都是在Consul Server 端進行操作的,按官方說明:Consul Server與Consul Client要進行區分,後端的服務應該部署在Consul Client上,他們分別處理自己的事情就好。
下一篇文章已更新:.netcore consul實現服務註冊與發現-叢集
.netcore consul實現服務註冊與發現-單節點部署