Балансировка между распределенными площадками
VK Cloud позволяет создавать отказоустойчивые приложения за счет геораспределенной архитектуры с использованием нескольких бэкенд-серверов, размещенных в разных дата-центрах (зонах доступности). В случае аварии в одной из зон доступности, инфраструктура автоматически перенаправляет трафик на работоспособные серверы в других дата-центрах, минимизируя простои.
Для реализации этой модели применяется механизм балансировки нагрузки на уровне DNS, который выполняет регулярные проверки доступности серверов и перенаправляет запросы к резервным серверам.
В этом примере три ВМ в разных зонах доступности будут объединены через группы балансировки сервиса DNS.
-
Получите доступ к DNS-балансировке, обратившись в техническую поддержку, если этого не было сделано ранее.
-
Перейдите в личный кабинет VK Cloud.
-
Выберите или создайте три ВМ с доступом в интернет в разных зонах доступности.
-
Запишите внешние IP-адреса этих ВМ. В этом примере:
83.166.234.101;109.120.188.102;217.16.23.103.
-
Для созданных ВМ разрешите входящий трафик с IP-адреса
169.254.169.100/32на заданный порт. Это технический адрес VK Cloud для проверки доступности сервиса. Если правило группы безопасности ограничит доступ к порту ВМ с этого адреса, DNS-балансировка отметит ВМ как недоступную и не будет отправлять трафик на нее. -
Создайте DNS-зону. В этом примере
example.dns.com. -
Зарегистрируйте ваш домен у доменного регистратора и делегируйте его на NS-серверы VK Cloud, если этого еще не сделано. Дождитесь обновления DNS-записей: обычно занимает 10–30 минут.
-
Установите утилиту
digна ваш компьютер для проверки работы DNS-балансировки:
$ sudo apt update && sudo apt install dnsutils
В DNS-зоне создайте A-записи, соответствующие внешнему IP-адресу каждой добавленной ВМ.
-
Для DNS-зоны создайте группу балансировки с типом балансировки
Round Robin. -
В группу балансировки добавьте все A-записи, доступные в DNS-зоне:
- для каждой записи выберите тип мониторинга
ICMP; - остальные параметры оставьте по умолчанию.
- для каждой записи выберите тип мониторинга
-
На компьютере выполните команду:
dignslookupfor 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-балансировка отправила к каждому серверу. Ответ показывает, что балансировка работает и пересылает запросы примерно по ровну между всеми доступными серверами (зонами доступности).
-
В личном кабинете остановите две из трех ВМ. Это имитирует отказ сервера или недоступность дата-центра.
-
На компьютере повторите команду:
dignslookupfor 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-балансировка отправляет все запросы на один сервер (зону доступности), потому что два других сервера недоступны.
Если добавленные ресурсы вам больше не нужны, удалите их: