正如您所提到的,Docker Swarm可用于解决您的问题。最初您应该了解的是Java(API),不应将Mongo和Redis标识为主机。他们将是 码头服务 在群模式下。因此,在您的情况下,您将在docker swarm中拥有三项服务。在主机上扩展它是一项使用Docker Swarm完成的工作。正如您所提到的,您的Java(API)应该扩展,作为一个起点,您可以从3个Java(API)服务开始,所以想象一下Docker Swarm中有三台主机,一台是经理,另外两台是工作者(决定哪个主机成为管理员哪个主机是工作者取决于你)你只需要创建三个Java(API)服务副本,Docker Swarm将在这三个主机上运行这三个副本,即使一个主机出现故障Docker Swarm也会自动运行将流量重定向到运行容器的主机,并始终运行您已告知其运行的副本数量。这意味着如果容器失败,它将被重新创建。这些服务可以根据您的目的通过简单的命令轻松扩展。所以一个好的起点是阅读 Docker Swarm官方文档 本身。然后按照 官方群教程 。
在Docker swarm模式中,有一个称为堆栈的功能,堆栈可以让您简单地将完整的应用程序堆栈部署到群集中。你可以从中读到它 这里 。在你提到的情况下,你已经有了compose文件,可以用来部署堆栈。您需要更新现有的撰写文件,以匹配应用程序堆栈中需要的配置。这只是在docker-compose.yml文件中提及你想要什么以及你想要它的问题,而Docker Swarm会为你创建它。
在您阅读了有关这些概念并准备好Docker Swarm设置和主机与所有工人和经理设置后,请按照这个真棒 Docker Swarm投票应用示例 。阅读该示例的Docker Stack文件,该文件将使您了解如何正确定义应用程序堆栈,这将使您对Docker堆栈有充分的了解,并使用相同的示例文件作为设计应用程序堆栈的基础。
之后,这是部署堆栈的问题。只需跑步 docker stack deploy -c docker-compose.yml yourAppName 。
docker stack deploy -c docker-compose.yml yourAppName
在所有这些中添加另一个点是您可以创建一个单独的 覆盖 在Docker中专门为您的应用程序键入网络。这将允许多个Docker守护程序主机(节点)之间的分布式网络。
希望这个解释能帮助您了解Docker Swarm如何解决您的问题并澄清您所面临的问题。如果有任何不明确的评论。