docker搭建consul叢集

YoungQ發表於2023-03-13

防止自己忘了,做個筆記。

環境為兩臺主機,ip分別為:  192.168.2.9192.168.2.7

首先在  192.168.2.9 上執行一下命令:

docker run -d --name consul1  --net=host -e CONSUL_BIND_INTERFACE=enp5s0 consul agent -server=true -client=0.0.0.0 -bind=192.168.2.9 -ui -bootstrap-expect=2  -node=node1 

然後在 192.168.2.7上執行命令:

docker run -d --name consul2  --net=host -e CONSUL_BIND_INTERFACE=enp2s0 consul agent -server=true -client=0.0.0.0 -join=192.168.2.9  -node=node2

引數說明:

  • --net=host:容器啟動最好是host,因為如果用Bridge,Consul 自帶的DNS功能不起作用。

  • -e CONSUL_BIND_INTERFACE=enp5s0enp5s0是主機的網路卡名稱,每臺主機可能不一樣,使用命令ip a 可以檢視網路卡資訊,找到內網Ip對應的名稱就是該引數的值

  • -server:此標誌用於控制代理是否處於伺服器模式

  • -client=0.0.0.0:consul服務偵聽地址,這個地址提供HTTP、DNS、RPC等服務,預設是127.0.0.1所以不對外提供服務,如果你要對外提供服務改成0.0.0.0

  • -bind=192.168.2.9:應為內部叢集通訊繫結的地址。這是叢集中所有其他節點都應該可以訪問的IP地址。預設情況下,這是“0.0.0.0”,這意味著Consul將繫結到本地計算機上的所有地址,並將 第一個可用的私有IPv4地址通告給群集的其餘部分。這裡我繫結了主機的內網地址, 讓內網其他consul加入叢集。

  • -ui:表示啟動 Web UI 管理器,預設開放埠 8500

  • -bootstrap-expect=2:此標誌提供資料中心中預期伺服器的數量,Consul會等待指定數量的伺服器可用,然後引導群集。

  • -node=node1:此節點在叢集中的名稱,這在叢集內必須是唯一的。預設情況下,這是機器的主機名。

  • -join=192.168.2.9:啟動時加入的另一位代理的地址。這可以指定多次以指定多個代理加入。如果Consul無法加入任何指定的地址,代理啟動將失敗。預設情況下,代理在啟動時不會加入任何節點。請注意,retry_join在自動執行Consul叢集部署時,使用 可能更適合幫助緩解節點啟動競爭條件。

在瀏覽器輸入地址http://192.168.2.9:8500即可訪問

看到如圖所示顯示的 2 instances ,叢集就啟動成功了。

相關文章