如何设置Docker Swarm for weave打算运行3个不同的主机?

问题描述 投票:0回答:1

我正试图为我(可能是简单的)问题找出最佳解决方案。

我有一个(一个)docker compose文件和一些服务:

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

其余的api需要可扩展。 Java-1,Java-2,Java-3等

您在下面看到的是3个不同的主机。当所有主机都启动时,脚本编写的最佳解决方案是什么?我希望能够像docker-compose up -d这样做,并在3个不同的主机上产生我的服务。

我知道docker swarm可以做点什么。我还阅读了与Swarm结合的Weave网络。老实说,我很难把一切都放在一起;了解如何使其基本工作...

Java主机将进行负载平衡(当然)。

我的主持人1会成为我的群体经理吗?主持2和3工人?我该如何管理呢?

你有什么建议? Rancher,Portainer,Docker-Machine,其他......?

     Host 2
+-------------+                               
|             |                               
|   Java 1    |               Host 1       
|             |---\      +-------------------+
+-------------+    ---\  |                   |
                       --|   Mongo, Redis    |
    Host 3             --|                   |
+-------------+     --/  +-------------------+
|             |  --/                          
|   Java 2    |-/                             
|             |                               
+-------------+                               

    Host #
    ...

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

docker swarm weave
1个回答
1
投票

正如您所提到的,Docker Swarm可用于解决您的问题。最初您应该了解的是Java(API),不应将Mongo和Redis标识为主机。他们将是群体模式中的docker services。因此,在您的情况下,您将在docker swarm中拥有三项服务。在主机上扩展它是一项使用Docker Swarm完成的工作。正如您所提到的,您的Java(API)应该扩展,作为一个起点,您可以从3个Java(API)服务开始,所以想象一下Docker Swarm中有三台主机,一台是经理,另外两台是工作者(决定哪个主机成为管理员哪个主机是工作人员取决于您)并且您只需要创建三个Java(API)服务副本,Docker Swarm将在这三个主机上运行这三个副本,即使一个主机出现故障Docker Swarm也会自动运行将流量重定向到运行容器的主机,并始终运行您已告知其运行的副本数量。这意味着如果容器失败,它将被重新创建。这些服务可以根据您的目的通过简单的命令轻松扩展。所以一个好的起点是阅读有关Docker Swarm Official documentation本身。然后按照official swarm tutorial

在Docker swarm模式中,有一个称为堆栈的功能,堆栈可以让您简单地将完整的应用程序堆栈部署到群集中。你可以从here了解它。在你提到的情况下,你已经有了compose文件,可以用来部署堆栈。您需要更新现有的撰写文件,以匹配应用程序堆栈中需要的配置。这只是在docker-compose.yml文件中提及你想要什么以及你想要它的问题,而Docker Swarm会为你创建它。

在您阅读了这些概念并准备好Docker Swarm设置和主机与所有工人和经理设置后,请按照这个真棒Docker Swarm vote app example。阅读该示例的Docker Stack文件,该文件将使您了解如何正确定义应用程序堆栈,这将使您对Docker堆栈有充分的了解,并使用相同的示例文件作为设计应用程序堆栈的基础。

之后,这是部署堆栈的问题。只需运行docker stack deploy -c docker-compose.yml yourAppName

在这一切中添加另一个点是您可以在Docker中专门为您的应用创建一个单独的overlay类型网络。这将允许多个Docker守护程序主机(节点)之间的分布式网络。

希望这个解释能帮助您了解Docker Swarm如何解决您的问题并澄清您所面临的问题。如果有什么不明确的评论。

© www.soinside.com 2019 - 2024. All rights reserved.