Как избежать проблем с поиском DNS с помощью кэша
Я использую довольно простые PHP-сайты в Ubuntu с экземплярами AWS EC2, которые используют *.rds.amazonaws.com
доменные имена для подключения к их соответствующим экземплярам RDS.
Это вводит 2 проблемы:
Когда срок действия кеша DNS истекает, каждые 5 секунд следующий запрос добавляет как минимум 12 мс к времени обработки моих сайтов, что не идеально (я стараюсь уложиться в бюджет в 100 мс).
Иногда этот шаг разрешения завершается неудачей, поэтому вместо того, чтобы показывать страницу с ошибкой моим клиентам, мой сценарий будет работать в течение ~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 для маршрутизации трафика на работоспособные конечные точки или для независимого мониторинга работоспособности вашего приложения и его конечных точек.
Для вашего конкретного сценария, вот статья