Мы используем Apache mod_proxy_loadbalancer с 4 внутренними JBoss, вот конфигурация на внутреннем сервере:
<Proxy balancer://www>
Allow from all
BalancerMember x.11:8080/APP route=node11 timeout=600 ttl=7200
BalancerMember x.12:8080/APP route=node12 timeout=600 ttl=7200
BalancerMember x.12:8081/APP route=node122 timeout=600 ttl=7200
BalancerMember x.14:8080/APP route=node14 timeout=600 ttl=7200
ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid nofailover=On
</Proxy>
ProxyPass /APP balancer://www/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse /APP balancer://www/
Наша проблема в запросах, а не в балансировщике, большая их часть идет на "node12", вот статус из диспетчера балансировщика:
LoadBalancer Status for balancer://www
StickySession Timeout FailoverAttempts Method
JSESSIONID|jsessionid 0 3 byrequests
Worker URL Route RouteRedir Factor Set Status Elected To From
x.11:8080/APP node11 1 0 Ok 6500 8.3M 33M
x.12:8080/APP node12 1 0 Ok 5690 38M 8.2M
x.12:8081/APP node122 1 0 Ok 6886 8.8M 35M
x.14:8080/APP node14 1 0 Ok 6272 7.5M 35M
Означает ли это, что балансировщик нагрузки не работает, когда мы используем StickySessions? Как мы можем убедиться, что у каждого сервера одинаковые запросы?
Кстати: замените x на 192.168.1, поскольку serverfault не позволяет добавлять несколько ссылок. Спасибо,
Тан
Если вы выполняете балансировку нагрузки на основе запросов, но сохраняете на основе sessionid, вы не увидите равномерно распределенную статистику балансировщика нагрузки. Каждый пользовательский сеанс содержит переменное количество запросов (некоторые пользователи могли просматривать только 3 или 4 страницы на сайте, некоторые могли просматривать 15 страниц, некоторые профили пользователей содержат больше данных, чем другие и т. Д.).
При этом, глядя на ваш вывод статистики в фунтах (и предполагая, что значения для node12 поменяны местами), ваши запросы делать выглядят довольно уравновешенными, учитывая активную настойчивость.