CoreOS Fleet,链接冗余的Docker容器

我有一个小的服务,分成3个docker集装箱。 一个后端,一个前端和一个小型日志logging部分。 我现在想用coreOS和舰队来启动它们。

我想尝试启动3个冗余的后端容器,所以前端可以在它们之间切换,如果其中一个失败的话。

我如何链接他们? 如果我只使用一个,很容易,我只是给它一个名字,例如“后退”,并像这样链接

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

可以链接多个吗?

您的方法将取决于您正在运行的后端服务的types。 如果后端服务是http,那么有几个好的代理/负载均衡器可供select。

  • nginx的
  • HAProxy的

这些背后的总体思想是,您的前端服务只需要引入nginx或haproxy提供的单个入口点。 这个或者任何云服务的棘手的部分是你需要能够引入后端服务,或者删除它们,并让它们可用于代理服务。 对于nginx和haproxy来说,有一些很好的做法可以做到这一点。 这里是一个:

haproxy教程

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

Kubernetes(可以在coreos之上运行)有一个叫做'Services'的概念。 使用这种部署方法,您可以创build一个“服务”,另一个名为“复制控制器”的东西,它为您描述的服务提供“后端”泊坞窗进程。 然后,可以指示复制控制器增加/减less后端进程的数量。 您前端访问“服务”。 我最近一直在使用它,它工作得很好。

我意识到这不是一个剪切和粘贴的答案。 我想你问的问题真的是云部署的核心。

正如Michael所说,你可以通过添加发现服务自动完成,并将其绑定到后端容器。 发现服务将添加IP地址(通常您需要将其绑定为专用networking的IP地址以避免不必要的带宽使用)并在etcd键值存储区中添加端口,并且可以从负载平衡器容器中读取端口自动更新负载均衡器以添加可用节点。

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