
Consul [?kɑ:nsl] 是一個分布式的服務發(fā)現(xiàn)和配置管理工具,本文是根據(jù)consul 入門指南 整理的筆記。
1. 安裝
系統(tǒng)是三臺虛擬機:
- CentOS release 6.8
- CentOS release 7
- Ubuntu 16.04 LTS
前往 官網(wǎng)下載地址 下載相應系統(tǒng)最新的二進制包,復制consul_VERSION_linux_amd64.zip 到3個節(jié)點的 consul 目錄下。
cd ~/consul
unzip consul_VERSION_linux_amd64.zip
// 解壓得到 consul 二進制文件
// 將consul 軟鏈到環(huán)境變量目錄
sudo ln -s ~/consul/consul /bin/consul
// 驗證是否安裝成功
consul -h
在3臺虛擬機中按相同步驟安裝 consul
2. 開發(fā)模式
consul 開發(fā)者模式,可以快速開啟單節(jié)點的 consul服務,具有完整功能,方便開發(fā)測試。
2.1 啟動開發(fā)模式
開發(fā)模式命令:
consul agent -dev
consul members 命令查看當前集群的節(jié)點情況
dev@ubuntu ~$ consul members
Node Address Status Type Build Protocol DC
ubuntu 127.0.0.1:8301 alive server 0.7.2 2 dc1
通過HTTP API 查看節(jié)點信息
dev@ubuntu ~$ curl localhost:8500/v1/catalog/nodes
[
{
"Node": "ubuntu",
"Address": "127.0.0.1",
"TaggedAddresses": {
"lan": "127.0.0.1",
"wan": "127.0.0.1"
},
"CreateIndex": 4,
"ModifyIndex": 5
}
]
2.2 服務注冊
服務可以通過配置文件注冊,也可以通過HTTP API 添加。這里以配置文件定義服務:
cd ~/consul
// 創(chuàng)建etc 目錄用于存放配置文件
mkdir etc
// 創(chuàng)建web.json 配置文件
echo '{"service": {"name": "web", "tags": ["nginx"], "port": 80}}' | tee ~/consul/etc/web.json
// 重啟consul,并指定配置文件目錄
consul agent -dev -config-dir=/home/dev/consul/etc
如果需要定義多個服務,添加多個服務配置文件即可
2.3 服務發(fā)現(xiàn)
當定義服務并且重啟consul 代理后,就可以通過HTTP API 查詢服務信息。
dev@ubuntu ~/consul$ curl http://localhost:8500/v1/catalog/service/web
[
{
"Node": "ubuntu",
"Address": "127.0.0.1",
"TaggedAddresses": {
"lan": "127.0.0.1",
"wan": "127.0.0.1"
},
"ServiceID": "web",
"ServiceName": "web",
"ServiceTags": [
"nginx"
],
"ServiceAddress": "",
"ServicePort": 80,
"ServiceEnableTagOverride": false,
"CreateIndex": 6,
"ModifyIndex": 6
}
]
3. Consul 集群
consul 是一個CS 模式的軟件,生產(chǎn)環(huán)境下一個集群中建議準備3~5個節(jié)點運行服務模式的consul,其他節(jié)點運行客戶端模式。
3.1 啟動server 模式
#server 模式啟動
consul agent -server -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -bind=192.168.1.114 -config-dir=/home/dev/consul/etc
-
-server以服務模式運行 -
-node節(jié)點名稱 -
-bind指定監(jiān)聽地址,用于多網(wǎng)卡服務器 -
-bootstrap-expect額外的服務模式節(jié)點數(shù)量 -
config-dir配置文件目錄
3.2 啟動client 模式啟動
# client 模式啟動
consul agent -data-dir=/tmp/consul -node=agent-two -bind=192.168.1.115 -config-dir=/home/dev/consul/etc
在集群中其他節(jié)點上以客戶端模式運行consul,注意更改綁定IP 和節(jié)點名。
3.3 加入集群
客戶端模式的consul 需要加入一個服務端節(jié)點,才能同步服務信息。
加入集群:
consul join 192.168.1.114
查看集群節(jié)點:
dev@ubuntu ~$ consul members
Node Address Status Type Build Protocol DC
agent_1 192.168.1.114:8301 alive server 0.7.2 2 dc1
agent_2 192.168.1.115:8301 alive client 0.7.2 2 dc1
agent_3 192.168.1.116:8301 alive client 0.7.2 2 dc1
客戶端節(jié)點服務發(fā)現(xiàn)功能
curl http://localhost:8500/v1/catalog/service/web
參考
