如何在Bluemix上使用nginx作为动态负载平衡代理服务器?

时间:2016-12-19 12:20:09

标签: nginx containers ibm-cloud load-balancing docker-compose

我正在使用docker-compose在bluemix容器服务上运行应用程序。我使用nginx作为代理网络服务器和负载均衡器。

我找到了一个使用docker事件自动检测新Web服务器并将其动态添加到nginx配置的图像:

https://github.com/jwilder/nginx-proxy

但为了实现这一点,我认为容器需要连接到docker socket。我对docker不是很熟悉,我不确切知道它是做什么的,但基本上它是必要的,这样图像才能听到docker事件。

图像文档中的运行命令如下:

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy

我无法在容器服务中运行它,因为它在主机上找不到/var/run/docker.sock文件。

bluemix文档有一个tutorial explaining how to do load balancing with nginx。但它需要一个"硬编码" nginx配置中的Web服务器列表。

我想知道如何运行nginx-proxy映像以便自动检测Web实例?

1 个答案:

答案 0 :(得分:2)

Bluemix上的容器服务没有公开该docker socket(这并不奇怪,这对计算主机来说是一个安全风险)。另外两种方法可以实现您的目标:

  • 像amalgam8或consul这样的东西,基本上只是做那个
  • 类似,但是自己写的 - 有一个共享的卷,然后是每个 启动时的容器会向该共享卷添加一个文件,说明它是什么 是,加上其私人IP。 nginx容器有共享的手表 卷,并在这些更改时重新加载。 (比amalgam8或更多的工作 领事,但也许更多的控制)