1.docker拉取consul鏡像
docker pull consul
2.consul參數詳解
- –net=host docker參數, 使得docker容器越過了net namespace的隔離,免去手動指定端口映射的步驟
- -server consul支持以server或client的模式運行, server是服務發現模塊的核心, client主要用於轉發請求
- -advertise 通告地址用於更改我們通告給集群中其他節點的地址。默認情況下,-bind地址是通告的。
- -retry-join 指定要加入的consul節點地址,失敗后會重試, 可多次指定不同的地址
- -client Consul將綁定客戶端接口的地址,包括HTTP和DNS服務器。默認情況下,這是“127.0.0.1”,只允許回送連接。
- -bind 內部集群通信綁定的地址。這是集群中所有其他節點都應該可以訪問的IP地址。默認情況下,這是“0.0.0.0”,集群內的所有節點到地址必須是可達的
- -bootstrap-expect 此標志提供數據中心中預期服務器的數量。不應該提供此值,或者該值必須與群集中的其他服務器一致。指定后,Consul將等待指定數量的服務器可用,然后啟動群集。允許自動選舉leader,但不能與傳統-bootstrap標志一起使用, 需要在server模式下運行。
- -data-dir 此標志為代理存儲狀態提供了一個數據目錄。這對所有代理都是必需的。該目錄在重新啟動時應該是持久的。這對於在服務器模式下運行的代理尤其重要,因為它們必須能夠保持群集狀態。此外,該目錄必須支持使用文件系統鎖定,這意味着某些類型的已裝入文件夾(例如VirtualBox共享文件夾)可能不合適
- -node 群集中此節點的名稱,這在群集中必須是唯一的,默認情況下是節點的主機名。
- -config-dir 指定配置文件,當這個目錄下有 .json 結尾的文件就會被加載
- -enable-script-checks 檢查服務是否處於活動狀態,類似開啟心跳
- -datacenter 數據中心名稱。如果未提供,則默認為“dc1”。Consul對多個數據中心擁有一流的支持,但它依賴於正確的配置。同一個數據中心內的節點應該位於單個局域網中。
- -ui - 啟用內置的Web UI服務器和所需的HTTP路由。這消除了將Consul Web UI文件與二進制文件分開維護的需要。
- -join 指定ip, 加入到已有的集群中
3.使用consul
1.啟動第一個節點, 叫consul1
docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect 2 -ui -bind=0.0.0.0 -client=0.0.0.0
端口詳解
- 8500 : http 端口,用於 http 接口和 web ui訪問;
- 8300 : server rpc 端口,同一數據中心 consul server 之間通過該端口通信
- 8301 : serf lan 端口,同一數據中心 consul client 通過該端口通信; 用於處理當前datacenter中LAN的gossip通信
- 8302 : serf wan 端口,不同數據中心 consul server 通過該端口通信; agent Server使用,處理與其他datacenter的gossip通信;
- 8600 : dns 端口,用於已注冊的服務發現;
2.查看容器ip地址
查看consul1的ip地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' consul1
# 輸出172.17.0.5
3.啟動第二個consul服務(端口8501):consul2, 並加入consul1(使用join命令)
docker run --name consul2 -d -p 8501:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.5
4.啟動第三個consul服務(端口8502):consul3, 並加入consul1(使用join命令)
docker run --name consul3 -d -p 8502:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.5
5.查看consul集群信息
docker exec -it consul1 consul members
// 可以看到集群里的三個節點 Node Address Status Type Build Protocol DC Segment 618e9f617509 172.17.0.5:8301 alive server 1.6.2 2 dc1 <all> 6ba34e2feb66 172.17.0.6:8301 alive server 1.6.2 2 dc1 <all> 8cba36da0384 172.17.0.7:8301 alive server 1.6.2 2 dc1 <all>
6.通過訪問8500/8501/8502端口查看web界面
6.通過訪問8500/8501/8502端口查看web界面
我是在阿里雲上,記得開放安全端口