Установка и настройка отказоустойчивого балансировщика нагрузки на основе Keepalived в качестве одного из типов реализации LVS(Linux Virtual Server) (Горизонтальное масштабирование на транспортном уровне модели OSI) на Centos

Существует много решений на основе LVS для создания отказоустойчивого кластера

Например:

Я выбрал один из них – Keepalived.

Linux Virtual Server (LVS) — это набор интегрированных программных компонентов для распределения нагрузки между несколькими реальными серверами. LVS работает на двух одинаково настроенных компьютерах: один из них явлается активным LVS-балансировщик нагрузки, а второй- резервным LVS-балансировщик нагрузки. Активный LVS-маршрутизатор выполняет две задачи:

  • Распределение нагрузки между реальными серверами.
  • Проверка работоспособности сервисов на каждом реальном сервере.

Резервный LVS-маршрутизатор отслеживает состояние активного LVS-маршрутизатора и берет на себя функции последнего в случае выхода его из строя.

 

Одним из преимуществ использования LVS является его способность выполнять гибкую балансировку нагрузки уровня IP в пуле реальных серверов. Такая гибкость объясняется наличием большого количества алгоритмов планировщика, которые администратор может выбрать на этапе настройки LVS. Балансировка нагрузки в LVS значительно превосходит такие методы, как Round-Robin DNS, когда иерархическая структура DNS и кеширование на клиентской машине может привести к разбалансировке нагрузки. В дополнение, низкоуровневая фильтрация, используемая в LVS-балансировщик нагрузки, имеет ряд преимуществ перед перенаправлением запросов уровня приложения, так как балансировка нагрузки на уровне сетевых пакетов требует меньших вычислительных затрат и обеспечивает лучшую масштабиремость, в отличии, например, Nginx, который может использоваться как балансировщики нагрузки на 7-м уровне моделе  OSI (уровне приложений)

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

Механизм планировщика LVS реализован в наборе патчей ядра, известных как модули IP Virtual Server или IPVS. Эти модули реализуют коммутацию на 4 уровне (L4), что позволяет работать с множеством серверов, используя всего один IP-адрес.

Для эффективного отслеживания состояния и маршрутизации пакетов IPVS строит в ядре таблицу IPVS. Эта таблица используется активным балансировщик нагрузки для перенаправления запросов с адреса виртуального сервера на адреса реальных серверов в пуле, а также для перенаправления ответов реальных серверов клиентам. Таблица IPVS постоянно обновляется при помощи утилиты ipvsadm, которая добавляет и убирает реальные серверы в зависимости от их доступности.

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

В данной схеме используется алгоритм Round-Robin с использованием весовых коэффициентов(wrr)

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

Существуют также разные методы маршрутизации пакетов

— пакет направляется напрямую на ферму, без изменений.

— просто хитрый механизм NAT.

— туннелирование.

 

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

 

В типовой реализации LSV с использованием прямой маршрутизации LVS- балансировщик нагрузки получает входящий запрос через виртуальный IP (VIP) и передает этот запрос реальному серверу, используя выбранный алгоритм маршрутизации. Реальный сервер обрабатывает запрос и посылает ответ непосредственно клиенту, минуя LVS- балансировщик нагрузки. Такой способ маршрутизации позволяет получить масштабируемое решение, в котором добавление реальных серверов не создает дополнительной нагрузки на LVS-маршрутизатор.

 

 

– плавающий/расшаренный между балансировщиками нагрузки виртуальный IP-адрес,на который прописаны сайты в DNS

Этот VIP-адрес имеет на себе только активный в данный момент балансировщик нагрузки.Если такой активный lb выходит со строя, тогда резервный lb принимает  его на себя.

 

1.На обоих балансировщиках нагрузки устанавливаем keepalived и ipvsadm

 

2.Настройка iptables(маркируем траффик) на лоадбалансерах

 

 На lb01

 

На lb02

 

3.Настройка iptables на  обоих Web-серверах

Необходимо добавить правила, которые создают прозрачный proxy, и после этого реальный сервер будут обрабатывать пакеты, направленные на VIP-адрес, при этом VIP-адрес в системе реального сервера настраивать не нужно.

 

Эти команды заставит реальный сервер обрабатывать пакеты, направленные на VIP-адрес и порт 80  или  на VIP-адрес и порт 443,

 

4. Настройка keepalived на лоадбалансерах

На lb01

 

На lb02 конфигурационный файл отличается несколькими строками

 

Включаем маршрутизацию пакетов на обеих балансировщиках нагрузки

 

5.Добавление служб в автозагрузку, запуск служб,проверка VIP-адреса на lb01

Логи keepalived  смотрим  в

Статистику Keepalived смотрим в

 

Альтернатива:

1. Установка и настройка отказоустойчивого балансировщика нагрузки на основе Nginx+Keepalived (Горизонтальное масштабирование на уровне приложений модели OSI) на Centos

2. Установка и настройка отказоустойчивого балансировщика нагрузки на основе Haproxy+Keepalived (Горизонтальное масштабирование на уровне приложений модели OSI) на Centos


Источники:

http://www.rhd.ru/docs/manuals/enterprise/RHEL-5-Manual/Virtual-Server-Administration

http://www.linuxvirtualserver.org/HighAvailability.html

http://habrahabr.ru/post/104621/

 

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика