Ubuntu
為什麼 haproxy 不起作用?
我在 Amazon.com 中使用 ubuntu 創建了 2 個實例並在其上安裝了 HAProxy。第一台伺服器中的 HAProxy 工作。
自從我嘗試設置 iptables 以來,第二台伺服器中的 Haproxy 不起作用。
我嘗試執行
curl localhost
,但它告訴我503 Service Unavailable
No server is available to handle this request
重啟實例沒有幫助。幫忙查一下?
最後 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
我解決了這個問題。Amazon EC2 有自己的防火牆“安全組”,預設情況下會阻止所有連接。您需要設置出站規則。問題不在 iptables 中。
- iptables -A INPUT -p icmp –dport 80 -j ACCEPT
ICMP 協議沒有目標埠
- iptables -A INPUT -p icmp -m state –state ESTABLISHED,RELATED -j ACCEPT
您只接受 ESTABLISHED,RELATED 連接用於 icmp 而不是 tcp 埠 80,將 icmp 替換為 tcp