네트워크

[네트워크]멀티 서버 도커 서비스 일괄 점검

seongw00 2026. 2. 12. 16:37

상기 주제는 스터디에서 테스크로 주어진 현재 Teleport에 각 서비스가 도커로 올라가 있는데, 이 도커 서비스들의 현황을 파악해 달라는 일에서 시작했다. 하나씩 쉘에 들어가서 명령어로 확인 할 수 있었지만, Teleport를 통해서 서비스들의 접근이 가능하다는 점에서 Teleport 쉘이 있다면 일이 쉽게 풀릴 것 같아 방법을 찾아보다가 발견하게 되었다.

1. 환경 준비 (macOS 기준)

먼저 각 서버에 안전하게 접속하기 위한 Teleport(tsh) 도구를 설치하고 경로를 설정했다.

  1. Homebrew 설치: 맥 필수 패키지 관리자 설치
    1. Bash
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 환경 변수 등록: zsh에서 brew를 인식하도록 설정
    #Bash
    echo 'eval "$(/opt/homebrew/bin/brew shellenv zsh)"' >> ~/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv zsh)"
  3. Teleport 설치:
    #Bash
    brew install teleport

2. 인프라 인증 및 로그인

원격 서버들에 접근하기 위해 중앙 관리 프록시에 로그인했다.

  • 명령어: tsh login --proxy=console.~~~~~~~
    •  브라우저 인증을 통해 보안성을 고려한 접속 권한을 획득했다.

3. 멀티 서버 일괄 명령어 실행 (Troubleshooting)

단일 서버 접속이 아닌, 전체 서버의 상태를 한 번에 파악하기 위해 zsh 반복문(for loop)과 tsh를 조합했다.

[Troubleshooting]

  • 처음엔 tsh ssh "root@*"를 시도했으나, 터미널 환경에 따라 와일드카드(*) 인식이 안 되는 문제 발생.
  • 해결방법: tsh ls로 서버 목록을 먼저 뽑아내어 하나씩 명령어를 날리는 스크립트 작성.
for node in $(tsh ls --format=names); do 
  echo "\n=== SERVER: $node ==="; 
  tsh ssh root@$node "docker ps -a"; 
done

4.  데이터 수집 및 현황 파악

위 명령어를 통해 수집된 데이터를 바탕으로 전체 인프라 맵을 도출했다.

  • 정상 작동: Harbor(이미지 레지스트리), 개발용 인프라, 리버스 프록시 등 대부분의 서비스.
  • 점검 대상 발견: odyssey 서버의 프론트엔드(unhealthy), zabbix 모니터링 서버 중지 등.
  • 기타: Docker가 설치되지 않은 순수 OS 서버들 식별.

5.  결론

  • 효율성: 각 서버에 수동으로 접속(SSH)하지 않고, 한곳에서 수십 대 서버의 도커 상태를 1분 만에 파악 완료.
  • 가시성: docker ps -a 결과를 통해 컨테이너의 헬스 체크 상태(Healthy/Unhealthy)를 실시간으로 확인하여 장애 지점을 즉시 식별함.