我在EC2中运行coreOS。 我有一个nodeJS api docker镜像并在几个端口(25001和25002)中运行。当我向他们卷曲时,我看到了正确的反应。
我的目的是让HAProxy高于这些(运行于25000),这将在这两者之间实现负载平衡。 所以这是我做的步骤:
适用于HaProxy的DockerFile:
gparted
haproxy.cfg:
FROM haproxy:1.5
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
结果: 当我为他们工作的个人服务运行curl时--->
global
# daemon
maxconn 256
log /dev/log local0
defaults
mode http
log global
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:25000
default_backend node_api
backend node_api
mode http
balance roundrobin
server api1 localhost:25001
server api2 localhost:25002
同样适用于25002 但是当我运行25000时,我收到如下的超时错误:
curl -i localhost:25001/ping
HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
Content-Length: 68
ETag: W/"44-351401c7"
Date: Sat, 06 Jun 2015 17:22:09 GMT
Connection: keep-alive
{"error":0,"msg":"loc receiver is alive and ready for data capture"}
我想知道我在这里做错了什么?任何帮助将不胜感激......
答案 0 :(得分:2)
当您告诉HAProxy后端服务器位于
时server api1 localhost:25001
您要提供相对于 HAProxy容器的地址。但是你的Node服务器没有在那个容器上运行,所以localhost没有人。
你在这里有几个选择。
--link
docker run
选项将HAProxy连接到您的两个后端。--net=host
docker run
选项,然后您的服务器可以在localhost找到对方第一个选项是容器y最多,但Docker桥接网络的性能在高负载时很差。第二种选择是好的,只要你不介意在网络上让你的容器突破它的容器。第三个是kludgey,但没有其他两个问题。