第一篇:consul入門及服務註冊和發現

什麼是consul?
Consul是一個分佈式高可用的系統,主要用來做微服務架構的服務發現和服務註冊。
它有以下特點:
1) 服務發現:用來註冊服務,和查找服務。比如註冊一個商品服務。
客戶端通過網關(gateway)獲取並且調用服務,獲取商品的列表。
2) 健康檢查:consul可以定時的去檢測註冊的服務是否可用。當然也
可以在調用服務主動檢測。
3)key/value存儲:consul可以將註冊的服務,以key/value結構進行
數據存儲。
4)多數據中心:支持多個數據中心。

如何使用consul?
啓動方式:以代理方式啓動。
1) consul agent -dev // 開發模式
2) consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul/ -node=ali_1 -ui -client 0.0.0.0 -bind 內網ip
-join 內網ip

參數詳解:
-server:角色是server,用來存儲數據。
-bootstrap-expect 1:等待多少個節點後再啓動,1個,表示自己一個就可以啓動。
-data-dir:數據存儲目錄。
-node :節點名稱。
-ui : 啓動默認ui界面。
-client:這個表示註冊或者查詢等一系列客戶端對它操作的IP,如果不指定這個IP,默認是127.0.0.1。
-join:啓動加入集羣
-bind:綁定內網ip

有人要問server,和client參數是什麼意思呢?這個是consul的角色
consul中有3種角色

client角色:就是客戶端模式,是consul節點的一種模式,這種模式下,只接受服務註冊,不保存信息。會將註冊的服務信息,轉發到server本身不會持久化這些信息。

server角色:表示consul的server模式,表明這個consul是個server。這種模式下功能和client一致。但是它會把信息持久化到本地
,並且還可以參與server的領導者選舉。

server-leader角色:表明這個server是集羣的leader。它和其它server不一樣的是,leader需要負責同步註冊的信息,給其它server,同時負責各個節點的健康檢查。

consul對外提供的端口,不同的端口有何不同的作用,瞭解即可。
tcp/8300 8300端口,用於服務器節點,客戶端通過該端口rpc協議調用服務端節點。服務器節點之間相互調用。
tcp/udp/8301 8301端口用於單個數據中心所有節點之間的互相通信,集羣中節點的數據同步,
它使得整個數據中心能夠自動發現服務器地址,分佈式檢測節點故障,事件廣播(如領導選舉)
8500 http協議訪問

查看agent成員
curl -X GET http://localhost:8500/v1/agent/members?pretty

如何註冊服務。
可以通過http協議來註冊服務。
curl -X PUT
http://localhost:8500/v1/agent/service/register -d "{
"ID": "user", //服務id
"Name": "username", //服務名
"Tags": [

"primary",
"v1"

],
"Address": "127.0.0.1", //服務的ip
"Port": 8000, //服務的端口
"EnableTagOverride": false,
"Check": { //健康檢查部分

"DeregisterCriticalServiceAfter": "90m",
"HTTP": "127.0.0.1/rpc/health.php", //指定健康檢查的URL,調用後只要返回20X,consul都認爲是健康的
"Interval": "10s"   //健康檢查間隔時間,每隔10s,調用一次上面的URL

}
}"
取消註冊的服務:

curl -X PUT http://localhost:8500/v1/agent/service/deregister/user {ID}

如何發現服務:
通過name來查找
curl -X GET http://127.0.0.1:8500/v1/catalog/service/username {Name}
獲取本地健康的服務
curl -X GET http://127.0.0.1:8500/v1/health/service/username {Name}
查詢服務列表
curl http://127.0.0.1:8500/v1/agent/services?pretty

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章