Node.js HAProxy未正确运行nodeJS API

Node.js HAProxy未正确运行nodeJS API,node.js,docker,haproxy,docker-compose,Node.js,Docker,Haproxy,Docker Compose,我正在EC2中运行coreOS。 我有一个nodeJS api docker映像,并在两个端口(25001和25002)中运行它。当我向他们蜷缩时,我看到了正确的反应 我的目的是在这上面有一个HAProxy(运行在25000),它将在这两者之间实现负载平衡。 以下是我所做的步骤: HaProxy的DockerFile: FROM haproxy:1.5 COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg haproxy.cfg: global

我正在EC2中运行coreOS。 我有一个nodeJS api docker映像,并在两个端口(25001和25002)中运行它。当我向他们蜷缩时,我看到了正确的反应

我的目的是在这上面有一个HAProxy(运行在25000),它将在这两者之间实现负载平衡。 以下是我所做的步骤:

HaProxy的DockerFile:

FROM haproxy:1.5
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
haproxy.cfg:

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 
结果: 当我为单个服务运行curl时,它们工作--->

25002年同样的作品 但当我运行25000次时,会出现如下超时错误:

curl -i localhost:25000/ping
HTTP/1.0 504 Gateway Time-out
Cache-Control: no-cache
Connection: close
Content-Type: text/html

<html><body><h1>504 Gateway Time-out</h1>
The server didn't respond in time.
</body></html>
curl-i localhost:25000/ping
HTTP/1.0 504网关超时
缓存控制:没有缓存
连接:关闭
内容类型:text/html
504网关超时
服务器没有及时响应。

我想知道我做错了什么?当您告诉HAProxy后端服务器位于

server api1 localhost:25001
您正在提供一个与HAProxy容器相关的地址。但是您的节点服务器没有在该容器上运行,所以本地主机上没有人

你有几个选择

  • 您可以使用
    docker run
    --link
    选项将HAProxy连接到您的两个后端
  • 您可以使用
    --net=host
    选项来运行
    docker
    ,然后您的服务器可以在本地主机上找到彼此
  • 您可以将主机的地址作为后端地址提供给HAProxy
第一个选项是most container-y,但Docker的桥接网络在高负载时性能较差。第二种选择是好的,只要你不介意在网络中让所有东西都从它的容器中脱离出来。第三个是笨拙的,但没有其他两个问题


有更多详细信息。

你是如何启动Docker容器的?Docker run-d-p 25000:25000图像名称这是为ha one准备的。对于节点容器-docker run-d-p 2501:2500-名称api1 ImageThank For the response-quick question-第二个选项(--net=host)是否会导致某种安全漏洞?看起来第三个选项最好。。。但作为haproxy的新手,如何实现这一点还很困难。任何帮助都会很好!是的,
--net=host
的安全性要低得多,因为如果攻击者在容器上获得根,那么他们在主机网络堆栈中就有根。(不过,他们仍然需要管理最初的入侵。)一个简单的方法:在主机上运行
ifconfig
并找到您的IP地址。将该地址放入HAProxy配置中,您当前拥有
localhost
。通过使用环境变量,您可以找到一些更奇特的方法使其动态化,但我认为作为后续问题,这将是最有效的方法。
server api1 localhost:25001