防止自己忘了,做個筆記。
環境為兩臺主機,ip分別為: 192.168.2.9
,192.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=enp5s0
:enp5s0
是主機的網路卡名稱,每臺主機可能不一樣,使用命令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 ,叢集就啟動成功了。