Глава 6. Обзор виртуального сервера Linux

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

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

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

Чтобы разобраться как LVS кластеры выполняют эти функции, рассмотрите основную конфигурацию.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Замечания

[1]

Виртуальный сервер, это служба настроенная на работу с определенным виртуальным IP. Обратитесь к главе ВИРТУАЛЬНЫЕ СЕРВЕРЫ в главе 9 за дополнительной информацией о настройке виртуального сервера с помощью Piranha Configuration Tool.