Установка и настройка отказоусточивого балансировщика нагрузки на Centos/Debian на основе Keepalived(горизонтальное масштабирование на транспортном уровне модели OSI) на двух серверах.

 

Server1: proxmoxapp01.kamaok.org.ua 192.168.1.131 – основной loadbalancer(MASTER)

Server2: proxmoxapp02.kamaok.org.ua 192.168.1.132 – резервный loadbalancer(BACKUP)

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

 

1.Установка Keepalived

(в зависимостях подтянет ipvsadm-утилиту для администрирования ipvs (ip virtul server))

Centos

Debian

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

 

 

2.Настройка конфигурационного файлов Master/Backup лоадбалансеров

 

Настройка конфигурационного файла Master-балансера

Настройка конфигурационного файла Backup-балансера

 

Например, при использовании Apache

Для Centos

 

Для Debian

 

Краткое описание схемы:

 

Активный LVS-маршрутизатор выполняет две задачи:

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

Проверка работоспособности сервисов на каждом реальном сервере.

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

Для обмена сообщениями между собой лоадбалансеры используют широковещательную рассылку на адрес 224.0.0.18 по протоколу VRRP.

Из множество других подобных балансеров в сети они находят друг друга по номеру virtual_router_id (в моем случе 136).

Master-балансер имеет больший приоритет(100), чем Backup(50).Если Master-неисправен(выключен сервер,проблемы с сетью, отключен keepalived) т.е Backup не может достичь Master-балансера(не получает от него коректного ответа), тога Backup перебирает роль АКТИВНОГО лоадбалансера на себя – у него появляется VIP-адрес.

root@proxmoxapp02:~

root@proxmoxapp02:/etc/keepalived

Как только неисправный Master становится исправным/доступным, он автоматически забирает на себя VIP-адрес от текущего активного мастера за счет более высокого приоритета (100-Master vs 50-Backup)

root@proxmoxapp02:~

root@proxmoxapp01:~

root@proxmoxapp02:/etc/keepalived

root@proxmoxapp01:/etc/keepalived

Для отслеживания используем

 

Активный в данный момент лоадбалансер выполняет проверки на доступность реальных серверов, на которые он перенаправляет запросы клиентов на VIP­-адрес

root@proxmoxapp01:~

В данном примере он проверяет корректность работы Web-сервера путем выполнения http-запроса файла lbtest.php

В случае ответа отличного от кода 200 лоадбалансер считает,что Web-сервер не доступен/не работает корректно и выбрасывает из балансера этот сервер

 

root@proxmoxapp01:~

root@proxmoxapp01:~

 

Проверить, что сервер с нерабочим Web-сервером был выключен из балансера

root@proxmoxapp01:/etc/keepalived

 

root@proxmoxapp01:/etc/keepalived

root@proxmoxapp01:~

– это инструмент для управления таблицей ipvs, которая строится из настроек файла keepalived.conf

С помощью утилиты ipvsadm можно вручную изменять эту таблицу

Включать/выключать сервера из балансера, изменять веса(weight) серверов для корректировки кол-ва запросов отправляемых на них активным лоадбалансером и и т.д

Для мониторинга переключения основной/резервный(Master/Backup) балансеров и доступности/недоступности реальных серверов настроена отправка по E-mail

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

На активном балансере, несущем на себе VIP-адрес

root@proxmoxapp01:/etc/keepalived

 

Пакеты от клиентов не будут отбрасываться т.к предназначены они адресу, который есть на активном лоадбалансере. В отличии от активного лоадбалансера Backup не имеет на себе такого адреса, поэтому будет удалять все запросы на этот адрес т.е активный балансер получая запрос от клиента будет раскидывать его на себя самого(т.к на нем тоже запущен Web-сервер и на backup-балансер, на котором тоже запущен Web-сервер)Но Backup мастер не будет отвечать на такие запросы и клиент не получит корректного ответа

 

Если бы использовалась схему с 4-мя севрерами 2- балансера и 2 –отдельные Web-севрера, тогда достаточно было повесить алиасом VIP-адрес на loopback-интерфейс на оба WEB-сервера и отрегулировать sysctl-настройки на Web-серверах

 

Тогда бы оба Web-сервера корректно принимали и отрабатывали запросы от клиентов

 

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

 

Поэтому используется скрипт, который

добавляет перенапрвление пакетов на Backup-балансере

и удаляет его на Master(активном)-балансере

 

wget -O /etc/keepalived/bypass_ipvs.sh http://gcharriere.com/blog/wp-content/uploads/2009/10/bypass_ipvs.sh

 

Если при тестировании скрипта возникает ошибка

root@proxmoxapp02:/etc/keepalived

меняем в скрипте первую строчку с /bin/sh на /bin/bash

 

Мониторинг соединений

 

 

Если необходимо разбрасывать соединения https,то добавляем на оба сервера в keepalived.conf

Источник:

http://gcharriere.com/blog/?p=339

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

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

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