Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CoreOS车队,链接冗余Docker容器_Docker_Coreos_Fleetctl - Fatal编程技术网

CoreOS车队,链接冗余Docker容器

CoreOS车队,链接冗余Docker容器,docker,coreos,fleetctl,Docker,Coreos,Fleetctl,我有一个小服务,分为3个docker容器。一个后端、一个前端和一个小日志部分。我现在想开始使用coreOS和fleet 我想尝试启动3个冗余的后端容器,这样前端可以在其中一个失败时在它们之间切换 我如何链接它们?如果我只使用一个,很简单,我只给它一个名字,例如“back”,然后像这样链接它 docker run --name front --link back:back --link graphite:graphite -p 8080:8080 blurio/hystrixfront 可以链

我有一个小服务,分为3个docker容器。一个后端、一个前端和一个小日志部分。我现在想开始使用coreOS和fleet

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

我如何链接它们?如果我只使用一个,很简单,我只给它一个名字,例如“back”,然后像这样链接它

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

可以链接多个吗

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

这些服务背后的总体理念是,您的前端服务只需要引入到nginx或haproxy提供的单个入口点。这项服务或任何云服务的棘手之处在于,您需要能够引入或删除后端服务,并使其可用于代理服务。nginx和haproxy有一些很好的编写方法来实现这一点。这里有一个:

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

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


我意识到这不是一个简单的答案。我认为您提出的问题实际上是云部署的核心。

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

Digital Ocean在这方面提供了一个很好的教程:

由于您正在使用coreOS,您可以使用etcd进行服务发现,并使用confd更新您的haproxy设置。