背景
近期随着业务的不断发展,原有的单体架构已不能满足,因为服务集群化多节点化势在必行了。
那目前市面上主流的是k8s,功能很丰富,但是针对于我们这个体系的系统引入它一方面没有太大必要,另一方面上手难度相对较大;综上考虑就选择了docker-swarm,下面我们来详细了解了解docker-swarm
docker-swarm是什么
Docker Swarm 是用于在 Docker 环境中进行容器编排和集群管理的工具。它允许你将多个 Docker 主机组成一个集群,从而实现高可用性、负载均衡和故障恢复等功能。下面是 Docker Swarm 的一些优点和缺点:
优点:
简单易用:Docker Swarm 是 Docker 官方提供的容器编排工具,与 Docker Engine 集成良好,易于安装和配置。相比其他容器编排工具,它的学习曲线较为平缓。
内置功能:Docker Swarm 提供了许多内置功能,如负载均衡、服务发现、健康检查和自动伸缩等。这些功能使得在 Swarm 集群中部署和管理容器变得更加简单和方便。
高可用性:Docker Swarm 支持容器的高可用性。通过指定容器的副本数,Swarm 可以在多个节点上自动创建和管理容器的副本,以确保容器在发生故障时能够继续运行。
扩展性:你可以根据需要将新的 Docker 节点添加到 Swarm 集群中,实现水平扩展。这样,你可以根据负载变化自动调整容器的数量,并且可以很容易地扩展整个应用程序。
缺点:
功能相对较少:与其他容器编排工具(如 Kubernetes)相比,Docker Swarm 的功能相对较少。它的扩展性、配置选项和应用程序管理能力有限。
生态系统相对较小:相比较流行的容器编排工具,Docker Swarm 的生态系统相对较小,减少了社区支持和插件选择的机会。
较少的细粒度控制:对于需要更细粒度控制容器的用户来说,Docker Swarm 的功能可能会显得不够灵活。一些高级的容器编排需求可能无法在 Docker Swarm 中实现。
综上所述,Docker Swarm 适用于需要简单、易用的容器编排和集群管理的场景,尤其适用于中小规模的应用程序。如果你的应用程序需要更高级的功能和更细粒度的控制,你可能需要考虑其他容器编排工具。
docker-swarm的工作原理
Swarm 两种角色
Manager:接收客户端服务定义,将任务发送到worker节点;维护集群期望状态和集群管理功能及Leader选举。默认情况下manager节点也会运行任务,也可以配置只做管理任务。
Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每个服务期望状态
综上从上面浅浅的介绍我们能大致的了解什么是docker-swarm了,想详细了解的可以去官网看下
docker-swarm官网
下面我们开始进入正式的安装环节
1.环境准备
首选我们需要准备两台(或则以上)机器,两台集群上需要安装docker,docker-swarm等环境这些是必备的、我这里准备了两台机器进行集群的搭建
要初始化 Docker Swarm 集群,您可以按照以下步骤进行操作:
在 Linux 上安装 Docker、Docker Compose 和 Docker Swarm 可以按照以下步骤进行操作:
-
安装 Docker:
- 首先,更新软件包索引并安装必要的依赖工具:
sudo apt update sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
- 导入 Docker GPG 密钥以保证软件包的真实性:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加 Docker 软件包源:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 更新软件包索引并安装 Docker:
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
- 验证 Docker 是否成功安装,执行以下命令:
这将运行一个简单的 Docker 容器并显示成功消息。sudo docker run hello-world
- 首先,更新软件包索引并安装必要的依赖工具:
-
安装 Docker Compose:
- 使用以下命令下载 Docker Compose 的可执行文件:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 赋予执行权限给 Docker Compose:
sudo chmod +x /usr/local/bin/docker-compose
- 验证 Docker Compose 是否成功安装,执行以下命令:
docker-compose --version
- 使用以下命令下载 Docker Compose 的可执行文件:
-
安装 Docker Swarm:
- 初始化 Swarm Manager:
docker swarm init
- 将生成一个用于加入集群的令牌,将该令牌复制下来以备后用。
- 初始化 Swarm Manager:
-
将其他节点加入到 Swarm 集群中:
- 在准备加入集群的节点上运行以下命令:
将docker swarm join --token <令牌> <管理节点的IP地址>:2377
<令牌>
替换为在第3步中复制的令牌,<管理节点的IP地址>
替换为 Swarm Manager 的 IP 地址。
- 在准备加入集群的节点上运行以下命令:
-
若要查看 Swarm 集群中的节点列表,您可以在 Swarm Manager 上运行以下命令:
docker node ls
安装成功后会显示如下页面
如果你很顺利的到了这个页面,恭喜你成功了初始化了一个集群。