Как избежать проблем с поиском DNS с помощью кэша

Я использую довольно простые PHP-сайты в Ubuntu с экземплярами AWS EC2, которые используют *.rds.amazonaws.com доменные имена для подключения к их соответствующим экземплярам RDS.

Это вводит 2 проблемы:

  1. Когда срок действия кеша DNS истекает, каждые 5 секунд следующий запрос добавляет как минимум 12 мс к времени обработки моих сайтов, что не идеально (я стараюсь уложиться в бюджет в 100 мс).

  2. Иногда этот шаг разрешения завершается неудачей, поэтому вместо того, чтобы показывать страницу с ошибкой моим клиентам, мой сценарий будет работать в течение ~500 мс и попытаться снова.


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

Возможно, он может кешировать IP-адрес в течение 3 секунд, а затем автоматически попытаться обновить этот кеш, зная, что у него осталось 2 секунды. И если он по-прежнему терпит неудачу, все равно предоставьте старый / устаревший ответ, так как это лучше, чем отсутствие ответа.

Или он может сразу предложить кэшированный ответ, даже если срок его действия истек (вероятно, он все еще корректен); и если вы просто предоставили ответ с истекшим сроком действия, запустите обновление, просто добавьте экземпляр RDS.

Или, я мог бы связать это с помощью скрипта, который проверяет ответ DNS в цикле (dig +short), а при изменении IP-адреса обновите /etc/hosts файл, используя имя хоста, такое как database-abc,


Кроме того, мои сайты, как правило, получают около 4 запросов каждые 5 секунд в течение дня (поэтому обновления кеша происходят довольно часто), но активность за ночь остается низкой.

1 ответ

Согласно AWS Route 53 Документация:

Amazon Route 53 эффективно связывает запросы пользователей с инфраструктурой, работающей в AWS - например, с экземплярами Amazon EC2, балансировщиком нагрузки Elastic Load Balancing или корзинами Amazon S3 - и может также использоваться для маршрутизации пользователей в инфраструктуру вне AWS. Amazon Route 53 можно использовать для настройки проверок работоспособности DNS для маршрутизации трафика на работоспособные конечные точки или для независимого мониторинга работоспособности вашего приложения и его конечных точек.

Для вашего конкретного сценария, вот статья

Другие вопросы по тегам