如何在CoreOS中加载平衡服务?

时间:2015-02-04 09:15:12

标签: nginx docker haproxy coreos

  • 我有一个运行3个web conntainers的coreos集群,每个集合运行相同的Web应用程序。
  • 如何使用haproxy和nginx对我的请求进行负载均衡。
  • 请建议。

2 个答案:

答案 0 :(得分:7)

我建议你仔细看看vulcand,它是在coreos上运行的反向代理,用于在运行在coreos上的容器之间平衡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

答案 1 :(得分:1)

这有点晚了,但它与数字海洋教程教你在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”容器实现了这一目标,该容器可能更通用,但不易出错。