2

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

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

我如何链接它们?如果我只使用一个,这很容易,我只需给它一个名称,例如“返回”并像这样链接它

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

是否可以链接多个?

4

2 回答 2

1

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

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

haproxy 教程

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

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

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

于 2015-05-12T12:10:31.350 回答
0

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

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

于 2015-08-10T06:58:41.650 回答