Балансировка сетевой нагрузкиОсновная задача кластера балансировки сетевой нагрузки (Network Load Balancing Cluster, NLB) — обеспечение оптимальной загрузки серверов при минимально-необходимом времени отклика прикладных сервисов информационной системы во всех географических точках, где они должны быть доступны пользователям. Балансировка нагрузки достигается путем разгрузки запросов на несколько параллельно-установленных серверов. При этом технологии реализации балансировки могут быть различными.
К приложениям, требующим балансировки, как правило, относят наиболее типовые Web-серверы, серверы электронной почты и DNS-серверы, которые обслуживают сеть Интернет и корпоративные сети организаций. Помимо этого многие прикладные программы и инфраструктурные сервисы также могут поддерживать возможность балансировки, для чего они должны удовлетворять следующим требованиям:
- Согласованность данных на всех параллельно-доступных серверах.
- Целостность асинхронных и длительных по времени транзакций.
- Поддержка приложением системной инфраструктуры балансировки нагрузки.
Согласованность данных — основная проблема, так как все серверы должны выдавать одинаковые ответы пользователям на один и тот же запрос. При этом, если данные изменились на одном сервере, то они должны быть реплицированы на остальные сервера. А в зависимости от требований к времени обновления реплик на серверах технологии реализации согласования данных могут сильно отличаться: от переноса данных оператором системы на диске до организации масштабной системы онлайн-кластеризации и репликации данных (как в поисковых Web-площадках). Фактически, данную задачу должно решать прикладное программное обеспечение, но ни в коем случае не «железо» (зачастую при закупке оборудования предприятием допускается такая ошибка).
Целостность транзакций - одна из наиболее сложных проблем при организации NLB-кластера. В NLB-кластерах возможны ситуации, в которых приложение, начиная работу с одним сервером кластера, завершает её на другом сервере. Очевидно, что необходимо обеспечить целостность данных и корректность завершения транзакции.
Особое значение эта проблема имеет при организации сетей с балансировкой нагрузки и отказоустойчивостью маршрутизаторов и брандмауэров.
Инфраструктура балансировки сетевой нагрузки обеспечивает равномерное распределение заявок пользователей между серверами системы балансировки. Общая схема системы балансировки приведена на рисунке:

Рис.1. Типовая система балансировки сетевой нагрузки
Различают следующие уровни реализации NLB-системы:
- Сетевой уровень. Поддерживается на уровне операционной системы и реализован в Windows Server Network Load Balancing. Суть подхода заключается в логическом объединениии всех интерфейсов серверов под один IP-адрес в сети, при котором серверы договариваются между собой о порядке обслуживания запросов. Существует два способа реализации этого подхода:
- Unicast mode. В случае unicast mode на всех серверах NLB-кластера настраивается один виртуальный MAC-адрес, что позволяет организовать прием пакетов на все интерфейсы кластера. В этом случае узлы кластера не могут обмениваться информацией между собой с использованнием таких интерфейсов. Для этого обычно организуется дополнительная административная сеть или сеть доступа к данным, в которую узлы подключаются дополнительными интерфейсами (см. рис.1.).
- Multicast mode. В этом случае передача пакетов на узлы кластера организуется посредством коммутатора, который должен поддерживать multicast mode. В этом случае на интерфейсах кластера задействуются штатные MAC-адреса и поэтому серверы могут взаимодействовать друг с другом, используя эти же интерфейсы.
- Уровень службы имен интернета DNS. Данная служба позволяет преобразовывать имена компьютеров вида "comp2.domain.net" в IP-адреса вида "192.168.200.201" и наоборот для коммуникаций по протоколу IP. Для балансировки нагрузки в службе DNS для одного имени типа "comp2.domain.net" настраивается несколько IP-адресов, а также опция "round robin", которая устанавливает порядок выдачи адресов для DNS-запросов по кругу. В результате, каждый клиент, по мере выдачи запросов на одно имя на DNS-сервер, будет получать разные IP-адреса, а значит, подключаться к разным серверам.
- Уровень приложения. Данный подход реализуется в прикладном программном обеспечении и может не зависеть от инфраструктуры (уровней 1 и 2). Примерами таких приложений являются Active Directory, Microsoft Exchange Server, WINS, Kaspersky Administration Kit, корпоративные распределенные системы учета и т.п., в которых реализация носит индивидуальный характер.
Планирование NLB-решения предполагает принятия решений по следующим вопросам:
- Количество пользователей и интенсивность запросов, которое влияет на загрузку серверов.
- Географическая распределенность.
- Объем данных.
- Подход к реализации балансировки нагрузки.
- Разработка технологии репликации данных на серверах.
- Требования к отказоустойчивости.
|