我正在尝试复制托管提供商为我们的负载均衡器所做的设置,该设置使用 keepalived。因此,我有一个“负载均衡器”,运行 CentOS 6 和 keepalived 1.2.7,两个 Web 服务器运行 Ubuntu 12.04 LTS 和 Apache 2.2。
如果我直接查询两个 Web 服务器中的其中一个,它会运行良好,我会在几毫秒内得到响应。但如果我尝试通过负载平衡器查询网站,则需要一分钟才能得到响应。
我在负载均衡器上启动了 wireshark,看到来自双方(我的 Mac 和负载均衡器)的大量 TCP DUP ACK 和 TCP 重传。
有人遇到同样的问题吗?
配置:
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 5
}
vrrp_script chk_http {
script "killall -0 apache2"
interval 2
weight 5
}
vrrp_instance VI_LOCAL {
interface eth1
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.6.79.1
}
track_script {
chk_haproxy
}
track_interface {
eth0
eth1
}
}
vrrp_instance VI_PUB {
interface eth0
state MASTER
virtual_router_id 52
priority 101
virtual_ipaddress {
192.168.1.129
192.168.1.127
192.168.1.128
}
track_script {
chk_haproxy
#chk_http
}
track_interface {
eth0
eth1
}
}
virtual_server 192.168.1.129 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
protocol TCP
real_server 10.6.79.10 80 {
weight 1
TCP_CHECK {
connect_timeout 180
}
}
real_server 10.6.79.11 80 {
weight 1
TCP_CHECK {
connect_timeout 180
}
}
}
virtual_server 192.168.1.129 443 {
delay_loop 6
lb_algo rr
lb_kind NAT
protocol TCP
real_server 10.6.79.10 443 {
weight 1
TCP_CHECK {
connect_timeout 180
}
}
real_server 10.6.79.11 443 {
weight 1
TCP_CHECK {
connect_timeout 180
}
}
}
答案1
可能是您在堆栈的更深处遇到了导致 TCP 重新传输的错误。这可能很简单,比如以太网电缆和/或网卡损坏。运行“ifconfig”并查找错误...也查看消息。
如果排除了 L1 硬件的原因,请检查 L2 问题,例如交换机端口上的速度/双工不匹配等...