Глава 9. Обзор Linux Virtual Server

В LVS-кластер Red Hat Enterprise Linux входит Linux-машина, называемая активным маршрутизатором, передающая запросы из Интернет группе серверов. Таким образом, LVS кластеры состоят из двух классов компьютеров — LVS маршрутизаторов (одного активного и одного резервного) и набора реальных серверов, на которых и работают важные службы.

Активный маршрутизатор в кластере играет две роли:

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

9.1. Основная конфигурация LVS

На рисунке 9-1 показан простой LVS кластер, состоящий из двух уровней. На первом уровне находятся два LVS маршрутизатора – активный и резервный. В каждом из LVS маршрутизаторов присутствуют два сетевых интерфейса, один интерфейс для Интернет и один для внутренней сети, с их помощью он и управляет передачей пакетов между сетями. В этом примере активный маршрутизатор, используя Преобразование сетевых адресов (Network Address Translation) или NAT, перенаправляет запросы из Интернет нескольким реальным серверам на втором уровне, которые, в свою очередь, выполняют эти запросы. Таким образом, реальные сервера в этом примере находятся в выделенном сегменте сети и пропускают весь внешний трафик через активный LVS маршрутизатор. Снаружи эта группа серверов выглядит как один.

Рисунок 9-1. Основная конфигурация LVS

Запросы к службам, поступающие LVS кластеру, адресованы его виртуальному IP адресу или VIP. Это его адрес, маршрутизируемый из внешней сети, связанный с полным доменным именем, например, www.example.com, назначенный одному или нескольким виртуальным серверам[1]. Обратите внимание, VIP адрес, переходящий во время переноса от одного LVS маршрутизатора к другому, при этом продолжающий свое существование, также называется плавающим IP адресом.

Различные VIP адреса могут быть привязаны к одному устройству, соединяющему LVS маршрутизатор с Интернет. Например, если Интернет подключен через eth0, адрес eth0:1 могут иметь несколько виртуальных серверов. И наоборот, каждый виртуальный сервер может обслуживать отдельное устройство. Например, HTTP-пакеты будут обрабатываться устройством eth0:1, а FTP-пакеты устройством eth0:2.

В один момент времени активным может быть только один маршрутизатор. Роль активного маршрутизатора состоит в перенаправлении запросов к службам с виртуальных IP адресов реальным серверам. Перенаправление выполняется по одному из восьми алгоритмов, описанных в разделе 9.3 Обзор распределения нагрузки в LVS.

Активный маршрутизатор также постоянно наблюдает за общим состоянием указанных служб на реальных серверах, используя простые сценарии послать/ждать. Для выявления состояния служб, требующих динамические данные, такие как HTTPS или SSL, администратор может использовать внешние исполняемые модули. Если служба на реальном сервере останавливается, активный маршрутизатор прекращает посылать ему задания, пока он не вернётся к нормальной работе.

Резервный маршрутизатор выполняет роль готовой к работе системы. Время от времени, LVS маршрутизаторы обмениваются пульсирующими сообщениями через первичный внешний интерфейс или, в случае сбоя, через внутренний. Как только резервный узел не получил сообщение в течение определённого периода времени, он выполняет перенос и начинает играть роль активного маршрутизатора. Во время переноса, резервный маршрутизатор забирает на себя все VIP адреса отказавшего маршрутизатора, используя алгоритм ARP подмены — когда резервный LVS маршрутизатор провозглашает себя получателем IP пакетов, адресованных отказавшему узлу. Когда отказавший узел продолжает нормальную работу и становится активным, резервный узел снова переходит в режим готовности.

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

9.1.1. Синхронизация и общий доступ к данным реальных серверов

Так как в LVS кластерах отсутствует встроенный компонент для разделения данных между серверами, администратор может выбрать один из двух основных вариантов:

  • Синхронизировать данные в наборе реальных серверов

  • Добавить в структуру третий уровень общего доступа к данным

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

9.1.1.1. Настройка синхронизации реальных серверов

Существует много способов, которыми администратор может синхронизировать данные в наборе реальных серверов. Например, можно применить сценарии командной оболочки, чтобы при изменении страницы вeb-мастером, эта страница загружалась на все реальные сервера одновременно. Кроме этого, администратор кластера может с заданной частотой синхронизировать изменённые данные между узлами, используя программы, такие как rsync.

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

Замечания

[1]

Виртуальный сервер – это служба, настроенная на работу с определённым виртуальным IP. В разделе 12.6 VIRTUAL SERVERS вы сможете узнать больше о настройке виртуального сервера с помощью Piranha Configuration Tool.