部署Swarm Mode集羣

環境準備

主機名(角色) IP
swarm-manager 172.16.100.20
swarm-node1 172.16.100.22
swarm-node2 172.16.100.22

加入swarm mode集羣后不允許修改主機名

前提條件

  1. 安裝Docker Engine 1.12或更新版本
  2. 允許2377的tcp端口用於集羣管理交互
  3. 允許7946的TCP/UDP端口用於節點間的交互(容器網絡發現)
  4. 允許4789的UDP端口用於overlay網絡類型

創建swarm mode集羣

[root@swarm-manager ~]#  docker swarm init --advertise-addr 172.16.100.20
Swarm initialized: current node (sc21k9597zasfjaf6cfpuyvy6) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-10rnutvx6cpja7wv88k7ydywpvjjz1xsj88on00s43te740xca-1pwd9juzgpwnxlxne7p2g93va 172.16.100.20:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
[root@swarm-manager ~]# docker info |grep -A5 Swarm
Swarm: active
 NodeID: pg6fteetxsezu2ygyd3b0joye
 Is Manager: true
 ClusterID: yb5c85p7o054sxp1hb8ieqw43
 Managers: 1
 Nodes: 1
[root@swarm-manager ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
pg6fteetxsezu2ygyd3b0joye *   swarm-manager       Ready               Active              Leader
[root@swarm-manager ~]# netstat -lntp|grep docker
tcp6       0      0 :::2377                 :::*                    LISTEN      1249/dockerd
tcp6       0      0 :::7946                 :::*                    LISTEN      1249/dockerd

添加節點到swarm mode集羣

swarm mode集羣有manager和worker節點,可通過docker swarm join-token [manager|worker]命令獲取節點添加命令

[root@swarm-manager ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5vp5axn28a2cbrtzxlirktbhpnluayacuw81zqacooe3ooe2o3-6ys543fe4zkeagkoaacgaqe3e 172.16.100.20:2377

[root@swarm-manager ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5vp5axn28a2cbrtzxlirktbhpnluayacuw81zqacooe3ooe2o3-64gphy50682jszwc19nn0onpc 172.16.100.20:2377

分別在node1和node2節點上執行如下的docker swarm join命令添加worker節點

[root@swarm-node1 ~]# docker swarm join --token SWMTKN-1-5vp5axn28a2cbrtzxlirktbhpnluayacuw81zqacooe3ooe2o3-64gphy50682jszwc19nn0onpc 172.16.100.20:2377

管理swarm mode集羣節點

[root@swarm-manager ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
lati2179dcwgkvvkc0qcieoim     swarm-node2         Ready               Active
pg6fteetxsezu2ygyd3b0joye *   swarm-manager       Ready               Active              Leader
y83k6khc3vxmch1qd3j8kl4ak     swarm-node1         Ready               Active

升/降級節點

  • 升級worker節點爲manager節點
    [root@swarm-manager ~]# docker node promote swarm-node1 swarm-node2
    Node swarm-node1 promoted to a manager in the swarm.
    Node swarm-node2 promoted to a manager in the swarm.
    # docker node ls
    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
    lati2179dcwgkvvkc0qcieoim     swarm-node2         Ready               Active              Reachable
    pg6fteetxsezu2ygyd3b0joye *   swarm-manager       Ready               Active              Leader
    y83k6khc3vxmch1qd3j8kl4ak     swarm-node1         Ready               Active              Reachable
  • 降級manager節點爲worker節點
    [root@swarm-manager ~]# docker node demote swarm-node1 swarm-node2
    Manager swarm-node1 demoted in the swarm.
    Manager swarm-node2 demoted in the swarm.
    [root@swarm-manager ~]# docker node ls
    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
    lati2179dcwgkvvkc0qcieoim     swarm-node2         Ready               Active
    pg6fteetxsezu2ygyd3b0joye *   swarm-manager       Ready               Active              Leader
    y83k6khc3vxmch1qd3j8kl4ak     swarm-node1         Ready               Active

    移除節點

    移除節點時需要先在worker節點上執行docker swarm leave命令將節點狀態設爲Down後,在manager節點上執行docker node rm <node-name>移除。如果要移除manager節點,不建議使用--force強制移除,而應該先進行降級後再移除。

[root@swarm-manager ~]# docker swarm leave
Error response from daemon: You are attempting to leave the swarm on a node that is participating as a manager. Removing the last manager erases all current state of the swarm. Use `--force` to ignore this message.
[root@swarm-manager ~]# docker node rm swarm-node1
Error response from daemon: rpc error: code = 9 desc = node y83k6khc3vxmch1qd3j8kl4ak is not down and can't be removed
[root@swarm-node2 ~]# docker swarm leave
Node left the swarm.
[root@swarm-manager ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
lati2179dcwgkvvkc0qcieoim     swarm-node2         Down                Active
pg6fteetxsezu2ygyd3b0joye *   swarm-manager       Ready               Active              Leader
y83k6khc3vxmch1qd3j8kl4ak     swarm-node1         Ready               Active
[root@swarm-manager ~]# docker node rm swarm-node2
swarm-node2
[root@swarm-manager ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
pg6fteetxsezu2ygyd3b0joye *   swarm-manager       Ready               Active              Leader
y83k6khc3vxmch1qd3j8kl4ak     swarm-node1         Ready               Active
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章