Балансировка нагрузки на основе сеансовых cookie-файлов?

Балансировка нагрузки на основе сеансовых cookie-файлов?

У меня есть веб-приложение, которое будет работать на нескольких серверах. Я хотел бы убедиться, что запросы, использующие один и тот же сеанс (заголовок cookie HTTP со значением JSESSIONID=x), всегда будут связываться с одним и тем же сервером. То есть, пока сеанс не «переместится» на другой сервер при определенных обстоятельствах (не только при сбое сервера, но и из-за некоторых стратегий кэширования и производительности на стороне сервера).

Мое веб-приложение хорошо работает в этом сценарии, но какой типбалансировщик нагрузкистоит ли использовать? Очевидно, я мог бы балансировать нагрузку на уровне приложений, но я ищу что-то более эффективное. Может быть, специализированное оборудование (а может и нет)? Я не могу тратить много денег...

Обновлять

Спасибо за ваши ответы: теперь я узнал, чтоФунтиHAProxyможно настроить на поиск определенных файлов cookie. Я пока не смог выяснить, позволяют ли они также обновлять отображение динамически (когда сеанс «перемещается» на другой сервер приложений)?

И существуют ли (недорогие) аппаратные решения, которые тоже могут это сделать? (Будет ли это стоить меньше, чем дополнительный сервер балансировки нагрузки?)

решение1

С использованием "липкие (постоянные) сеансы" обычно не рекомендуется. Если вы это сделаете, вы потеряете много преимуществ балансировки нагрузки. Нагрузка не будет сбалансирована, и вы потеряете высокую доступность, поскольку некоторые клиенты не смогут получить доступ к вашему приложению в случае сбоя.

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

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

Что касается решений балансировки нагрузки, то их много, и эта тема подробно освещалась здесь. Мне нравитсяЛВС. Другие любятnginx. Сети литейного производства, которая была приобретена Brocade, производит несколько надежных коммерческих продуктов. Они являются основным коммерческим решением для аппаратных балансировщиков нагрузки. Барракудатакже имеется «устройство» на базе Linux/OSS, которое можно использовать для балансировки нагрузки.

решение2

Тогда вот вам несколько решений.

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

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

решение3

Прежде чем тратить деньги... взгляните на программное обеспечение с открытым исходным кодом для балансировки нагрузки, напримерФунтилиHAProxy.

Я согласен с предложениями Уорнера и Стю.

решение4

POUND - ОБРАТНЫЙ ПРОКСИ И БАЛАНСИР НАГРУЗКИ

Программа Pound — это обратный прокси-сервер, балансировщик нагрузки и HTTPS-фронтенд для веб-сервера(ов). Pound был разработан для распределения нагрузки между несколькими веб-серверами и для удобной оболочки SSL для тех веб-серверов, которые не предлагают ее изначально. Pound распространяется по лицензии GPL — без гарантии, его можно использовать, копировать и раздавать бесплатно.

Это может быть то, что вы ищете

http://www.apsis.ch/pound/

Связанный контент