Схемы балансировки нагрузки для web-серверов

автор: Александр Качанов
перевод: n|a

Схемы распределения нагрузки во многомашинной системе

Программное распределение нагрузки

Следующая глава базируется на описании программного распределителя нагрузки от Microsoft (Windows Load Balancing Service - WLBS). На каждый сервер ставится особе программное обеспечение, которое завязывает сервера в единый кластер с единым IP-адресом. Этот IP-адрес и присваивается доменному имени вашего сайта. Каждой машине присваивается свой идентификатор в кластере от 1 до 32. То есть, максимум в кластере может быть 32 машины. Кроме того назначается весовой коэффициент, так как машины могут иметь разный объем ресурсов, и устанавливается набор правил.

Балансировка

Вы можете задаться вопросом, если 32 машины в кластере будут принимать пакеты для одного и того же IP-адреса, то клиент должен будет получить 32 ответа на свой запрос? Секрет заключается в том, что при установке распределителя, между TCP/IP стеком и драйвером сетевой карты внедряется фильтр, который определяет, какой из серверов должен обработать запрос. Все сервера в кластере фильтруют трафик, и только определенный сервер отвечает на запрос.

Так как этот распределитель является программой, у него больше средств объективно оценивать способности машины обработать запрос. Ему доступным процент загрузки процессора, объем свободной памяти, и объем свободного места на диске и прочее. Так как принцип работы построен на фильтрации пакетов, а не на преобразовании их заголовков, программный распределитель работает быстрее, чем аппаратный.

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

Отказоустойчивость

Распределители на всех машинах периодически рассылают по сети особые сообщения, с помощью которых определяется состояние всего кластера. Когда добавляется или удаляется машина, программный распределитель начинает процесс, который называется "сведение" (convergence). Во время сведения машины оцениваю новое состояние кластера и соответственно меняют алгоритм. Обычно, на это уходит 10 секунд.

Среди сообщений генерируемых распределителями есть сообщение которое называется "пульс" (heartbeat). В рассылке этих сообщений принимает участие каждая машина. Частоту пульса можно менять, а по умолчанию она равна 1 пульсу в секунду. Машина считается недоступной, если она не смогла принять участие в 5 "ударах пульса" подряд. После этого оставшиеся машины начинают процесс "сведения".

Администрирование

В отличие от всех предыдущих рассмотренных нами решений программное распределение нагрузки затрагивает каждый сервер. Неизбежно на каждую машину в кластере потребуется установить программное обеспечение и настроить его, установить дополнительные сетевые карты, а значит потребуется еще один концентратор (hub) или коммутатор (switch) и куча кабелей. Помимо этого, конфигурация каждой машины будет отличаться, так как у каждой машины будет свое уникальное имя и свой весовой коэффициент.

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

1. Нет денег на Cray? А зачем?
2. Web-сайты из нескольких серверов
3. Схемы распределения нагрузки во многомашинной системе
- Круговой DNS
- Аппаратное распределение нагрузки
- Программное распределение нагрузки
- Смешанные решения
4. Пару слов о "привязке"
5. Заключение

Rambler's Top100
Rating All.BY
Akavita
Valid XHTML 1.0!