当前位置: 首页 > 编程笔记 >

使用Docker Swarm

滕璞瑜
2023-03-14
本文向大家介绍使用Docker Swarm,包括了使用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

设置群群集

复制管理员的IP地址。

sudo docker−machine ip manager

SSH进入管理器节点。

sudo docker−machine ssh manager

现在,您位于管理员提示中。要初始化群集,请执行以下步骤。

docker swarm init −−advertise−addr <manager−ip>

使用以下命令检查管理器节点内的Docker Swarm状态。

docker node ls

它显示当前只有一个称为管理器的领导者节点。

作为工作者或管理者节点加入

在管理器节点的SSH会话内,要查找作为Worker或管理器节点加入的命令和令牌,可以使用以下命令。

docker swarm join−token worker
docker swarm join−token manager

上面的命令输出特定的命令,您需要这些命令以工作者或管理者的身份加入集群。

将工作节点添加到集群

现在,我们将看到如何在Manager下将工作节点添加到集群。

在保持管理器SSH会话打开的同时,启动另一个终端并使用以下命令启动worker1 SSH会话。

sudo docker−machine ssh worker1

一旦进入worker1的SSH会话,请从管理器终端复制为作为工作者加入而生成的命令,并将其粘贴到worker1的SSH会话中。成功执行后,您会发现消息“此节点作为工作人员加入了集群”。对其他4个工人也做同样的事情。创建具有1管理器和5个工作器的集群后,可以通过在管理器的SSH会话中键入以下命令来确认相同的结果

docker node ls

创建并启动服务

创建Swarm集群后,现在可以启动服务了。我们只需要告诉管理器节点我们将要启动服务(运行容器),管理器就会自动分配分发,命令执行和容器调度。在此示例中,我们将启动nginx容器的4个副本并将其公开给端口80。

在管理器SSH会话中,执行以下命令。

docker service create −−replicas 5 −p 80:80 −−name web nginx

业务流程层现在正在工作。等待一段时间后,您可以在管理器SSH会话中执行此命令以确认相同。

docker service ps web

要访问该服务,您可以在任何工作器或管理器节点的浏览器中执行工作器或管理器ip,而不管其容器是否在运行。

缩放服务

目前,您的群集集群中有5个运行Nginx的容器。要最多扩展7个容器,请在管理器SSH会话中使用此命令。

docker service scale web=7

使用此命令确认相同。

docker service ps web

总而言之,在本文中,我们讨论了如何通过创建不同的虚拟机并将管理者和工作人员角色分配给节点来创建和部署Docker Swarm集群。我们还讨论了如何创建和启动Nginx服务并对其进行扩展,并尝试使用任何节点访问它。如果您是Docker开发人员,或者在微服务项目中使用Docker,则一定要对Swarm集群有很好的了解,以扩大项目规模并有效利用资源。为了成功维护大型项目和分布式项目,创建,启动,部署和维护Docker Swarm集群节点非常重要。

 类似资料:
  • 有没有办法在使用 jongo 查询 MongoDB 时添加 ?我发现这样的错误 - '排序超出了 104857600 字节的内存限制,但没有选择加入外部排序。正在中止操作。传递 allowDiskUse:true 可以选择加入,可以通过以下方式阻止,您的聚合看起来像 但据我所知,Jongo 中的类仅将管道应用于自身,然后您可以使用 方法执行。 是否有任何方法可以将该参数传递给mongo而不从Jon

  • 问题内容: 我在远程服务器上有一个管理Web应用程序。该应用程序是使用MEAN堆栈编写的,我列出了连接到Web应用程序所需的所有RESTful路由。 我正在编写一个Java客户端应用程序,该应用程序需要从该管理应用程序发送和接收数据。如果我具有服务器的IP地址和REST路由,如何将客户端连接到Web应用程序? 我想我需要提供到服务器和REST API文件的URL连接,然后仅调用诸如和的路由功能。

  • 问题内容: 我使用spring数据和方法来获取模型。调用此方法时如何使用查询提示? 上面的源代码工作正常,但是我不能为我的JPA提供程序(在我的情况下为EclipseLink)设置QueryHint。 以上是我使用spring-data使用查询提示的方式, 我还发现了这个尚未解决的问题。 问题答案: 当我想使用spring-data创建查询时,请遵循上述算法。 1)是否已经提供的查询 通过弹簧数据

  • 我使用spring数据和方法获取模型。调用此方法时如何使用查询提示 上面的源代码运行良好,但我无法为我的JPA提供者(在我的例子中是EclipseLink)设置QueryHint。 我使用spring数据使用查询提示的方式如下:, 我也发现这个还没有解决。

  • 通过io的requestAbs方法调用/调用/使用REST API的vertx实现。vertx。果心http。vertx-core-3.2.0中的HttpClient类。jar导致HTTP错误::302,响应数据为HTML Erro响应。 不确定requestAbs方法的行为,因为没有引发异常,也没有写入任何日志。此外,还随附了使用vertx JAR的此方法的源代码。如果方法实现有bug,是否有问

  • 问题内容: 说我有: 我该如何使用表单外部的“提交”按钮提交该表单,我认为在HTML5中有一个“提交”的动作属性,但是我不确定那是否是完全跨浏览器的,如果不是这样的话,做这个? 问题答案: 一个对我来说很好的解决方案,在这里仍然缺少。它需要具有目视隐藏或元件whithin的,和相关的它元件外部。它看起来像这样: 现在,此链接使您可以通过单击元素来“单击”表单元素。

  • 在Hamcrest中有没有一种方法可以比较一个数字范围内的一个数字?我在找这样的东西:

  • 首先创建一个静态页面 index.html 和一个 JS 入口文件 entry.js: <!-- index.html --> <html> <head> <meta charset="utf-8"> </head> <body> <script src="bundle.js"></script> </body> </html> // entry.js document.write('It