This website requires JavaScript.

Docker Swarm 集群环境搭建

by  admin  

准备工作

本次部署使用的 Docker 版本为 19.03.6,因服务器资源有限,文章只涉及 2 台机器的交互:

IP地址 操作系统 主机名 身份
193.112.234.28 CentOS 7.5 m1 管理节点
106.11.248.146 Ubuntu 16.04 w1 工作节点

初始化集群

首先登入 m1 服务器(作为管理节点),执行以下命令初始化 Swarm 集群:

$ docker swarm init --advertise-addr 193.112.234.28:2377

Swarm initialized: current node (5uysirygjdai3jgbta1ue1zt4) is now a manager.

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

    docker swarm join --token SWMTKN-1-1w5mibq8je59igu38af3fb8bft0q37su0xuu8drs8nnc7jqe65-12mtjb131wecf1i3ilhp8gyal 193.112.234.28:2377

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

--advertise-addr 参数用于指定其他节点连接集群的地址;由于 2 台服务器不在同一个网段,命令中使用的 IP 是公网地址,2377 是集群默认端口。

初始化完成后,列出集群的所有节点,查看 m1 节点的状态和身份:

$ docker node ls

ID                            HOSTNAME   STATUS   AVAILABILITY   MANAGER STATUS   ENGINE VERSION
5uysirygjdai3jgbta1ue1zt4 *   m1         Ready    Active         Leader           19.03.6

同时开放 m1 服务器的 2377 端口,确保其他节点可以正常加入集群:

$ firewall-cmd --zone=public --add-port=2377/tcp --permanent

$ firewall-cmd --reload

$ firewall-cmd --zone=public --list-port

# 以上命令仅对 CentOS 7 系统生效,其他操作系统有所不同

加入工作节点

实际上在初始化集群后, m1 服务器的控制台就输出了加入集群的命令:

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

    docker swarm join --token SWMTKN-1-1w5mibq8je59igu38af3fb8bft0q37su0xuu8drs8nnc7jqe65-12mtjb131wecf1i3ilhp8gyal 193.112.234.28:2377

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

接下来登入 w1 服务器,将其作为工作节点加入 Swarm 集群:

$ docker swarm join \
    --token SWMTKN-1-1w5mibq8je59igu38af3fb8bft0q37su0xuu8drs8nnc7jqe65-12mtjb131wecf1i3ilhp8gyal \
    193.112.234.28:2377 --advertise-addr 106.11.248.146:2377

This node joined a swarm as a worker.

再次回到 m1 服务器,查看当前集群的节点状态,可见工作节点已经就绪:

$ docker node ls

ID                            HOSTNAME   STATUS   AVAILABILITY   MANAGER STATUS   ENGINE VERSION
2u8wqdbtstvj1383rpjy1ywnp     w1         Ready    Active                          19.03.6
5uysirygjdai3jgbta1ue1zt4 *   m1         Ready    Active         Leader           19.03.6

其他说明

  1. 集群管理节点一般推荐分配 3 个或 5 个,一是奇数个管理节点有利于减少脑裂,二来限制管理节点的数量可以使集群内部更快达成共识。
  2. 假如要在集群中使用 routing mesh 机制,需要在初始化集群之前,开启所有节点的 7946 TCP、7946 UDP 和 4789 UDP 三个端口。
  3. 请勿将 Docker Swarm 模式应用于阿里云服务器,鉴于 Swarm 集群在云服务器上的不稳定性,阿里云已停止对 Swarm 的技术支持
相关推荐
  • 使用 TIG 构建自动化监控平台
  • Jenkins 多分支流水线构建标签
  • CentOS 7 安装 Blue Ocean
  • Certbot 申请免费 HTTPS 证书
  • SSH 免密登录 Linux 服务器