Назад | Перейти на главную страницу

Какой метод я могу использовать для автоматизации DNS-аварийного переключения с мониторингом?

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

Мы хотели бы автоматизировать этот процесс, например, путем замены / изменения файлов зоны, если сайт обнаружен как отказавший с помощью инструмента мониторинга.

Мои навыки работы с Google позволили найти компании, предлагающие это только как услугу, но мы предпочли бы наше собственное решение. В настоящее время для мониторинга мы используем Nagios, наш сервер имен - Bind.

Есть ли какой-нибудь инструмент / метод для этого?

Конечно, есть то, что делают и эти службы. :-)

Это немного зависит от того, как вы в настоящее время перенаправляете / распределяете пользователей по всему миру. Предполагая, что в результате одни пользователи перенаправляются с www.example.com на www.eu.example.com, а другие на www.oc.example.com соответственно на www.am.example.com.

Вы можете использовать свое решение для мониторинга, чтобы, когда www.am.example.com перестает отвечать, запускалось не только обычное предупреждение, но и обновление, такое, что www.am.example.com вместо этого указывал на www.eu.example.com.

Чистый путь с динамическое обновление который представляет собой метод добавления, замены или удаления записей на главном сервере путем отправки ему специальной формы сообщений DNS. Формат и смысл этих сообщений указаны в RFC 2136.

Динамическое обновление включается включением allow-update или update-policy в операторе зоны. Для получения дополнительной информации проверьте Справочное руководство администратора Bind.

Самым чистым, вероятно, является использование средств управления доступом на основе IP и открытых ключей DNS.

Создайте пару ключей:

dnssec-keygen -a HMAC-MD5 -b 512 -n USER nagios.example.com.

В результате должно получиться два файла, один для закрытого ключа Knagios.exmaple.com.NNNN.private и второй с открытым ключом Knagios.exmaple.com.NNNN.key.

Обновите конфигурацию Bind:

key nagios.example.com. {
    algorithm HMAC-MD5;
    secret "<string with contents from Knagios.exmaple.com.NNNN.key>"; };

zone "am.example.com"
{
    type master;
    file "/etc/bind/zone/am.example.com";
    allow-update { key nagios.example.com.; };
    ...
};

Затем скрипт, который выполняет следующие действия при появлении предупреждения с помощью Bind nsupdate утилита:

cat<<EOF | /usr/bin/nsupdate -k Knagios.exmaple.com.NNNN.private -v
server ns1.example.com
zone am.example.com
update delete www.am.example.com. A
update add www.am.example.com. 60 A <ip-address-of-www.eu.example.com>
send
EOF

Я не уверен, разрешено ли вам использовать динамическое обновление для чего-либо, кроме A записи.

Никто. Ваш подход сломан.

Вы, кажется, заблуждаетесь, что можете вот так изменить DNS. Так не работает. Даже если вы установите низкий TTL, некоторые провайдеры проигнорируют его - и ваше старое значение все равно будет использоваться. Фактически у вас нет контроля над истечением срока действия DNS за пределами «дня или двух».

Таким образом, любая высокая доступность, основанная на изменениях DNS, в корне ошибочна.