为什么 haproxy 不工作?

为什么 haproxy 不工作?

我已经在 Amazon.com 上使用 ubuntu 创建了 2 个实例,并在其上安装了 HAProxy。第一台服务器上的 HAProxy 正常运行。

自从我尝试设置 iptables 后,第二台服务器中的 Haproxy 就不起作用了。

我尝试执行curl localhost,但它告诉我

503 服务不可用
没有可用的服务器来处理此请求

重启实例没有帮助。帮忙检查一下吗?

最后的 iptables 更改:

iptables -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT 
iptables -A INPUT -p icmp --dport 80 -j ACCEPT 
iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -s ... -p icmp --icmp-type echo-request -j ACCEPT 
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

Haproxy配置:

    global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend tutorial_im
        bind *:80
        default_backend tutorial_http
backend tutorial_http
        balance roundrobin
        mode http
        server web1 *.*.*.*:80 check

iptables -L -nv 输出:

Chain INPUT (policy ACCEPT 2749 packets, 232K bytes)
pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 5704 packets, 675K bytes)
pkts bytes target     prot opt in     out     source               destination

答案1

我解决了这个问题。Amazon EC2 有自己的防火墙“安全组”,默认情况下会阻止每个连接。您需要设置出站规则。问题不在于 iptables。

答案2

1)iptables -A INPUT -p icmp --dport 80 -j ACCEPT

ICMP 协议没有目标端口

2)iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT

您仅接受 icmp 的 ESTABLISHED、RELATED 连接,而不接受 tcp 端口 80 的连接,请将 icmp 替换为 tcp

相关内容