如何将工作节点加入到 Docker Swarm 集群

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你完成将工作节点加入到 Docker Swarm 集群的过程。在本文结束时,你将了解如何设置和管理 Docker Swarm 环境,以及如何无缝地向集群中添加新节点以扩展你的容器化应用程序。

Docker Swarm 简介

Docker Swarm 是一种用于 Docker 容器的原生集群和编排解决方案。它允许你管理一组 Docker 主机,并在这些主机上部署应用程序,提供高可用性、负载均衡和可扩展性。

什么是 Docker Swarm?

Docker Swarm 是 Docker 引擎的一项内置功能,它使你能够将多个 Docker 主机集群化为一个虚拟的 Docker 主机。这使你能够在多个主机上管理和扩展容器化应用程序,提供容错能力和高可用性。

Docker Swarm 中的关键概念

  1. Swarm:Swarm 是一组运行 Docker 引擎并联合在一起形成集群的 Docker 主机(物理或虚拟)。
  2. 节点:节点是作为 Swarm 一部分的单个 Docker 主机。节点可以是管理器(Manager)或工作器(Worker)。
  3. 管理器节点:管理器节点负责管理 Swarm 的状态、调度任务以及维护集群的期望状态。
  4. 工作器节点:工作器节点负责按照管理器节点的指示运行实际的容器。
  5. 服务:服务是一种声明式的方式,用于定义应用程序应如何在 Swarm 中进行部署和扩展。
graph TD A[Docker 主机] --> B[Docker 主机] B[Docker 主机] --> C[Docker 主机] C[Docker 主机] --> D[Docker 主机] D[Docker 主机] --> A[Docker 主机] A --- E[管理器节点] B --- F[工作器节点] C --- G[工作器节点] D --- H[工作器节点]

Docker Swarm 的优势

  • 高可用性:Docker Swarm 提供自动负载均衡和故障转移,确保你的应用程序具有高可用性。
  • 可扩展性:你可以通过向 Swarm 添加或移除节点轻松地向上或向下扩展应用程序。
  • 简单性:Docker Swarm 是 Docker 引擎的一项内置功能,易于设置和管理。
  • 集成性:Docker Swarm 与其他 Docker 工具和服务(如 Docker Compose 和 Docker Registry)无缝集成。

设置 Docker Swarm 集群

前提条件

在设置 Docker Swarm 集群之前,请确保你具备以下条件:

  1. 至少两台安装了 Docker 引擎的 Ubuntu 22.04 主机(物理机或虚拟机)。
  2. 对这些主机的 SSH 访问权限。

步骤 1:初始化 Swarm

在其中一台主机上,运行以下命令来初始化 Swarm:

docker swarm init --advertise-addr <主机 IP 地址>

<主机 IP 地址> 替换为主机的实际 IP 地址。

此命令将输出一个加入令牌,你将使用它把其他节点添加到 Swarm 中。

步骤 2:将工作节点添加到 Swarm

在其他主机上,运行上一步提供的命令,以作为工作节点加入 Swarm:

docker swarm join --token <令牌> <主机 IP 地址>:2377

<令牌> 替换为 Swarm 初始化时提供的令牌,并将 <主机 IP 地址> 替换为管理器节点的 IP 地址。

步骤 3:验证 Swarm

在管理器节点上运行以下命令,以查看 Swarm 中的节点:

docker node ls

你应该在输出中看到管理器节点和工作节点。

步骤 4:部署服务

为了测试你的 Swarm 设置,部署一个简单的服务:

docker service create --name nginx --publish 80:80 nginx

这将创建一个名为“nginx”的服务,并在整个 Swarm 中进行部署。

graph TD A[管理器节点] --> B[工作节点] B[工作节点] --> C[工作节点] C[工作节点] --> A[管理器节点] A -- "docker swarm init" --> D[Swarm] B -- "docker swarm join" --> D[Swarm] C -- "docker swarm join" --> D[Swarm] D -- "docker service create" --> E[nginx 服务]

将工作节点加入 Swarm

前提条件

在将工作节点加入 Swarm 之前,请确保你具备以下条件:

  1. 一个正在运行的 Docker Swarm 集群,且至少有一个管理器节点。
  2. 对你想要作为工作节点加入的主机的 SSH 访问权限。

步骤 1:获取加入命令

在管理器节点上,运行以下命令以获取工作节点的加入命令:

docker swarm join-token worker

这将输出类似于以下内容的命令:

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

步骤 2:作为工作节点加入 Swarm

在你想要作为工作节点加入的主机上,运行上一步中获取的命令:

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

这将使该主机作为工作节点加入 Swarm。

步骤 3:验证节点已加入 Swarm

在管理器节点上,运行以下命令以列出 Swarm 中的节点:

docker node ls

你应该在输出中看到新的工作节点。

graph TD A[管理器节点] --> B[工作节点] B[工作节点] --> C[工作节点] C[工作节点] --> A[管理器节点] A -- "docker swarm join-token worker" --> D[加入命令] B -- "docker swarm join" --> A[管理器节点]

通过遵循这些步骤,你可以轻松地将新的工作节点加入到你的 Docker Swarm 集群中,扩展你的容器化应用程序的容量和弹性。

总结

在本 Docker 教程中,你已经学会了如何设置 Docker Swarm 集群并将工作节点加入其中。通过向你的 Swarm 添加新节点,你可以轻松扩展基于 Docker 的应用程序,并创建一个高可用性的分布式环境。借助从本指南中学到的知识,你现在可以自信地管理和扩展你的 Docker Swarm 基础设施,以满足不断增长的业务需求。