Использование Route53 для обновления DNS с помощью boto. Должен ли я использовать имя или CNAME и какой TTL использовать - PullRequest
1 голос
/ 14 марта 2012

Фон. Я использую boto и route53 и aws для обновления имен доменов subsomanin частного IP-адреса. Я назначаю redis master и slave доменам, например

master.test.com private ip 111.111.111.111
slave.test.com  private ip 222.222.222.222

Если ведущий или ведомый выключается, у меня есть логика, которая загрузит новую машину и назначит эту новую машину с поддоменом главного или подчиненного.

Мне нужно убедиться, что днс распространяются как можно быстрее, насколько это возможно. Я не специалист по DNS. TTL 60.

На данный момент я использую запись А. В бото это выглядит так

change = changes.add_change("CREATE","slave.test.com", "A", 60)
change.add_value("222.222.222.222")

Я также могу использовать CNAME частного DNS, например

    change = changes.add_change("CREATE",slave.test.com, "CNAME", 60)
    change.add_value("ec2_internal_dns")

Итак, мой вопрос такой. Имеет ли значение, какой я установил? Cname или запись A? Я предполагаю, что только один может быть установлен. Какой оптимальный ттл? Что еще мне не хватает?

Почему разница? Опять же, это не для публичного сайта, поэтому я предполагаю кеширование проблем.

1 Ответ

1 голос
/ 01 мая 2012

Предположим, что двумя членами кластера master.test.com являются 1.1.1.1 и 1.1.1.2, и для каждого из них также есть записи A, настроенные как numberone.test.com и numbertwo.test.com. Если я правильно понимаю, вы спрашиваете, должны ли вы:

  1. Укажите master.test.com как запись A на 1.1.1.1 и переключите ее на 1.1.1.2, если первый сервер выйдет из строя.
  2. Укажите master.test.com в качестве записи CNAME на numberone.test.com и переключите ее на numbertwo.test.com, если первый сервер выйдет из строя.

Функционально они эквивалентны. Обратите внимание, что master.test.com сам должен иметь короткий TTL, но записи numberone и numbertwo A могут иметь более длинный TTL, поскольку эти IP-адреса никогда не меняются.

Для повышения производительности есть преимущество в незначительное при использовании записи A. Предположим, что сервер один просто вышел из строя, и вы переключились на сервер два. С записями CNAME рекурсивный DNS-сервер, который вы используете, вероятно, не имеет numbertwo.test.com в своем кеше, поэтому он нуждается в дополнительном поиске. Это может занять десятки миллисекунд, которые вы могли бы сохранить, если бы master.test.com было просто записью А.

С другой стороны, несколько десятков миллисекунд - это очень мало по сравнению с временем простоя до 60 секунд, которое вы можете испытать просто из-за TTL на master.test.com.

Если вы контролируете каждый аспект системы, как клиентов, так и серверов, вы можете также рассмотреть другие решения для распространения информации о том, какой сервер Redis использовать, например, с Apache ZooKeeper или более простым doozerd , в котором утверждается, что он почти мгновенно уведомляет о выходе из строя сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...