我已经在 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