首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为打算在3种不同主机中运行的现有Docker组合文件设置Docker群?

如何为打算在3种不同主机中运行的现有Docker组合文件设置Docker群?
EN

Stack Overflow用户
提问于 2018-03-01 18:52:32
回答 1查看 571关注 0票数 0

我正试图为我的(也许是简单的)问题找到最好的解决方案。

我有一个(一个)码头撰写文件,其中包含一些服务:

  • Rest-Api (java)
  • 蒙戈
  • Redis

rest需要具有可伸缩性。Java-1,Java-2,Java-3等。

下面你看到的是3个不同的主机。当我所有的主机都启动时,最好的解决方案是什么?我希望能够做一些类似docker-compose up -d的事情,并在3种不同的主机上生成我的服务

我知道码头群能做点什么。我还读到过关于编织网络与群的结合的文章。老实说,我现在很难把所有的东西都放进去,我知道怎么让它起作用.

Java主机将是负载平衡的(当然)。

我的主人1会是我的蜂群管理员吗?接待2和3名工人?我该怎么处理这件事?

你有什么建议吗?牧场主,侍者,码头工人,其他.?

代码语言:javascript
复制
     Host 2
+-------------+                               
|             |                               
|   Java 1    |               Host 1       
|             |---\      +-------------------+
+-------------+    ---\  |                   |
                       --|   Mongo, Redis    |
    Host 3             --|                   |
+-------------+     --/  +-------------------+
|             |  --/                          
|   Java 2    |-/                             
|             |                               
+-------------+                               

    Host #
    ...

编辑:我的RestApi服务和数据库之间的链接需要加密。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 15:48:29

正如你所提到的,码头工人群可以用来解决你的问题。最初您应该理解的是您的Java (API)、Mongo和Redis不应该被识别为主机。它们将是群体模式下的码头服务。所以在你的情况下,你的码头群里有三个服务。在您的主机上扩展它是一项正在完成的工作,与码头群。正如您已经提到的,您的Java (API)应该进行缩放,作为一个起点,假设您将从3个Java (API)服务开始,那么假设您的Docker Swarm中有三台主机,另一台是管理员,另两台是工作人员(决定哪个主机成为管理员,哪个主机是工人),您只需要创建三个Java (API)服务的副本,Docker S温将在这三个主机上运行这三个副本,即使其中一个主机失败了,Docker S蜡也会自动地将流量重定向到运行容器的主机,并且始终运行您告诉它要运行的副本数量。这意味着,如果容器失败,它将被重新创建。这些服务可以根据您的目的使用简单的命令轻松地进行缩放。因此,一个很好的起点应该是阅读码头工人群官方文件本身。然后跟着官方群体教程

在Docker群模式中,有一个名为堆栈的特性,一个堆栈将使您能够简单地将一个完整的应用程序堆栈部署到集群中。你可以从这里上读到它。在您的例子中,正如您已经提到的,您已经有了撰写文件,它可以用于部署堆栈。您需要更新现有的撰写文件,以便与应用程序堆栈中需要的配置相匹配。这只是一个简单的问题,您想要的是什么,以及您如何在Docker -come.yml文件中创建它,Docker将为您创建它。

在您阅读了这些概念,并准备好与Docker群的设置和主机与所有的工人和管理人员的设置,跟随这个可怕的Docker集体投票应用程序示例。阅读该示例的Docker文件,该文件将使您了解如何正确定义应用程序堆栈,这将使您对Docker堆栈有一个坚实的了解,并使用相同的示例文件作为设计应用程序堆栈的基础。

之后,就需要部署堆栈了。只需运行docker stack deploy -c docker-compose.yml yourAppName即可。

添加到所有这些中的另一点是,您可以在Docker中创建一个单独的覆盖类型网络,特别是在您的应用程序中。这将允许在多个Docker守护进程主机(节点)之间建立分布式网络。

编辑-默认情况下,使用GCM模式下的AES算法加密所有群集服务管理通信量.在创建覆盖网络时,还可以通过添加--opt encrypted加密应用程序数据。正如文档所提到的,这将带来不可忽视的性能损失,因此在生产中运行该功能之前,需要进行测试。请参考覆盖网络部分上的https://docs.docker.com/network/overlay/加密通信量。

希望这个解释能帮助您理解Docker如何解决您的问题,并澄清您所面临的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49056758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档