Глава 1. Обзор комплекта распределения нагрузки

Глава 1. Обзор комплекта распределения нагрузки

Этот комплект включает набор программ для распределения нагрузки IP между серверами. Он выполняется на паре аналогично настроенных компьютеров: один представляет собой активный маршрутизатор LVS, второй является запасным маршрутизатором LVS. Основные функции активного маршрутизатора LVS:
  • распределение нагрузки между реальными серверами;
  • поддержка работоспособности служб на каждом реальном сервере.
Резервный маршрутизатор LVS, в свою очередь, следит за активным маршрутизатором и включается в работу в случае его сбоя.
Содержание главы:

1.1. Основы настройки комплекта распределения нагрузки

Рисунок 1.1, «Основы настройки комплекта распределения нагрузки» демонстрирует простую двухуровневую структуру распределения нагрузки. На первом уровне расположены маршрутизаторы LVS (активный и запасной). Каждый маршрутизатор имеет два сетевых интерфейса — для Интернета и для частной сети, что позволяет регулировать трафик между сетями. В приведенном примере активный маршрутизатор использует преобразование сетевых адресов NAT (Network Address Translation) для перенаправления пакетов из Интернета произвольному числу реальных серверов на втором уровне. Серверы подключены к конкретному сегменту частной сети и передают общий трафик через активный маршрутизатор. Извне набор серверов представляется как единое целое.
Основы настройки комплекта распределения нагрузки
Основы настройки комплекта распределения нагрузки
Рисунок 1.1. Основы настройки комплекта распределения нагрузки

Поступающие на маршрутизатор LVS запросы обслуживания предназначаются виртуальному IP-адресу, который представляет собой общедоступный адрес, которому администратор назначает полностью квалифицированное имя домена (например, www.example.com), и который соответствует одному или нескольким виртуальным серверам. Под виртуальным сервером подразумевается служба, которая настроена на прослушивание конкретного виртуального IP-адреса. Раздел 4.6, «VIRTUAL SERVERS» содержит подробную информацию о настройке виртуального сервера с помощью Piranha. В случае сбоя одного маршрутизатора виртуальный адрес переназначается другому маршрутизатору, при этом сохраняя постоянство доступа. Такой адрес также называют плавающим IP-адресом.
Виртуальные IP-адреса могут быть сопоставлены интерфейсу, соединяющему маршрутизатор LVS с Интернетом. Если для этого используется eth0, то виртуальные серверы могут быть обозначены как eth0:1. В противном случае каждый виртуальный сервер может соответствовать отдельному устройству для заданной службы. Например, пакеты HTTP могут обрабатываться на eth0:1, а FTP — на eth0:2.
В определенный момент времени может быть активен только один маршрутизатор LVS. Роль активного маршрутизатора состоит в перенаправлении запросов обслуживания с виртуальных IP-адресов реальным серверам. Перенаправление осуществляется на основе одного из восьми алгоритмов распределения нагрузки (см. Раздел 1.3, «Обзор планирования распределения нагрузки»).
Активный маршрутизатор отслеживает общее состояние служб на реальных серверах с помощью простых сценариев вопросов и ответов. Дополнительно администратор может вызывать внешние программы для определения состояния служб, использующих динамические данные, таких как HTTPS или SSL. Если работа службы нарушена, активный маршрутизатор прекратит передачу запросов этому серверу до тех пор, пока его работоспособность не будет восстановлена.
Резервный маршрутизатор находится в режиме ожидания. Периодически маршрутизаторы обмениваются тестовыми сообщениями через общий внешний интерфейс или внутренний интерфейс в случае сбоя. Если резервный узел не получил тестовое сообщение по истечении заданного периода времени, он начнет выполнять роль активного маршрутизатора, забирая виртуальные адреса, обслуживаемые неисправным маршрутизатором, используя алгоритм подмены ARP. При этом он объявляет себя получателем IP-пакетов, адресованных неисправному узлу. После восстановления работоспособности исходного маршрутизатора резервный узел вернется в режим ожидания.
Такая двухуровневая конфигурация (см. Рисунок 1.1, «Основы настройки комплекта распределения нагрузки») является оптимальной для предоставления статического содержимого, так как отдельные серверы не выполняют автоматическую синхронизацию данных между узлами.

1.1.1. Репликация данных и совместный доступ реальных серверов к данным

Так как комплект распределения нагрузки не включает встроенные компоненты для обеспечения совместного доступа к данным с различных серверов, администратору доступно два варианта:
  • можно синхронизировать данные в наборе серверов;
  • можно добавить третий уровень в топологию для организации совместного доступа.
Первый вариант предпочтителен для серверов, которые не допускают изменение и обновление данных большим числом пользователей. Если надо разрешить изменение данных множеством пользователей (например, на сайтах электронной коммерции), второй вариант является предпочтительным.

1.1.1.1. Синхронизация реальных серверов

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