CoreOS 舰队,link 冗余 Docker 容器

CoreOS Fleet, link redundant Docker container

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

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

我如何link他们?如果我只使用一个,那很简单,我只需要给它起个名字,例如'back' 和 link 像这样

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

可以link多个吗?

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

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

haproxy tutorial

真正的问题是它不是自动的。可能有一些技术可以自动 introduce/remove 这些代理服务器的后端。

Kubernetes(可以是 运行 在 coreos 之上)有一个叫做 'Services' 的概念。使用这种部署方法,您可以创建一个 'service' 和另一个名为 'replication controller' 的东西,它为您描述的服务提供 'backend' docker 进程。然后可以指示复制控制器 increase/decrease 后端进程的数量。您的前端访问 'service'。我最近一直在用这个,效果很好。

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

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

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