Каковы недостатки липких сессий с балансировщиками нагрузки?

13

У нас есть веб-ферма машин IIS7, которые прекрасно работают. Перед ними аппаратный балансировщик нагрузки F5 Big-IP , тоже отлично работающий :)

альтернативный текст
(источник: www.f5.com )

В настоящее время мы используем ASP.NET State Serviceдля обработки нашего состояния OutProc . Это необходимо, когда у вас есть веб-ферма для поддержки любого типа информации о сеансе.

Мне было интересно, можем ли мы проводить липкие сессии на F5 Big-IP и, следовательно, перейти с OutProc обратно на InProc? Если так, то в чем заключается обратная сторона этого? Я знаю обратную сторону InProc против OutProc, поэтому не беспокойтесь об этом. Меня больше интересуют плюсы и минусы липких сессий без F5 Big-IP .

Может ли кто-нибудь пролить свет и / или опыт?

Pure.Krome
источник

Ответы:

15

Есть два основных недостатка:

  1. Ваша нагрузка распределяется неравномерно. Липкие сессии будут придерживаться, отсюда и название. Хотя первоначальные запросы будут распределяться равномерно, у вас может оказаться значительное количество пользователей, которые тратят больше времени, чем другие. Если все они изначально настроены на один сервер, этот сервер будет иметь гораздо большую нагрузку. Как правило, это не будет иметь большого влияния и может быть уменьшено, если в вашем кластере будет больше серверов.

  2. Прокси объединяют пользователей в один IP, и все они отправляются на один сервер. Хотя это, как правило, не вредит, опять же, кроме увеличения нагрузки на отдельные серверы, прокси также могут работать в кластере. Запрос в ваш F5 от такой системы не обязательно будет отправлен обратно на тот же сервер, если запрос поступает с другого прокси-сервера в их прокси-кластере.

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

Хотя сеансы на основе файлов cookie должны работать, у меня были некоторые проблемы с ними, и я обычно выбирал сеансы на основе IP. БОЛЬШОЕ ОДНАКО: я в основном работаю над внутренними приложениями - DMZ может варьироваться.

После всего этого мы добились большого успеха на сайтах, работающих под управлением F5, с липкими сессиями и сессиями In-Proc.

Возможно, вы захотите взглянуть на одну из систем распределенного кэширования в памяти, такую ​​как Memcached или Velocity, чтобы найти альтернативу сеансу, хранящемуся в SQL, или службе out of proc. Вы приближаетесь к скорости встроенной памяти с возможностью запуска ее на нескольких серверах.

Christopher_G_Lewis
источник
Помимо ЦП, есть ли способы проверить текущие соединения и / или пропускную способность на компьютере под управлением Windows 2008 с IIS7 ... чтобы увидеть, не слишком ли загружен сервер? В основном, какие метрики вы используете, чтобы убедиться, что серверы не подвергаются критике?
Pure.Krome
Некоторое время назад мы использовали сочетание сеансов с липким IP и липким печеньем и обнаружили неравномерное распространение, но не так ужасно. Прокси-кластер AOL был кошмаром для IP-кластеризации, и нам пришлось жестко кодировать исключения.
ericslaw
Native Perf Counters покажет активные HTTP-соединения.
Christopher_G_Lewis
@Christopher_G_Lewis Не могли бы вы немного рассказать о проблемах, которые у вас были с сеансами на основе файлов cookie на F5?
Евгений Бересовский
4

В дополнение к отличному ответу от Кристофера, липкие сеансы означают, что вы потеряли пару огромных преимуществ избыточных серверов - возможность снизить затраты на техническое обслуживание и прозрачность перед лицом сбоя системы.

Я считаю липкие сессии сильным индикатором плохой архитектуры приложений и / или плохого программирования. «Избегай любой ценой» - мой девиз.

ombble
источник
Отличные мысли по обслуживанию. Мы бросаем DRAIN на сервер задолго до того, как вывести его из кластера. DRAIN означает, что текущие сеансы обрабатываются, но новые сеансы не запускаются на этом сервере.
Christopher_G_Lewis
К счастью, никто не должен выполнять техническое обслуживание в кратчайшие сроки, и при этом сервер никогда не умирает неожиданно (в результате чего все сеансы, привязанные к этому серверу, внезапно становятся бесполезными - держу пари, что клиентам это нравится).
womble
Можно ли слить с сервера, не делая никаких настроек на самом F5? По сути, у нас нет доступа к F5 (он управляется для нас в сценарии управляемого хостинга) ... но у нас есть полный доступ к нашим веб-серверам ... так что вы можете СЛИВАТЬ, сбросив файл или что-то на веб-сайте?
Pure.Krome
Наш F5 определяет сервер вверх / сервер вниз / истощать через текстовый файл на веб-сайте - контекст файла "UP / DOWN / DRAIN". Изучите журналы IIS, чтобы определить, на что они смотрят. Обратите внимание, что иногда F5 просто выполняет SYN / ACK на порте TCP / IP, и в этом случае ваш хостер должен будет изменить конфигурацию F5.
Christopher_G_Lewis