DOCS/journey/troubleshooting/260116_admin_dashboard_서버간_헬스체크_개선.md
happybell80 0252dd1a7f fix: 51123 서버 IP 주소 업데이트 (성수 이전)
192.168.219.45 → 192.168.0.100 일괄 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:52:26 +09:00

1.9 KiB

Admin Dashboard 서버 간 헬스체크 개선

날짜: 2026-01-16
작성자: Claude
관련 파일: admin-dashboard/backend/services/system_service.py


문제 상황

51124 서버의 admin-dashboard가 51123 서버 서비스(goosefarm-app, robeing-gateway, opensearch) 헬스체크 시 NOT_FOUND 상태 발생.

원인 3가지:

  1. Docker API 제한: 51124에서 51123 컨테이너를 Docker API로 조회 불가 (같은 서버 컨테이너만 조회 가능)
  2. 폴백 로직 없음: Docker API 실패 시 HTTP 헬스체크로 폴백하지 않음
  3. 서버 간 접근 불가: 172.17.0.1은 Docker bridge IP로 같은 서버에서만 접근 가능, 51124에서 51123 서비스 접근 시 192.168.0.100 필요

해결 방안

1. Docker API 실패 시 HTTP 폴백 추가

  • system_service.py:458-468: Docker API 체크 성공 시만 즉시 반환, 실패 시 HTTP 체크로 진행

2. 서버 간 접근 URL 폴백

  • system_service.py:475-500: 172.17.0.1 사용하는 51123 서버 서비스는 192.168.0.100로 폴백 시도

3. opensearch_9600 제거

  • system_service.py:25,38,422: Performance Analyzer 비활성화로 헬스체크 불가하여 제거

코드 변경:

  • Docker API 성공 체크 후 HTTP 폴백 가능하도록 조건 변경
  • HTTP 체크 시 172.17.0.1 실패 시 192.168.0.100로 재시도
  • opensearch_9600 서비스 제거 (SERVER_51123_SERVICES, BASE_SERVICES, docker_services에서 제거)

교훈

서버 간 접근 시 Docker bridge IP 한계

  • 172.17.0.1은 Docker bridge IP로 같은 호스트에서만 유효
  • 서버 간 접근 시 실제 서버 IP(192.168.0.100/52) 사용 필요

폴백 로직 필수

  • Docker API는 같은 서버 컨테이너만 조회 가능
  • 원격 서버 서비스는 HTTP 헬스체크로 폴백 필요

체크 메서드 우선순위

  • Docker API (같은 서버) → HTTP (원격 서버 포함) 순서로 폴백