четверг, 20 ноября 2008 г.

Балансировка http трафика на Cisco CSS на основание cookies

Задача:
Требуется настроить балансировку http трафика на основание cookies. При этом веб-сервера крутятся на одном физическом сервере, только на разных портах
Этапы решения(все адреса, морты и названия сервисов вымышленные):
1. Настраиваем нужные сервисы:
service Service1
ip address 1.1.1.1
port 80
keepalive port 80
keepalive type http non-persistent
keepalive method get
keepalive uri "/health/ping"
string service1
active

service Service2
ip address 1.1.1.1
port 81
keepalive port 81
keepalive type http non-persistent
keepalive method get
keepalive uri "/health/ping"
string service2
active
2. Настраиваем content
owner L3_Owner
content ContentService
add service Service1
add service Service2
vip address 1.1.1.2
flow-timeout-multiplier 50
protocol tcp
port 80
url "/*"
advanced-balance arrowpoint-cookie
active
3. Настраиваем group
group SERVICE-GROUP
add destination service Service1
add destination service Service2
vip address 1.1.1.2
active

4. После чего проверяем сервисы по show service summary, и проводим тестирование.

Проблемы с которыми столкнулся во время настройки:
1. advanced-balance cookies - Все вроде бы работает, но через несколько минут "сессия" рвется и пользователь перебрасывается на страницу login/passord. Расселодование показало:
Веб-сервер отдает рандомное значение cookie, и по его значению балансировщик не может определить куда какому серверу слать запросы. В итоге он их рандомно кидает на все сервера. Если бы в cookie каждый веб-сервер вставлял уникальное значение, по которому можно определить что это за сервер, тогда при помощи string в описание сервиса можно было бы настроить нормальную балансировку.
2. advanced-balance arrowpoint-cookie, но в описание service не используется параметр string - в итоге все работает, но балансировщик упорно всех клиентов шлет на первый веб-сервер. При этом судя по cisco.com если бы веб-сервера находились бы на разных физических серверах, то все было бы отлично.

1 комментарий:

rgogunskiy комментирует...

Забыл указать, при arrowpoint-cookie параметр string в service используется в значение cookie которые пересылает балансировщик клиенту.