使用Docker Swarm
如果您正在使用微服务架构,需要在不同的机器上处理不同的项目组件,并创建主从架构(其中主节点控制从节点),那么通过 Docker Swarm 部署您的项目可能会节省大量的时间、精力和资源。
Docker Swarm 本质上是一个物理或虚拟机的集群,称为节点,它们分别运行 Docker 容器,您可以将所有这些节点配置为加入由主节点(称为 Swarm 管理器)管理的集群。它是一个编排工具,允许您管理部署在不同机器上的多个 Docker 容器。这种架构有助于您正确管理资源并高效地工作。它有助于自动负载平衡,同时允许您利用 Docker 容器的强大功能并保证高服务可用性。
通常,任何 Docker Swarm 都提供两种服务模式。一种是复制服务模式,允许您向管理器指定可复制任务的数量,管理器将这些任务分配给所有可用节点。另一种是全局服务模式,它根据节点的可用性、能力和需求将一系列任务分配给不同的节点。
在本文中,我们将讨论一些最基本和最重要的 Docker Swarm 命令,这些命令将帮助您启动您的 Swarm 项目。
创建 Docker 机器
使用 hyperv 驱动程序创建 6 台 Docker 机器,其中一台作为 Swarm 管理器,另外 5 台作为工作节点。
sudo docker-machine create −−driver hyperv manager sudo docker−machine create −−driver hyperv worker1 sudo docker−machine create −−driver hyperv worker2 sudo docker−machine create −−driver hyperv worker3 sudo docker−machine create −−driver hyperv worker4 sudo docker−machine create −−driver hyperv worker5
使用 ls 命令确认是否已创建机器。
sudo docker−machine ls
设置 Swarm 集群
复制管理器的 IP 地址。
sudo docker−machine ip manager
SSH 登录管理器节点。
sudo docker−machine ssh manager
现在,您已进入管理器提示符。要初始化 Swarm,请执行以下步骤。
docker swarm init −−advertise−addr <manager−ip>
使用以下命令检查管理器节点中的 Docker Swarm 状态。
docker node ls
它显示当前只有一个名为 manager 的领导者节点。
加入作为工作节点或管理器节点
在管理器节点的 SSH 会话中,要找出作为工作节点或管理器节点加入的命令和令牌,您可以使用这些命令。
docker swarm join−token worker docker swarm join−token manager
上述命令输出您需要作为工作节点或管理器加入集群的特定命令。
将工作节点添加到集群
我们现在将了解如何将工作节点添加到管理器下的集群。
在保持管理器 SSH 会话打开的同时,启动另一个终端并使用以下命令启动 worker1 SSH 会话。
sudo docker−machine ssh worker1
进入 worker1 的 SSH 会话后,复制从管理器终端生成的作为工作节点加入的命令,并将其粘贴到 worker1 的 SSH 会话中。成功执行后,您将看到消息“此节点已作为工作节点加入 Swarm”。对其他 4 个工作节点也执行相同的操作。创建包含 1 个管理器和 5 个工作节点的集群后,您可以通过在管理器的 SSH 会话中键入以下命令来确认。
docker node ls
创建并启动服务
创建 Swarm 集群后,您现在就可以启动服务了。我们只需要告诉管理器节点我们将要启动服务(运行容器),管理器会自动分配容器的分配、命令执行和调度。在此示例中,我们将启动 4 个 nginx 容器的副本,并将其公开到端口 80。
在管理器 SSH 会话中,执行以下命令。
docker service create −−replicas 5 −p 80:80 −−name web nginx
编排层现在正在工作。等待一段时间后,您可以使用以下命令在管理器 SSH 会话中确认。
docker service ps web
要访问服务,您可以使用任何工作节点或管理器节点的浏览器执行工作节点或管理器的 ip,无论其是否运行容器。
扩展服务
目前,您的 Swarm 集群中运行着 5 个 nginx 容器。要扩展到 7 个容器,请在管理器 SSH 会话中使用此命令。
docker service scale web=7
使用此命令确认。
docker service ps web
总而言之,在本文中,我们讨论了如何通过创建不同的虚拟机并将管理器和工作程序角色分配给节点来创建和部署 Docker Swarm 集群。我们还讨论了如何创建和启动 nginx 服务,如何将其扩展以及如何使用任何节点访问它。如果您是 Docker 开发人员或在微服务项目中使用 Docker,那么您必须很好地掌握 Swarm 集群,以便扩展您的项目并有效利用资源。创建、启动、部署和维护 Docker Swarm 集群节点对于成功维护大型项目和分布式项目至关重要。