У меня есть загрузочный проект Spring, который я хочу разместить на экземпляре AWS-EC2. Мне удалось создать его образ с помощью Git-hub, Jenkin и docker. Мне также удалось успешно загрузить и запустить этот образ в консоли Linux моего экземпляра AWS-EC2.
Согласно руководству, которому я следовал, я должен был открыть проект сейчас, используя общедоступный DNS IPv4, но я получил ответ, что он отказывается подключаться.
Я знаю, что обычно это связано с правилами входящего трафика, поэтому я добавил правило, разрешающее весь трафик, но это не помогло.
Для тех, кто хочет знать:
Репозиторий Git-hub: https://github.com/SalahuddinShayan/telecom
Репозиторий Docker-Hub: https://hub.docker.com/repository/docker/salahuddinshayan/telecom
Команда, которую я использовал для запуска образа в AWS:
docker run -p8081:8081 --name final-app --link docker-mysql:mysql salahuddinshayan/telecom
Группы безопасности:
Сетевые детали:
Вот ошибка:
Я полностью озадачен этим. Кто-нибудь знает, что делать, чтобы это исправить?
@PawelKam, я добавляю правила группы безопасности и сведения о сети по запросу.
Вы передаете через порт 8081. http://3.110.29.193:8081/
отлично работает со стороны EC2. Статус 404 повышается, так что это ошибка на стороне клиента, а не на стороне сервера.
Вы не должны использовать разрешить все протоколы. добавить правила входа для правильного порта и протокола.
@PawelKam Если это ошибка на стороне клиента, это означает, что проблема связана с моей системой, а не с экземпляром EC2, верно? если это так, я должен добавить правило в брандмауэр моего компьютера, чтобы исправить это?
Это означает, что никакой брандмауэр не блокирует трафик, и был найден процесс (ваше приложение), который прослушивает нужный вам IP:порт. Проблема в том, что процесс, с которым он столкнулся (ваше приложение), отправляет только страницу ошибок WhiteLabel, которая является общей страницей ошибок Spring Boot, которая отображается, когда пользовательская страница ошибок отсутствует. Таким образом, проблема связана с самим приложением Spring, а не с EC2 или подключением. Другими словами: трафик может достигать вашего приложения Spring, но вашему приложению Spring нечего сказать в ответ.
@PawelKam Спасибо, чувак, то, что ты сказал, заставило его щелкнуть, я прямо нажимал на опцию открытия адреса для общедоступного DNS и добавлял: 8081/home, который является путем к моему дому, что привело к HTTP-запросу и причине ошибки, но как только я вставил все добавление в новую вкладку, это сработало как шарм. Поскольку это фиктивный проект с единственной целью изучения процесса хостинга AWS, у него нет страницы с ошибкой, извините за это и еще раз спасибо.
@SalahuddinShayan Если это кому-то поможет, я добавил свои комментарии с дополнительными примечаниями в качестве ответа. Был бы признателен за голосование.
Пожалуйста, проверьте, вызывает ли ваш клиент правильный протокол, например. http против https.
Вы были правы, чувак, я прямо нажимал на опцию открытого адреса для общедоступного DNS и добавлял: 8081/home, который является путем к моему дому, что привело к запросу https и причине ошибки, но как только я вставил все добавление в новую вкладку работало как шарм.
Был рад помочь! Пожалуйста, отметьте этот ответ как решение вашего вопроса. Спасибо!
Эй, извините, что не выбрал ваш ответ, но проблема, с которой я столкнулся, похоже, не решена. когда я попытался открыть общедоступный DNS так же, как вчера, он выдал мне ту же ошибку, то есть отказ от подключения. Я ничего не менял в экземпляре. Можете ли вы попробовать подключиться со своего конца, чтобы проверить, что не так? для справки я прикрепил изображение ошибки, с которой столкнулся.
Вы уверены, что IP экземпляра не изменился?
Да, я подтвердил это с помощью снимка экрана с деталями сети, который я сделал ранее. ИП не менялся.
Не могли бы вы попытаться завершить работу и создать экземпляр заново, а также попробовать новый общедоступный IP-адрес?
Эй, я не знаю, почему и как, но контейнер, в котором работало мое приложение, остановился. Контейнер для БД работал нормально, но приложение остановилось. Я хочу знать причину, чтобы это не повторилось, если у вас есть какие-либо идеи, пожалуйста, дайте мне знать.
Вы можете рассмотреть возможность запуска ваших контейнеров в ECS. Это позволит настроить проверки работоспособности AWS (docs.aws.amazon.com/AmazonECS/latest/userguide/…) в дополнение к проверкам работоспособности Docker. Вы также можете настроить агент в своем контейнере для отправки журналов в CloudWatch, чтобы вы могли устранять любые проблемы.
Вы передаете через порт 8081. http://3.110.29.193:8081/
отлично работает со стороны EC2. Статус 404 повышен, так что это ошибка на стороне клиента, а не на стороне сервера.
Это означает, что никакой брандмауэр не блокирует трафик, и был найден процесс (ваше приложение), который прослушивает нужный вам IP:порт. Проблема в том, что процесс, с которым он столкнулся (ваше приложение), отправляет только страницу ошибки WhiteLabel, которая является общей страницей ошибки Spring Boot, которая отображается, когда пользовательская страница ошибки отсутствует. Таким образом, проблема связана с самим приложением Spring, а не с EC2 или подключением. Другими словами: трафик может достигать вашего приложения Spring, но вашему приложению Spring нечего сказать в ответ.
В качестве примечания: после развертывания вашего приложения я бы посоветовал уточнить правила входящего трафика, чтобы разрешить только тот трафик, который вам нужен. Нет необходимости разрешать весь трафик на всех портах.
Эй, извините, что беспокою вас снова, но проблема, с которой я столкнулся, похоже, не решена. когда я попытался открыть общедоступный DNS так же, как вчера, он выдал мне ту же ошибку, то есть отказ от подключения. Я ничего не менял в экземпляре. Можете ли вы попробовать подключиться со своего конца, чтобы проверить, что не так? посмотрите, можете ли вы по-прежнему получить доступ к веб-приложению. для справки я прикрепил изображение ошибки, с которой столкнулся.
Что-то явно изменилось - та же команда telnet, которая работала вчера, теперь выдает мне «Невозможно подключиться к удаленному хосту: соединение отклонено». Убедитесь, что а) ваше приложение все еще работает и б) что не были внесены изменения в группу безопасности или NACL.
Вы были правы, я не знаю почему и как, но контейнер, в котором работало мое приложение, остановился. Контейнер для БД работал нормально, но приложение остановилось. Я хочу знать причину, чтобы это не повторилось, если у вас есть какие-либо идеи, пожалуйста, дайте мне знать.
Это отдельная проблема, вам следует открыть для нее новый вопрос или выполнить поиск «запуск контейнеров Docker на AWS».
Пожалуйста, покажите правила вашей группы безопасности и сетевые данные вашего инстанса EC2.