В рамках проекта, в котором я участвую, требуется система с временем безотказной работы, близким к 99,999% (система включает в себя здравоохранение). Решение, которое я исследую, предполагает наличие нескольких сайтов, которые, в свою очередь, имеют свои собственные балансировщики нагрузки и несколько внутренних серверов, а также собственную реплицированную базу данных, которая синхронизируется с каждым другим сайтом. Перед всем этим стоит система аварийного переключения на основе DNS, которая перенаправляет трафик, если сайт выходит из строя (или вручную отключается для обслуживания).
Однако я борюсь с тем, как работает аспект DNS, не предотвращая единой точки отказа. Я видел разговоры о плавающих IP-адресах (которые представляют эту точку отказа), различных управляемых службах, таких как DNSMadeEasy (которые не предоставляют возможности полностью протестировать свой процесс переключения при отказе во время их бесплатной пробной версии, поэтому я не могу проверить, действительно ли это подходит для проекта или нет) и многое другое, и мы играли с простыми решениями, такими как назначение нескольких записей A для доменного имени (что, как я понимаю, далеко не соответствует действительности, учитывая расхождения между тем, как разные браузеры будут взаимодействовать с такой настройкой) .
Для более надежного подхода на основе DNS вы просто указываете сервер имен для каждого местоположения в домене, запускаете сервер имен в каждом месте и регулярно обновляете независимые записи каждого сервера имен при обнаружении сбоя на другом сайте (с использованием сценариев, запускаемых на каждом сервере имен. проверить все остальные сайты)? Если да, то не остаются ли те же проблемы, которые обнаруживаются с регулярно изменяемыми записями A (браузеры не обновляются до новых записей или игнорируют очень низкие значения TTL)?
Вот визуальное представление того, как я понимаю, что система будет работать.
Я читаю на эту тему уже несколько дней (включая множество вопросов и ответов), но чувствую, что мне не хватает фундаментальной части головоломки.
Заранее спасибо!
Система аварийного переключения, основанная на обновлении информации в DNS, не будет достаточной для пяти девяток доступности.
Наименьшее значение TTL для DNS, которому обычно можно доверять, составляет 300 секунд. 0,001% года составляет 315 секунд. Таким образом, система, основанная на DNS, может иметь не более одного аварийного переключения в год, прежде чем она сломает пять девяток. Неважно, насколько хорошо вы построите свою инфраструктуру DNS, поскольку это ограничение основано на общем поведении DNS-клиентов, которое вы не можете изменить.
Я предлагаю вам начать думать о повышении устойчивости на уровне IP-адресов, с помощью anycast или чего-то подобного (это не моя область знаний, поэтому я не могу дать здесь подробный совет). Конечно, вам по-прежнему понадобится хорошая инфраструктура DNS, но с в основном статическими данными DNS достаточно просто купить стандартную услугу у уважаемого поставщика услуг DNS.