Docker Swarm集群搭建

一、前提

1.在网络方面,需要在路由器和防火墙中开放如下端口:

  • 2377/tcp:用于客户端与 Swarm 进行安全通信。
  • 7946/tcp 与 7946/udp:用于控制面 gossip 分发。
  • 4789/udp:用于基于 VXLAN 的覆盖网络。

2.每个节点都需要安装docker,并且能够与 Swarm 的其他节点通信。

二、初始化 Swarm

初始化第一个管理节点 -> 加入额外的管理节点 -> 加入工作节点 -> 完成。

示例包含 3 个管理节点(m1,m2,m3)和 3 个工作节点(w1,w2,w3),可根据需要自行调节。

1.初始化管理节点

登录m1,在 m1 上执行 docker swarm init 命令,会初始化一个新的 Swarm,并将自身设置为第一个管理节点;

$ docker swarm init 
Swarm initialized: current node (etrbzwgp7npvlgwuqyv3qs9he) is now a manager.

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

    docker swarm join --token SWMTKN-1-12zoaeu59wmxemqosdx8fu4ueqqp5cuos9k4jo8whoixypmdfg-1bmlq98xom4s7yvgcc14gy4hd X.X.X.X:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

在 m1 上执行 docker node ls 命令,列出 Swarm 中的节点此时m1作为Swarm 中唯一的节点,并且作为 Leader;

在 m1 上执行 docker swarm join-token 命令,用来获取添加新的工作节点和管理节点到 Swarm 的命令和 Token;

$ docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-12zoaeu59wmxemqosdx8fu4ueqqp5cuos9k4jo8whoixypmdfg-1bmlq98xom4s7yvgcc14gy4hd X.X.X.X:2377

$ docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-12zoaeu59wmxemqosdx8fu4ueqqp5cuos9k4jo8whoixypmdfg-a5rbcczr6qddzoae402n4nmjd X.X.X.X:2377

2.加入管理节点

分别登录m2,m3,执行

docker swarm join --token SWMTKN-1-12zoaeu59wmxemqosdx8fu4ueqqp5cuos9k4jo8whoixypmdfg-a5rbcczr6qddzoae402n4nmjd X.X.X.X:2377

$ docker swarm join --token SWMTKN-1-12zoaeu59wmxemqosdx8fu4ueqqp5cuos9k4jo8whoixypmdfg-a5rbcczr6qddzoae402n4nmjd X.X.X.X:2377

This node joined a swarm as a manager.

3.加入工作节点

分别登录w1,w2,w3,执行

docker swarm join --token SWMTKN-1-12zoaeu59wmxemqosdx8fu4ueqqp5cuos9k4jo8whoixypmdfg-1bmlq98xom4s7yvgcc14gy4hd X.X.X.X:2377

$ docker swarm join --token SWMTKN-1-12zoaeu59wmxemqosdx8fu4ueqqp5cuos9k4jo8whoixypmdfg-1bmlq98xom4s7yvgcc14gy4hd X.X.X.X:2377

This node joined a swarm as a worker.

4.完成

在任意一个管理节点上执行 docker node ls 命令来列出 Swarm 节点。

$ docker node ls
ID                            HOSTNAME                  STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
etrbzwgp7npvlgwuqyv3qs9he *   iZ2ze9u81t8mufyn3qrv1oZ   Ready     Active         Leader           20.10.6
......
......
......
......
......

至此,已经成功创建了 6 个节点的 Swarm,其中包含 3 个管理节点和 3 个工作节点。

三、节点标签

1.添加标签

在任意一个管理节点上执行 docker node update --label-add lableName=lable HOSTNAME 命令来给节点加标签。

$ docker node update --label-add role=web iZ2ze9u81t8mufyn3qrv1oZ
iZ2ze9u81t8mufyn3qrv1oZ

2.查看标签

执行 docker node inspect HOSTNAME 命令去查看节点标签。

$ docker node inspect iZ2ze9u81t8mufyn3qrv1oZ
[
    {
        "ID": "etrbzwgp7npvlgwuqyv3qs9he",
        "Version": {
            "Index": 24
        },
        "CreatedAt": "2021-06-16T09:57:05.865315794Z",
        "UpdatedAt": "2021-06-17T06:16:28.962012984Z",
        "Spec": {
            "Labels": {
                "role": "web"							# 人工添加的标签
            },
            "Role": "manager",
            "Availability": "active"
        },
        
        ......

至此,节点标签已配置完成。节点标签只在 Swarm 集群之内生效。

3.删除标签

执行 docker node update --label-rm lableName HOSTNAME命令可以删除标签。

$ docker node update --label-rm role iZ2ze9u81t8mufyn3qrv1oZ
iZ2ze9u81t8mufyn3qrv1oZ

四、服务发布

服务发布时添加约束条件,使服务能够部署到指定的服务器上。

version: '3.3'
services:
  node1:  
    ......    
    deploy:
      placement:
         constraints:
           - node.labels.role == web
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值