Docker Swarm 集群搭建:轻松打造高可用、可扩展的分布式应用

在现代微服务架构中,容器化技术已经成为不可或缺的一部分,而 Docker Swarm 则是 Docker 提供的原生集群管理工具。本文将详细介绍如何在 CentOS 环境下从零开始搭建一个高可用的 Docker Swarm 集群。

前置条件

在开始之前,请确保你有以下环境准备:

  • 三台 CentOS 7 或 8 的服务器
  • 每台服务器至少 2GB 内存
  • 每台服务器上已经安装 Docker

Docker Swarm 简介

Docker Swarm 是一个原生的 Docker 容器编排工具,它可以将多个 Docker 主机组成一个虚拟的 Docker 主机,称为 Swarm。Swarm 中的每个节点可以是工作节点(worker node)或管理节点(manager node)。管理节点负责集群的管理和调度,而工作节点负责运行容器。

配置 Docker Swarm 集群

初始化 Swarm 管理节点

在一台主服务器上初始化 Swarm 集群。

sudo docker swarm init

也可以指定主服务器 IP ,执行如下命令

sudo docker swarm init --advertise-addr 198.19.249.166

执行命令后,会输出类似以下内容:

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

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

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxx 198.19.249.166:2377

记录下 docker swarm join --token ... 命令,稍后在其他节点上使用。

添加 Worker 节点

在其他两台服务器上执行以下命令,将它们加入 Swarm 集群。假设其中一台服务器的 IP 地址为 198.19.249.159,另一台为 198.19.249.160

sudo docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxx 198.19.249.166:2377

成功后,输出类似以下内容:

This node joined a swarm as a worker.

验证节点状态

回到管理节点服务器上,验证所有节点的状态:

sudo docker node ls

输出结果应类似于:

ID                            HOSTNAME        STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
tb3qi5uh3ww9qjxjki2ccozoe *   centos-master   Ready     Active         Leader           26.1.2
omd2zw1146g7bos2ymvriyi1z     centos-slave1   Ready     Active                          26.1.2
bgmg5o1rkd1ajztduw5g41bt4     centos-slave2   Ready     Active                          26.1.2

部署服务

现在你已经有了一个基本的 Swarm 集群,可以开始部署服务了。我们以部署 Portainer 作为示例,这是一款流行的 Docker 容器管理工具。

部署 Nginx

在管理节点上执行以下命令:

sudo docker service create --name nginx --replicas 3 --publish -p 80:80 nginx:latest

[root@centos-master docker]# sudo docker service ps nginx
ID             NAME      IMAGE          NODE            DESIRED STATE   CURRENT STATE          ERROR     PORTS
izgt5ffflddt   nginx.1   nginx:latest   centos-master   Running         Running 18 hours ago
dyibrokyc8ag   nginx.2   nginx:latest   centos-slave1   Running         Running 18 hours ago
li69fui5z3xu   nginx.3   nginx:latest   centos-slave2   Running         Running 18 hours ago

部署 Portainer

在管理节点上执行以下命令:

sudo docker service create \
    --name portainer \
    --publish 9000:9000 \
    --replicas=1 \
    --constraint 'node.role == manager' \
    --mount type=volume,src=portainer_data,dst=/data \
    --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
    portainer/portainer

代码解释:

  • --name portainer: 指定服务名称为 “portainer”。
  • --publish 9000:9000: 将容器的 9000 端口映射到主机的 9000 端口。
  • --replicas=1: 仅运行一个 Portainer 实例。
  • --constraint 'node.role == manager': 将服务限定在 Manager 节点上运行。
  • --mount type=volume,src=portainer_data,dst=/data: 挂载 Docker 卷用于数据持久化。
  • --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock: 绑定 Docker 套接字以便 Portainer 管理 Docker 实例。

验证服务状态

查看服务状态:

sudo docker service ls

输出结果应显示 Nginx, Portainer 服务正在运行:

ID             NAME        MODE         REPLICAS   IMAGE                        PORTS
8l5r0u9wpd2e   nginx       replicated   3/3        nginx:latest                 *:80->80/tcp
b8sjpg4ideuq   portainer   replicated   1/1        portainer/portainer:latest   *:9000->9000/tcp

管理 Swarm 集群

扩展服务

你可以根据需要扩展服务的副本数。例如,将 Nginx 服务扩展为 5 个副本:

sudo docker service scale nginx=5

更新服务

更新服务的镜像或其他属性:

sudo docker service update --image nginx:latest nginx

删除服务

如果不再需要某个服务,可以将其删除:

sudo docker service rm nginx

清理环境

在调试或测试完成后,你可能需要清理 Swarm 环境。首先,移除所有节点:

在 Worker 节点上执行:

sudo docker swarm leave

在 Manager 节点上执行:

sudo docker swarm leave --force

结语

通过以上步骤,你已经成功在 CentOS 上搭建了一个 Docker Swarm 集群,并部署了一个简单的服务。Docker Swarm 提供了强大的原生集群管理能力,适用于多种应用场景。无论是开发环境还是生产环境,合理配置和管理 Swarm 都能显著提升容器化应用的部署和管理效率。

个人观点,仅供参考。


在这里插入图片描述

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要搭建 Docker Swarm 集群,你可以按照以下步骤进行操作: 1. 安装 Docker:在每个节点上安装 Docker,可以按照 Docker 官方文档的指引进行安装。确保所有节点上都安装了相同版本的 Docker。 2. 初始化 Swarm:选择其中一个节点作为 Swarm Manager,运行以下命令初始化 Swarm: ``` docker swarm init ``` 这将生成一个 Token,用于其他节点加入 Swarm。 3. 加入节点:在其他节点上运行以下命令,将它们加入 Swarm: ``` docker swarm join --token <token> <manager-ip>:<manager-port> ``` `<token>` 是在初始化 Swarm 时生成的 Token,`<manager-ip>` 和 `<manager-port>` 是 Swarm Manager 的 IP 地址和端口。 4. 部署服务:使用 Docker Stack 或 Docker Compose 编写服务的配置文件,并使用以下命令在 Swarm 上部署服务: ``` docker stack deploy -c <compose-file> <stack-name> ``` `<compose-file>` 是服务配置文件的路径,`<stack-name>` 是你给服务取的名称。 5. 扩展和管理集群:使用 Docker 命令扩展、更新、删除服务,以及管理集群中的节点。例如: - 扩展服务的副本数:`docker service scale <service-name>=<replica-count>` - 更新服务:`docker service update <service-name> --image <new-image>` - 删除服务:`docker stack rm <stack-name>` - 查看集群状态:`docker node ls` 这些步骤可以帮助你搭建一个简单的 Docker Swarm 集群。你可以根据实际需求进行配置和管理。如果需要更详细的指导,可以参考 Docker 官方文档中关于 Swarm 的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源梦倩影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值