CoreOS Fleet,链接冗余Docker容器

时间:2015-05-12 09:36:24

标签: docker coreos fleetctl

我有一个小服务,分为3个docker容器。一个后端,一个前端和一个小型记录部分。我现在想要使用coreOS和fleet来启动它们。

我想尝试启动3个冗余后端容器,因此如果其中一个容器发生故障,前端可以在它们之间切换。

我如何链接它们?如果我只使用一个,那很简单,我只是给它一个名字,例如'回'并像这样链接

docker run  --name front --link back:back --link graphite:graphite -p 8080:8080 blurio/hystrixfront

是否可以链接多个?

2 个答案:

答案 0 :(得分:1)

您我们的方法将在某种程度上取决于您正在运行的后端服务的类型。如果后端服务是http,那么有一些好的代理/负载均衡器可供选择。

这些背后的一般思想是,您的前端服务只需要引入nginx或haproxy所呈现的单个入口点。使用此服务或任何云服务的棘手部分是,您需要能够引入后端服务或删除它们,并将它们提供给代理服务。 nginx和haproxy有一些很好的写作方法可以做到这一点。这是一个:

haproxy tutorial

这里真正的问题是它不是自动的。可能有一些技术会自动为这些代理服务器引入/删除后端。

Kubernetes(可以在coreos之上运行)有一个名为“服务”的概念。使用此部署方法,您可以创建一个“服务”和另一个名为“复制控制器”的东西,它为您描述的服务提供“后端”docker进程。然后可以指示复制控制器增加/减少后端进程的数量。您前端访问'服务'。我最近一直在使用它,效果很好。

我意识到这不是真正的剪切和粘贴答案。我认为您提出的问题实际上是云部署的核心。

答案 1 :(得分:0)

正如迈克尔所说,您可以通过添加发现服务并将其绑定到后端容器来自动完成此操作。发现服务将添加IP地址(通常您希望将其绑定为您的专用网络的IP地址,以避免不必要的带宽使用)和etcd键值存储中的端口,并且可以从负载均衡器容器中读取自动更新负载均衡器以添加可用节点。

Digital Ocean有一个很好的教程: https://www.digitalocean.com/community/tutorials/how-to-use-confd-and-etcd-to-dynamically-reconfigure-services-in-coreos