我需要一些关于如何设置haproxy的建议。我有两台网络服务器正在运行。为了进行测试,它们在端口8080上运行一个简单的节点服务器。
现在,在我的haproxy服务器上启动haproxy,它提供了以下内容:
$> /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg
[WARNING] 325/202628 (16) : Server node-backend/server-a is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[WARNING] 325/202631 (16) : Server node-backend/server-b is DOWN, reason: Layer4 timeout, check duration: 2001ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT] 325/202631 (16) : backend 'node-backend' has no server available!只要一句:如果我这样做了:
haproxy$> wget server-a:8080我从节点服务器获得响应。
这是我的haproxy.cfg:
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode tcp
log global
option tcplog
option dontlognull
option http-server-close
# option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend www
bind *:80
default_backend node-backend
#---------------------------------------------------------------------
# round robin balancing between the various backends
#--------------------------------------------------------------------
backend node-backend
balance roundrobin
mode tcp
server server-a 172.19.0.2:8080 check
server server-b 172.19.0.3:8080 check如果我删除了check选项,它似乎是有效的。有什么建议可以修正这个检查机制的哈代理吗?
发布于 2019-02-01 06:35:44
您需要在命令的帮助下获得服务器的确切ip地址。
ifconfig并更正haproxy.cfg文件中的以下地址:
172.19.0.2:8080
172.19.0.3:8080 或修改行如下所示
server server-a server-a:8080 check
server server-b server-b:8080 check发布于 2016-11-22 15:40:21
删除“模式tcp”并将其更改为“模式http”。
我只是在猜测,但我想haproxy正在对您的web服务器执行tcp检查,而web服务器无法响应它。
在“模式http”中,它以http模式检查web服务器,并期望L4检查有一个"response 200“,并期望一个字符串(无论您定义什么)作为L7检查。
例如:L4
backend node-backend balance roundrobin mode http #(NOT NEEDED IF DEFINED IN DEFAULTS) option httpchk server server-a 172.19.0.2:8080 check server server-b 172.19.0.3:8080 check
例如:L7
backend node-backend balance roundrobin mode http #(NOT NEEDED IF DEFINED IN DEFAULTS) option httpchk get /SOME_URI http-check expect status 200 server server-a 172.19.0.2:8080 check server server-b 172.19.0.3:8080 check
发布于 2020-11-10 17:42:17
另一条评论与@basickarl对码头的评论有关。如果您要发送到一个docker ( docker -组合)实例(即您有多个运行服务实例的地方),您可能需要定义停靠器解析器,并将其用于后端的dns解析:
resolver:
resolvers docker_resolver
nameserver dns 127.0.0.11:53解析器的后端用法:
backend main
balance roundrobin
option http-keep-alive
server haproxyapp app:80 check inter 10s resolvers docker_resolver resolve-prefer ipv4https://stackoverflow.com/questions/40729125
复制相似问题