В течение многих лет я выполнял отработку отказа DNS RR на производственном, но критически важном для бизнеса веб-сайте (в двух регионах).
Это отлично работает, но есть как минимум три тонкости, которые я усвоил на собственном опыте.
1) Браузеры переключатся с нерабочего IP на рабочий IP через 30 секунд (в последний раз, когда я проверял), если оба они считаются активными в любой кэшированной DNS, доступной вашим клиентам. Это в основном хорошая вещь.
Но «половина» ваших пользователей ждать 30 секунд недопустимо, поэтому вы, вероятно, захотите обновить свои записи TTL на несколько минут, а не на несколько дней или недель, чтобы в случае сбоя вы могли быстро удалить отключенный сервер с вашего DNS. Другие ссылались на это в своих ответах.
2) Если один из ваших серверов имен (или одна из ваших двух географических зон полностью) выходит из строя, который обслуживает ваш круговой домен, и если основной из них выходит из строя, я смутно напоминаю, что вы можете столкнуться с другими проблемами, пытаясь устранить сбитый сервер имен из DNS, если вы также не установили для своего сервера имен TTL / срок действия SOA достаточно низкое значение. Я мог бы ошибиться в технических деталях, но есть больше, чем одна настройка TTL, которую нужно получить, чтобы действительно защитить себя от единичных точек отказа.
3) Если вы публикуете веб-API, службы REST и т. Д., Они обычно не вызываются браузерами, и, таким образом, на мой взгляд, отработка отказа DNS начинает показывать реальные недостатки. Это может быть причиной того, что некоторые говорят, как вы говорите, «это не рекомендуется». Вот почему я так говорю. Во-первых, приложения, которые используют эти URL-адреса, обычно не являются браузерами, поэтому им не хватает 30-секундных свойств / логики отработки отказа в обычных браузерах. Во-вторых, то, вызывается или нет вторая запись DNS или даже DNS перезапрашивается, очень сильно зависит от низкоуровневых деталей программирования сетевых библиотек на языках программирования, используемых этими клиентами API / REST, а также от того, как они вызываются клиентское приложение API / REST. (Под ними рассматривается, вызывает ли библиотека get_addr и когда? Если сокеты зависают или закрываются, приложение повторно открывает новые сокеты? Есть ли какая-то логика тайм-аута? И т. Д. И т. Д.)
Это дешево, хорошо проверено и "в основном работает". Как и в большинстве случаев, ваш пробег может отличаться.