首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用haproxy的Layer4“拒绝连接”

使用haproxy的Layer4“拒绝连接”
EN

Stack Overflow用户
提问于 2016-11-21 20:51:20
回答 4查看 29.1K关注 0票数 4

我需要一些关于如何设置haproxy的建议。我有两台网络服务器正在运行。为了进行测试,它们在端口8080上运行一个简单的节点服务器。

现在,在我的haproxy服务器上启动haproxy,它提供了以下内容:

代码语言:javascript
复制
$> /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!

只要一句:如果我这样做了:

代码语言:javascript
复制
haproxy$> wget server-a:8080

我从节点服务器获得响应。

这是我的haproxy.cfg:

代码语言:javascript
复制
#---------------------------------------------------------------------  
# 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选项,它似乎是有效的。有什么建议可以修正这个检查机制的哈代理吗?

EN

回答 4

Stack Overflow用户

发布于 2019-02-01 06:35:44

您需要在命令的帮助下获得服务器的确切ip地址。

代码语言:javascript
复制
ifconfig

并更正haproxy.cfg文件中的以下地址:

代码语言:javascript
复制
172.19.0.2:8080
172.19.0.3:8080 

或修改行如下所示

代码语言:javascript
复制
server server-a server-a:8080 check
server server-b server-b:8080 check
票数 5
EN

Stack Overflow用户

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2020-11-10 17:42:17

另一条评论与@basickarl对码头的评论有关。如果您要发送到一个docker ( docker -组合)实例(即您有多个运行服务实例的地方),您可能需要定义停靠器解析器,并将其用于后端的dns解析:

resolver:

代码语言:javascript
复制
resolvers docker_resolver
nameserver dns 127.0.0.11:53

解析器的后端用法:

代码语言:javascript
复制
backend main
    balance roundrobin
    option http-keep-alive
    server haproxyapp app:80 check inter 10s resolvers docker_resolver resolve-prefer ipv4
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40729125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档