Node.js HAProxy未正确运行nodeJS API
我正在EC2中运行coreOS。 我有一个nodeJS api docker映像,并在两个端口(25001和25002)中运行它。当我向他们蜷缩时,我看到了正确的反应 我的目的是在这上面有一个HAProxy(运行在25000),它将在这两者之间实现负载平衡。 以下是我所做的步骤: HaProxy的DockerFile: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
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
选项将HAProxy连接到您的两个后端--link
- 您可以使用
选项来运行--net=host
,然后您的服务器可以在本地主机上找到彼此docker
- 您可以将主机的地址作为后端地址提供给HAProxy
有更多详细信息。你是如何启动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