Балансировка нагрузки и поддержка непрерывности в режиме катастрофоустойчивости

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

image

Привет, Хабр! Представьте себе мир без катастроф — без каскадного резонанса и сдвига полюсов. Ах, сладкий сон. В реальной жизни такое невозможно: закон Мерфи живее закона Мура. Однако всё иначе в квантовом мире ИТ.

Сегодня мы поговорим о балансировке нагрузки и отказоустойчивости. Решаем эту задачу с помощью GSLB (global server load balancing). В случае падения соединения или полного отказа ЦОДа сервис GSLB перенаправит ваших пользователей к доступному дата-центру.


Как сделать собственный DNS-балансировщик


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

  • автоматически перенаправлять трафик в резервный ЦОД или облако;
  • проверять показатели «здоровья» серверов при перенаправлении трафика.

Мы сделали форк на базе open source проекта Polaris-GSLB, а экспериментальным путем установили, что решение нам не подходит. На нагрузочных тестах проверка доступности серверов выходила за указанные в настройках временные параметры. Проблема в том, что Polaris написан на Python, который в мониторинговой части использует треды. Как треды работают при больших нагрузках — отдельная история. Что касается GSLB, мы нашли выход: переписали всё на Golang и уменьшили в два-три раза количество ресурсов, которое требуется на площадку для мониторинга.

В качестве DNS сервера используем PowerDNS, для которого написали кастомный бэкенд. Балансировка на уровне DNS не требует никаких особых настроек. К тому же это быстрое, надежное и проверенное временем решение.

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

  • Weighted Round Robin — усовершенствованная версия алгоритма Round Robin, в котором нагрузка распределяется равномерно, с учетом одинаковой вычислительной мощности серверов. Пользователь задает серверам веса в зависимости от вычислительной мощности. Тем самым нагрузка распределяется гибче: серверы с большим весом обрабатывают больше запросов.
  • Failover group — смотрит на вес сервера и возвращает всегда сервер с наивысшим приоритетом до тех пор, пока он станет недоступен.

Как работает GSLB


Сервис состоит из нескольких модулей.

  • DNS-сервер

Отвечает на запрос клиента «какой IP-адрес у сайта example.com?», например, 89.22.165.223.

  • Мониторинг доступности

Active Monitoring в заданный интервал времени опрашивает узел по IP-адресу. Проверка доступности узлов идет по протоколам HTTP, HTTPS или TCP.

image

Когда DNS-сервер получает запрос от клиента (например, «какой IP-адрес у example.com?»), GSLB уже знает статус доступности ЦОДа. Клиенту не вернется IP-адрес выключенного узла. GSLB принимает решение о доступности ЦОДа в зависимости от интервалов и количества Liveness probes, которые указал пользователь.

ЦОДы могут работать в режиме active-active (трафик распределяется по ним равномерно) или по конфигурации active-passive, когда один из ЦОДов постоянно находится в статусе основного (active), а второй резервный (standby) и ждет поступления трафика.

Кейс: как работает сетевая балансировка у клиента


Клиент — финансовая компания, сайт которой размещается в двух ЦОДах: первый находится в активном состоянии, а второй — в резервном. Одно из ключевых требований к архитектуре — надежность. Пользователи должны всегда иметь возможность подключиться к сайту.

Клиент подключил правило балансировки GSLB в #CloudMTS, настроил домен, целевую группу из двух узлов, выбрал алгоритм Failover Group.

В нормальном режиме весь трафик поступает только на активный ЦОД. В случаи аварии и недоступности основного ЦОДа, GSLB весь трафик перебрасывает на резервный ЦОД.


Как подключить GSLB


GSLB повышает отказоустойчивость сервисов и обеспечивает доступность дата-центров, где бы они не были. Услуга предоставляется не только клиентам облака #CloudMTS. Это могут быть ваши собственные площадки или площадки других облачных провайдеров.

У сервиса простая настройка: прописать правила через веб-интерфейс, нажать кнопку «Подключить» и добавить NS записи для поддомена для перенаправления DNS запросов на серверы GSLB.

Далее мы рекомендуем провести disaster-recovery тестирование: отключить один ЦОД и проверить, что переключение DNS отработало нормально.

Подключить GSLB можно через сайт.




За облачными новостями заходите в Telegram-канал #CloudMTS

Источник: https://habr.com/ru/company/cloud_mts/blog/701444/

Интересные статьи

Интересные статьи

Напомню, LiteManager — это программа для удаленного доступа к компьютерам, управления рабочим столом, файлами и т.д. Основная версия предназначена для платформы Windows, но в пятой верс...
Публикуем перевод статьи, в которой подробно описана многолетняя работа команды по созданию и поддержанию большого портала данных на JavaScript. В 2019 была написана статья о поддержке б...
17 ноября Apple официально представила устройства на базе своего нового ARM-процессора Apple M1. Естественно, это событие не могло быть не замечено со...
Привет, Хабр! Обычно в блоге мы рассказываем, как в Mars удалось сделать что-то полезное и прорывное: внедрить технологию, опробовать методологию или прокачать инфраструк...
Есть несколько способов добавить водяной знак в Битрикс. Рассмотрим два способа.