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

На серверах lb01 и lb02 устанавливается Nginx для балансировки нагрузки (распределения запросов клиентов на пару Web-серверов(серверов приложений app01 и app02)), а также для отказоустойчивости. При выходе со строя одного из lb-ов второй из них автоматически становится активным сервером(цепляет на себя VIP(Virtual IP) на который прописаны сайты в ДНС)
Это достигается за счет настроенного KeepAlived на обоих loadbalancer-серверах. Именно KeepAlived постоянно мониторит доступность активного loadbalancer -сервера и в случае его недоступности по какой-либо причине VIP-адрес перемещается с проблемного loadbalancer -сервера на запасной.
Запасной(вторичный) loadbalancer -сервер становится активным до тех пор пока не поднимется основной(loadbalancer, который имеет больший вес, согласно настройкам KeepAlived – это lb01)
Балансировка нагрузки(раскидывание клиентских запросов) используется для повышения стабильности сервера за счет «группы» серверов.
В NGINX такая группа объединяется в один «облачный сервер» с помощью конструкции upstream с ключевым названием, в данном случае это backend. Встречая данное слово в конфиге nginx будет пробовать использовать upstream сервера этой группы.
Чтобы посетители в случае каких-то операций оставались на одном сервере используется хеширование ip адреса — ip_hash.
Для автоматического отключения перегруженного или не работающего сервера используется конструкция max_fails=2 fail_timeout=60
Если при запросе к серверу произошла ошибка, запрос будет передан на следующий сервер. Если произошло 2 ошибки в течение 60 секунд, то на 60 секунд сервер будет помечен неработающим, и в течение этого времени новые запросы не будут на него отправляться.

Итого имеем
VIP-адреc расшаренный/плавающий между двумя лоадбалансерами 192.168.1.126
Только активный в данный момент времени имеет на себе этот адрес( ip addr show покажет его)

1.Установка и настройка Keepalived на lb01 и lb02
На обоих lb устанавливаем Keepalived и вносим необходимое значение в переменную ядра net.ipv4.ip_nonlocal_bind

Для того, чтобы разрешить Nginx прослушивать VIP-адрес(адрес, плавающий/расшаренный между двумя лоадбалансерами 192.168.1.126 )+включение маршрутизации пакетов.

Запускаем keepalived на обеих балансировщиках нагрузки + проверяем наличие VIP-адреса на активном балансировщике(lb01)

2.Установка и настройка Nginx на lb01 и lb02

Подключение официального репозитария Nginx

Отключим установку Nginx с Centalt-репозитария(если это репозитарий был подключен)

Установка и настройка Nginx в качестве балансировщика нагрузки

—  проксирует запросы на бекэнды

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

— передает данные о хосте (Host), реальном ip пользователя (X-Real-IP), и оригинальный заголовок HTTP (X-Forwarded-For)

– запрещает выполнять редирект

– описывает время ожидания ответа от бекэнда

3. Проверка синтаксиса,запуск и добавление в автозагрузку Nginx,Keepalived

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

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

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

 

Источник:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
http://хостингсайта.рф/node/9
http://www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy/
http://www.hilik.org.ua/nginx-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BE%D1%82%D0%BA%D0%B0%D0%B7%D0%BE/

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

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

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