Consul 入門筆記

原文鏈接 http://ironxu.com/?p=321

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

參考

@剛剛小碼農

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容