인프런 커뮤니티 질문&답변

Seunghyeon Lee님의 프로필 이미지

작성한 질문수

AWS로 구축하는 MSA와 컨테이너 오케스트레이션

java.net.UnknownHostException 에러 관련 질문입니다

해결된 질문

작성

·

221

·

수정됨

1

현재 환경

  • VPC

    • public subnet 2개

      • ALB, Nat gateway

    • private subnet 2개

      • fagate

  • Security group

    • public group (80포트 모든 ip허용)

    • private group(80포트 public group아이피만 허용)

 

여기서 이미지 컨테이너 실행도중 한 컨테이너에서

Caused by: ! java.net.UnknownHostException: 690bd678bcf4: Name or service not known

와같은 에러와함께 컨테이너 실행이 실패했고

스택오버플로우 검색에서 얻은 정보를 통해

localhost를 수정하는 sh파일을 도커컨테이너 실행하도록 변경하여 에러를 해결했습니다.

(해당 스크립트)



#!/bin/bash set -e shift cmd="$@" echo "127.0.0.1 $HOSTNAME" >> /etc/hosts exec $cmd


현재 실행된 컨테이너는 아무문제없이 잘 작동하지만

제가 이부분에대해 이해가 잘 안되기도하고 올바른방법으로 해결한것인지 불안한감이 있어서

혹시나 좋은 피드백을 받을 수 있을까해서 질문올립니다!

 

위에러는 강의랑 다른구성의 서버실행도중 발생한 에러이고 저또한 정확한 질문을 드린것은 아니라

답변이 안될거라 생각되지만 혹시나하는 마음에 올려봅니다!!

 

답변 2

1

혹시나하는 마음으로 남긴글이었습니다 같이 고민해주어서 감사합니다!!

1

Burger님의 프로필 이미지
Burger
지식공유자

안녕하세요!

이 부분에 대해 저도 정확히 파악하기 위해 개인적으로 알아보았습니다.

인프라 구조를 자세히 알아야 정확한 진단이 가능하겠지만, 예상되는 원인은 한 컨테이너에서 입력한 호스트 네임으로 다른 컨테이너를 찾지 못한 에러인 것으로 보입니다.

해당 원인이 맞다면, 다음과 같은 해결책을 고려해볼 수 있습니다:

  1. ALB의 도메인 사용: 다른 컨테이너로 요청할 때 직접 호스트 네임을 사용하는 대신, ALB(Application Load Balancer)의 도메인 이름을 사용해보세요. 이는 호스트 네임 문제를 회피하는 데 도움이 될 수 있습니다.

  2. 서비스 디스커버리 사용: AWS ECS의 Service Discovery 또는 Service Connect 기능을 사용하여 컨테이너 간의 통신을 관리할 수 있습니다. 이는 컨테이너들이 서로를 쉽게 찾을 수 있도록 도와주는 서비스입니다.


    이 서비스는 이후 강의가 제작된다면 다뤄볼 예정입니다.

     

명확한 해결책을 드리지 못해 죄송합니다. 좋은 해결책을 찾게 되시면 공유해주시면 감사하겠습니다!

감사합니다.