jett.ru |
автор: Александр Качанов
перевод: n|a
Балансировка
Вы можете задаться вопросом, если 32 машины в кластере будут принимать пакеты для одного и того же IP-адреса, то клиент должен будет получить 32 ответа на свой запрос? Секрет заключается в том, что при установке распределителя, между TCP/IP стеком и драйвером сетевой карты внедряется фильтр, который определяет, какой из серверов должен обработать запрос. Все сервера в кластере фильтруют трафик, и только определенный сервер отвечает на запрос.
Так как этот распределитель является программой, у него больше средств объективно оценивать способности машины обработать запрос. Ему доступным процент загрузки процессора, объем свободной памяти, и объем свободного места на диске и прочее. Так как принцип работы построен на фильтрации пакетов, а не на преобразовании их заголовков, программный распределитель работает быстрее, чем аппаратный.
Обычно на каждую машину устанавливают еще одну сетевую плату, через которую машины в кластере общаются между собой и с базой данных. Тогда весь приходящий трафик идет через первый сетевой интерфейс (на котором сидит распределитель), а весь межмашинный трафик идет через второй интерфейс, так что администрирование машин и прочие сервисы не мешают работе web-серверов.
Отказоустойчивость
Распределители на всех машинах периодически рассылают по сети особые сообщения, с помощью которых определяется состояние всего кластера. Когда добавляется или удаляется машина, программный распределитель начинает процесс, который называется "сведение" (convergence). Во время сведения машины оцениваю новое состояние кластера и соответственно меняют алгоритм. Обычно, на это уходит 10 секунд.
Среди сообщений генерируемых распределителями есть сообщение которое называется "пульс" (heartbeat). В рассылке этих сообщений принимает участие каждая машина. Частоту пульса можно менять, а по умолчанию она равна 1 пульсу в секунду. Машина считается недоступной, если она не смогла принять участие в 5 "ударах пульса" подряд. После этого оставшиеся машины начинают процесс "сведения".
Администрирование
В отличие от всех предыдущих рассмотренных нами решений программное распределение нагрузки затрагивает каждый сервер. Неизбежно на каждую машину в кластере потребуется установить программное обеспечение и настроить его, установить дополнительные сетевые карты, а значит потребуется еще один концентратор (hub) или коммутатор (switch) и куча кабелей. Помимо этого, конфигурация каждой машины будет отличаться, так как у каждой машины будет свое уникальное имя и свой весовой коэффициент.
Положительная сторона состоит в том, что программным распределением нагрузки можно управлять с любого компьютера сети. Как только новая машина настроена и на ней установлен распределитель, ее можно включать в сеть и удаленно добавлять ее в кластер и удалять ее из него.
1. Нет денег на Cray? А зачем?
2. Web-сайты из нескольких серверов
3. Схемы распределения нагрузки во многомашинной системе
- Круговой DNS
- Аппаратное распределение нагрузки
- Программное распределение нагрузки
- Смешанные решения
4. Пару слов о "привязке"
5. Заключение