Docker安裝Consul集羣

Docker 安裝Consul集羣

使用windows 環境,Docker desktop community 構建consul集羣。

一、docker 容器網絡

docker安裝後,默認會建立三種網絡類型,bridge、host和none,可經過以下命令查看:node

sudo docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
32c1b52444f2        bridge              bridge              local
6a2d84a36162        host                host                local
cff3a04a41f6        none                null                local
  • bridge:網絡橋接:默認狀況下啓動、建立容器都是使用該模式,每次容器重啓都會按順序獲取對應的ip地址,這就致使每次重啓後容器的ip發生變化。
  • none:無指定網絡,啓動時經過:-network=none 則docker不會分配局域網ip。
  • host:主機網絡:docker容器的網絡會附屬在主機上,二者互通。

二、建立固定ip的容器

  1. 建立自定義網絡類型,並指定網段
    docker network create --subnet=192.168.0.0/16 staticnet

--subnet=192.168.0.0/16 子網網段
staticnet 自定義網絡類型mysql

再次查看docker 網絡類型:docker network ls 會多出來一個自定義的網絡類型。web

  1. 使用新的網絡類型建立並啓動容器

udo docker run -it --name userserver --net staticnet --ip 192.168.0.2 mysql:5.7
參數說明:--net 指定網絡類型。--ip 指定容器ip(對應網絡類型下的網段內)算法

建立單節點Consul

docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACE='eth0' --name=cs1 --net staticnet --ip 192.168.0.2 consul agent -server -bootstrap -ui -node=Server01 -client='0.0.0.0'

參數說明:
-p <hostPort>:<containerPort> 映射容器端口到主機端口
-v <hostDataDir>:<containerDataDir> 卷文件映射
--net <networktype> 指定網絡類型這裏使用自定以的網絡類型
--ip <ipaddress> 指定容器在網絡類型下的ip地址
consul ... 開始執行consul的命令
agent -server 表示啓動 Agent 進程以consul server模式
agen -client 表示啓動 Agent 進程以consul client模式
-bootatrap 表示此節點時server-leader,一般多個server會採用Raft算法選舉產生一個leader,剩下的server爲follow
-ui 啓動web ui管理界面,默認端口:8500 須開放出來。
-node 節點名稱,集羣中惟一
-client='0.0.0.0' 將綁定客戶端地址,0.0.0.0表示全部地址都能訪問
-join 加入某一集羣中sql

上面命令會啓動一個Consul節點,名稱爲:Server01,端口已經進行了映射,可經過主機地址:8500 訪問web ui管理頁面。docker

組裝集羣(3個server+2個client)

一、查看剛剛建立的leader節點的信息:
docker exec cs1 consul members
輸出:bootstrap

Node      Address           Status  Type    Build  Protocol  DC   Segment
Server01  192.168.0.2:8301  alive   server  1.6.1  2         dc1  <all>

能夠看到第一個節點的地址。
二、建立第二個server並加入集羣windows

docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=cs2 --net staticnet --ip 192.168.0.3 consul agent -server -node=Server02 -join='192.168.0.2'

三、建立第三個server並加入集羣網絡

docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=cs3 --net staticnet --ip 192.168.0.4  consul agent -server -node=Server03 -join='192.168.0.2'
server加入完成後,在web管理頁面就能夠看到新增長的節點,以及當前的leader節點。

四、建立client並加入集羣ui

-- client01
 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip05 --net staticnet --ip 192.168.0.5  consul agent -node client01 -join='192.168.0.2' -client='0.0.0.0'

--client02
 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip06 --net staticnet --ip 192.168.0.6  consul agent -node client02 -join='192.168.0.2' -client='0.0.0.0'

-- client03
 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip07 --net staticnet --ip 192.168.0.7  consul agent -node client03 -join='192.168.0.2' -client='0.0.0.0'
相關文章
相關標籤/搜索