我有一个运行3个web conntainers的coreos集群,每个集合运行相同的Web应用程序 .
如何使用haproxy和nginx对我们对这些正在运行的容器的请求进行负载均衡 .
请建议 .
我建议你仔细看看vulcand,它是在coreos上运行的反向代理,用于在运行在coreos上的容器之间加载 balancer http请求:
Vulcand是HTTP API管理和微服务的反向代理 . 它的灵感来自Hystrix . 它使用Etcd作为配置后端,因此对配置的更改会立即生效,而无需重新启动服务 .
https://coreos.com/blog/zero-downtime-frontend-deploys-vulcand/
http://vulcand.github.io/
一篇很好的博客文章,其中包括使用vulcand在docker容器之间实现负载均衡:
http://www.recorditblog.com/post/how-to-create-a-web-scale-infrastructure-based-on-docker-coreos-vulcand-and-mesos-and-why-object-storage-becomes-the-de-facto-data-repository/
这个github repo有一些示例源代码,用于设置coreos,docker和vulcand:
https://github.com/bradgignac/intro-to-coreos
这有点晚了,但它与数字海洋教程教你在CoreOS入门中教你做的很相似:
https://www.digitalocean.com/community/tutorials/how-to-use-confd-and-etcd-to-dynamically-reconfigure-services-in-coreos
您可以在一台计算机上运行HAProxy容器,并拥有运行后端服务器的任意数量的服务 . 然后在添加和删除后端服务器时使用confd动态构建配置文件 .
这是我根据教程构建的HAProxy Service . 我使用这些two service files将它与我的Webapp一起调用 .
请注意我的webapp.service文件中的这一行:
ExecStartPost=/bin/bash -c 'etcdctl set /app/servers/%n "%n $(curl -sw "\n" http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address):80"'
这会将要在HAProxy配置文件中使用的服务器位置添加到/app/servers/webapp.service . 数字海洋教程通过“Sidekick”容器实现这一目标,该容器可能更通用,但不易出错 .
2 回答
我建议你仔细看看vulcand,它是在coreos上运行的反向代理,用于在运行在coreos上的容器之间加载 balancer http请求:
https://coreos.com/blog/zero-downtime-frontend-deploys-vulcand/
http://vulcand.github.io/
一篇很好的博客文章,其中包括使用vulcand在docker容器之间实现负载均衡:
http://www.recorditblog.com/post/how-to-create-a-web-scale-infrastructure-based-on-docker-coreos-vulcand-and-mesos-and-why-object-storage-becomes-the-de-facto-data-repository/
这个github repo有一些示例源代码,用于设置coreos,docker和vulcand:
https://github.com/bradgignac/intro-to-coreos
这有点晚了,但它与数字海洋教程教你在CoreOS入门中教你做的很相似:
https://www.digitalocean.com/community/tutorials/how-to-use-confd-and-etcd-to-dynamically-reconfigure-services-in-coreos
您可以在一台计算机上运行HAProxy容器,并拥有运行后端服务器的任意数量的服务 . 然后在添加和删除后端服务器时使用confd动态构建配置文件 .
这是我根据教程构建的HAProxy Service . 我使用这些two service files将它与我的Webapp一起调用 .
请注意我的webapp.service文件中的这一行:
这会将要在HAProxy配置文件中使用的服务器位置添加到/app/servers/webapp.service . 数字海洋教程通过“Sidekick”容器实现这一目标,该容器可能更通用,但不易出错 .