Назад | Перейти на главную страницу

keepalived выполняет много TCP DUP ACK и TCP Retransmission

Я пытаюсь воспроизвести настройку, которую сделал наш хостинг-провайдер для нашего балансировщика нагрузки, который использует keepalived. Итак, у меня есть один «балансировщик нагрузки», работающий под управлением CentOS 6 и keepalived 1.2.7, с двумя веб-серверами под управлением Ubuntu 12.04 LTS и Apache 2.2.

Если я запрашиваю один из двух веб-серверов напрямую, он работает нормально, я получаю ответ через пару миллисекунд. Но если я попытаюсь запросить веб-сайт с помощью балансировщика нагрузки, получение ответа займет одну минуту.

Я запустил wirehark на балансировщике нагрузки и вижу много TCP DUP ACK и TCP Retransmission с обеих сторон (мой Mac и балансировщик нагрузки).

У кого-нибудь такая же проблема?

Конфигурация:

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
           }
   }
}

возможно, что у вас есть ошибки дальше по стеку, которые вызывают повторную передачу TCP. это может быть просто плохой кабель Ethernet и / или nic. запустите ifconfig и ищите ошибки ... также смотрите в сообщениях.

если вы исключите оборудование L1 как причину, проверьте проблемы L2, такие как несоответствие скорости / дуплекса на портах коммутатора и т. д.