DiscoveryClient_CONFIG-SERVICE/169.254.172.2:config-service:8888 - was unable to send heartbeat!
...
Caused by: java.net.UnknownHostException: discovery-service.internal.local: Name or service not known
config-service는 application.yml에서 eureka.client.service-url.defaultZone을 통해 discovery-service에 등록하려고 함.
하지만 discovery-service는 spring.config.import=configserver: 설정을 통해 config-service에서 설정 파일을 받아야만 기동됨.
결과적으로 discovery-service가 없으니 config는 Eureka에 등록 못 하고,
config가 없으니 discovery도 설정 못 받아 기동 못 하는 딜레마 구조, 즉 순환 참조가 발생.
config-service
↓
Eureka Client 초기화
↓
discovery-service 에 등록 시도
↓
DNS 혹은 Eureka 서버 미가동으로 실패
↓
스레드가 반복 재시도하며 장애 상태 진입
이 과정에서 실제 에러는 java.net.UnknownHostException 이지만, 루트 원인은 config-service가 Eureka에 의존하고, Eureka가 config-service가 떠야 구성 정보를 받을 수 있다는 구조적 순환
config-service의 application-prod.yml 파일에서
eureka:
instance:
prefer-ip-address: true
health-check-url-path: /actuator/health
client:
enabled: ${EUREKA_ENABLED:true} # 기본값 true (즉, 환경변수로 false 설정 시 끔)
...

이렇게 해준다음 ecs 서비스 생성할 때 환경 변수로 fasle를 줬다.
즉 , Eureka에 의존하지 않아도 부팅되도록 설정을 한것이다.