Несколько дней назад приложение Rails, которое я использовал на AWS, внезапно перестало работать. После расследования выясняется, что по какой-то причине он внезапно перестал подключаться к базе данных RDS через конечную точку домена.
После устранения неполадок ступай сюда Я запустил netcat на конечной точке и, конечно же, обнаружил, что время ожидания соединения истекло.
Сайт также использует SES через свой API для отправки электронной почты и сталкивается с той же проблемой: истечение времени ожидания netcat пытается получить доступ к конечной точке электронной почты email.us-east-1.amazonaws.com
.
В качестве временной меры для запуска сайта я смог «решить» эту проблему, перенастроив приложение для прямого подключения к IP-адресу конечной точки базы данных и пропустив поиск DNS. Но основная проблема все еще остается, и решение, к сожалению, не работает для подключения к SES (время ожидания истекает при использовании конечной точки IP или домена).
Экземпляр и база данных RDS не в VPC и поэтому не имеют правил группы безопасности для исходящего трафика. Приложение работает в течение многих лет без подобных инцидентов, и я уверен, что с нашей стороны ничего не изменилось с точки зрения конфигурации. Он просто внезапно перестал работать.
Сначала я думал, что поиск DNS может быть проблемой, но nslookup
и dig
похоже, проблем нет.
Может ли кто-нибудь пролить свет на то, что здесь могло произойти? Или что я могу сделать, чтобы это исправить?
Экспериментируя с обоими конечными точками электронной почты SES в США, я обнаружил, что в данном случае я могу подключиться к us-west-2, но не нам-восток-1 (это мой регион). Однако я могу без проблем подключиться к обоим со своей рабочей машины. Это подсказка? Кажется, что, возможно, запрос не работает, когда AWS хочет маршрутизировать по внутренней сети (это может даже не иметь смысла)? Обратите внимание, что это поведение происходит независимо от того, используется ли имя домена или общедоступный IP-адрес почтовых серверов.
> nc -zv email.us-west-2.amazonaws.com 443
Connection to email.us-west-2.amazonaws.com 443 port [tcp/https] succeeded!
(Works on instance and home machine)
> nc -zv email.us-east-1.amazonaws.com 443
(Times out when attempting from the AWS instance, but is fine from home)
Я предлагаю покопаться в вашей записи DNS и убедиться, что значение установлено правильно. Я не понимаю, что время ожидания соединения истекает только при использовании DNS. Это могло бы произойти только в том случае, если бы запись DNS не обслуживалась. Итак, раскопайте yourdb.yourdomain.com и убедитесь, что он действительно разрешается для вашего экземпляра RDS. Помимо этого, вы пытались восстановить свою базу данных или внести какие-либо изменения в базу данных? убедитесь, что ваш RDS открыт для общего доступа.