Балансировка между распределенными площадками

VK Cloud позволяет создавать отказоустойчивые приложения за счет геораспределенной архитектуры с использованием нескольких бэкенд-серверов, размещенных в разных дата-центрах (зонах доступности). В случае аварии в одной из зон доступности, инфраструктура автоматически перенаправляет трафик на работоспособные серверы в других дата-центрах, минимизируя простои.

Для реализации этой модели применяется механизм балансировки нагрузки на уровне DNS, который выполняет регулярные проверки доступности серверов и перенаправляет запросы к резервным серверам.

В этом примере три ВМ в разных зонах доступности будут объединены через группы балансировки сервиса DNS.

Подготовительные шаги

  1. Получите доступ к DNS-балансировке, обратившись в техническую поддержку, если этого не было сделано ранее.

  2. Перейдите в личный кабинет VK Cloud.

  3. Выберите или создайте три ВМ с доступом в интернет в разных зонах доступности.

  4. Запишите внешние IP-адреса этих ВМ. В этом примере:

    • 83.166.234.101;
    • 109.120.188.102;
    • 217.16.23.103.
  5. Для созданных ВМ разрешите входящий трафик с IP-адреса 169.254.169.100/32 на заданный порт. Это технический адрес VK Cloud для проверки доступности сервиса. Если правило группы безопасности ограничит доступ к порту ВМ с этого адреса, DNS-балансировка отметит ВМ как недоступную и не будет отправлять трафик на нее.

  6. Создайте DNS-зону. В этом примере example.dns.com.

  7. Зарегистрируйте ваш домен у доменного регистратора и делегируйте его на NS-серверы VK Cloud, если этого еще не сделано. Дождитесь обновления DNS-записей: обычно занимает 10–30 минут.

  8. Установите утилиту dig на ваш компьютер для проверки работы DNS-балансировки:

$ sudo apt update && sudo apt install dnsutils

1. Добавьте A-записи в DNS-зону

В DNS-зоне создайте A-записи, соответствующие внешнему IP-адресу каждой добавленной ВМ.

2. Создайте группу балансировки

  1. Для DNS-зоны создайте группу балансировки с типом балансировки Round Robin.

  2. В группу балансировки добавьте все A-записи, доступные в DNS-зоне:

    • для каждой записи выберите тип мониторинга ICMP;
    • остальные параметры оставьте по умолчанию.

3. Проверьте работу DNS-балансировки

  1. На компьютере выполните команду:

    for i in {1..100}; do dig www.example.dns.com  A @ns4.msc.mail.ru +short; done | sort | uniq -c

    Ожидаемый ответ:

    33 83.166.234.10134 109.120.188.10233 217.16.23.103

    Здесь в начале строки указывается количество запросов, которые DNS-балансировка отправила к каждому серверу. Ответ показывает, что балансировка работает и пересылает запросы примерно по ровну между всеми доступными серверами (зонами доступности).

  2. В личном кабинете остановите две из трех ВМ. Это имитирует отказ сервера или недоступность дата-центра.

  3. На компьютере повторите команду:

    for i in {1..100}; do dig www.example.dns.com  A @ns4.msc.mail.ru +short; done | sort | uniq -c

    Ожидаемый ответ:

    100 217.16.23.103

    Здесь ответ позывает, что DNS-балансировка отправляет все запросы на один сервер (зону доступности), потому что два других сервера недоступны.

Удалите неиспользуемые ресурсы

Если добавленные ресурсы вам больше не нужны, удалите их:

  1. Удалите группу балансировки.
  2. Удалите DNS-зону.
  3. Удалите ВМ.