Tag: 群swarm

Docker Swarm – 跨主机部署共享代码库

我有一个关于将应用程序部署到基于Docker群的生产的最佳实践的问题。 为了简化与这个问题有关的讨论/问题让我们考虑下面的情况: 我们的群体包含: 6台服务器(不同的主机) 在每台服务器上,我们将有一个服务 每个服务将只有一个任务/副本泊坞窗运行 Memcached1和Memcached2使用来自docker中心的公共图像 “回收数据1”和“回收数据2”使用私人存储库中的定制图像 “客户端1”和“客户端2”使用来自私人存储库的定制图像 最后,对于我们的示例应用程序,我们有6个不同的服务器上运行的docker。 2个docker是memcached,其中4个是与memcached进行通信的客户端。 “客户端1”和“客户端2”将根据某种规则将数据插入到memcached中。 “回收数据1”和“回收数据2”将根据某种规则更新或删除memcached中的数据。 就那么简单。 我们与memcached进行通信的应用程序是自定义的,它们是由我们编写的。 这些应用程序的代码驻留在github(或任何其他存储库)上。 将此应用程序部署到生产中的最佳方式是什么? 构build包含复制代码的图像,您可以使用这些代码将部署到群集中 构build将使用代码驻留在图像外部的音量的图像。 考虑到我第一次将swarm部署到生产环境中,我可以看到许多与第一种方法相关的问题。将代码合并到映像中似乎对我来说是不合逻辑的,考虑到在99%的时间,将要发生的更新将是基于代码的。 这将需要每次更新在特定泊坞窗上运行的代码(无论该更改是多么小)的时候都需要构build映像。 方式2对我来说似乎更合乎逻辑。 但在这个具体的时刻,我不确定这是可能的吗? 所以这里有很多问题: 如果我们要托pipe多个在后台运行相同代码的docker,最好的方法是什么? 是否有可能在docker群,有一个中央主机,服务器(经理,在任何地方),我们可以克隆我们的仓库,并共享这些仓库作为整个docker群的卷? (在我们的示例中,所有4个客户服务都将在我们拥有代码的地方安装音量) 如果这是可能的,docker-compose.yml的实现是什么?

不同主机中的Docker容器中的RabbitMQ集群

我想创build一个对故障非常有弹性的rabbitMQ集群。 到目前为止,我已经设法创build了一个具有三个节点的集群,这些节点中的每一个都在Docker容器中运行。 为了使节点能够join集群,主机需要通过链路相互认识。 现在,整个架构运行在云中(精确到AWS)。 到目前为止,我的容器只能在相同的AWS实例上运行时彼此链接。 我想创build一个节点可以躺在不同的主机上的方式创build集群。 到目前为止我已经尝试过: 改用federation / shovel。 这不符合我的目的,因为我需要CP定理而不是CA。 我需要我的节点是所有的副本,并能够作为客户的同一个经纪人。 创build一个docker群。 我能够设置docker群并通过docker群连接两个实例。 但是如果我试图在这个群上运行多个兔子容器,它们要么放在同一个节点上,要么我们不能将它们彼此链接起来。 所以我最终得到了同一个节点上运行的所有主机的星座。 有什么解决scheme或其他方法,我可以在不同的AWS实例/主机之间的docker容器内创build一个rabbitmMQ集群?