50% запросов на один хост
Я столкнулся со странной ошибкой и исчерпал способы ее устранения.
Я настроил 3 виртуальные машины: LVS, RS1 и RS2.
RS1 и RS2 работают на простом php-сайте. RS2 является точной копией RS1 с измененным только IP-адресом. Все машины подключены к локальной сети (1.1.1.0/24
). Вот мой ipvsadm
конфигурации:
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/default/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
LVS_IP=192.168.1.180
RS1_IP=1.1.1.2
RS2_IP=1.1.1.3
ipvsadm -A -t $LVS_IP:www -s rr
ipvsadm -a -t $RS1_IP:www -r $RS1_IP:www -m -w 1
ipvsadm -a -t $RS2_IP:www -r $RS2_IP:www -m -w 2
Бег links 1.1.1.2
а также links 1.1.1.3
отображает тот же положительный результат - содержимое моей веб-страницы.
Тем не менее, работает links 192.168.1.180
(Внешний IP-адрес LVS) дает мне правильные результаты... но только через раз (50% запросов). Похоже, что когда LVS обрабатывает запрос к RS2, ответа просто нет. (links
говорит "Создание соединения..." и тогда ничего не происходит).
Как я могу попытаться отладить такую проблему?
1 ответ
Вы отлаживаете это с помощью своего верного tcpdump
, Начните с захвата пакетов на реальном сервере, с которым возникла проблема, и если сразу ничего не очевидно, сравните его с эквивалентным захватом на работающем реальном сервере. В какой-то момент они будут выглядеть по-другому, потому что поведение отличается; то, что отличается, очень сильно укажет вам правильное направление. Пакеты не доходят до реального сервера? Проблема с брандмауэром на loadbalancer. Пакеты не возвращаются из реального сервера? Могут быть проблемы с исходящим брандмауэром, или веб-сервер реального сервера не очень хорошо играет с другими.