010 docker搭建swarm集羣

1.前言

    剛開始找資料搭建時,發現網上有兩種搭建方式:
    第一種:docker run --rm swarm create   一代 Swarm,也被稱爲 Docker Swarmnode

    第二種:docker swarm init    二代 Swarm,這是內置的 Swarmweb

    本文采用第二種方式搭建swarm集羣docker

2.搭建

    假設有三臺機器:192.168.20.201   192.168.20.202   192.168.20.203,準備用 201 做爲master瀏覽器

    2-1建立管理節點tomcat

docker swarm init --advertise-addr 192.168.20.201

    執行完會顯示token,建立工做節點時須要該token,Manager和Worker節點之間通訊端口是2377bash

    2-2建立子節點網絡

    分別在 192.168.20.202  和 192.168.20.203 上執行命令,指定IP:--advertise-addr 192.168.20.202,tcp

我用的是三臺雲主機,內網不通,必須用 --advertise-addr 指定當前機器IP,不然會形成後面網絡不通測試

docker swarm join --advertise-addr 192.168.20.202 --token 上面的token 192.168.20.202:2377
docker swarm join --advertise-addr 192.168.20.203 --token 上面的token 192.168.20.203:2377

 

    2-3查看集羣信息spa

    該命令只能在master上執行

docker node ls

    2-4查看節點IP信息

docker node inspect master
docker node inspect slave01
docker node inspect slave02

    能夠分別查看swarm中各主機的IP,若是跟機器IP不同,網絡會訪問不通

3.配置跨主機網絡訪問

    3-1配置docker啓動參數

    在 /usr/lib/systemd/system/docker.service 中找到 ExecStart=/usr/bin/dockerd 並在其後添加 :
    -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 結果以下:

    3-2新建overlay網絡

docker network create -d overlay central

4.測試

    4-1從倉庫拉取一個tomcat鏡像

docker pull tomcat
docker tag docker.io/tomcat tomcat

    4-2啓動鏡像,指定網絡類型

docker service create -p 8080:8080 --replicas 3 --name web --network central tomcat

    4-3查看相關信息

docker service ls

#web爲啓動鏡像時的名稱
docker service ps web

    4-4查看是否在同一網絡中    

docker network inspect central

    central 是咱們啓動服務時使用的 overlay 網絡,因爲服務分到了三臺機器上,這三臺機器都加入了central網絡,這樣三臺主機才能互通

    4-4訪問測試   

    分別在 三臺機器上 docker ps 均能看見Tomcat項目在運行,用瀏覽器分別訪問:192.168.20.201-3:8080 都會出現tomcat首頁

    4-5主機互通測試

    分別在 master 和 slave01 執行命令,查看到兩者的容器IP:

# 查看容器信息,記下這裏的 CONTAINER ID 和 NAMES
docker ps
# 查看容器詳細信息
docker inspect f884d3151995

    進入 slave02 的容器:

docker ps
docker exec -it da10f3f58af7 /bin/bash

    測試網絡,若是能ping通,則成功,若是不成功,兄弟,那就看緣分了

# 容器IP
ping 10.0.0.17
ping 10.0.0.18
# 容器NAMES
ping web.2.yru4aykeld6h5kgg3nryw0m74
ping web.1.7gqta8k7sf8vbsvyvcxnx8vhd

  另外,docker stop其中一臺機器上的服務,服務會從新自動新建一個:

    移除運行項目,必須在master執行:

docker service rm web

4.刪除swarm

    首先在全部子節點機器執行:

# 子節點退出swarm
docker swarm leave

    而後master執行:

# 主節點移除子節點
docker node rm slave01  
docker node rm slave02
# 主節點退出集羣
docker swarm leave --force
相關文章
相關標籤/搜索