[PostgreSQL] HA 클러스터 인식 오류 (/etc/hosts 권한 문제)

반응형

 

PostgreSQL HA 구성 중 /etc/hosts 권한 문제로 인한 클러스터 인식 오류

PostgreSQL HA(replication) 환경에서 repmgr을 이용해 이중화를 구성하는 경우, 보안 점검 또는 자동화 스크립트로 인해 /etc/hosts 파일 권한이 600으로 변경되면 노드 간 통신이 차단되어 클러스터 인식이 실패할 수 있습니다.

1️⃣ 문제 증상

  • repmgr cluster show 실행 시 일부 노드가 “unreachable” 또는 “unknown”으로 표시됨
  • Standby 노드에서 repmgrd 서비스가 지속적으로 재시작됨
  • pg_basebackup 또는 standby clone 과정에서 “host not found” 오류 발생

2️⃣ 원인 분석

/etc/hosts 파일의 권한이 600으로 제한될 경우, PostgreSQL 또는 repmgr 프로세스가 root가 아닌 postgres 사용자로 실행되기 때문에 호스트 이름을 읽지 못하게 됩니다. 그 결과 클러스터의 peer 노드 주소를 확인하지 못하고, 인식이 중단됩니다.

3️⃣ 점검 명령 예시

# 현재 /etc/hosts 권한 확인
ls -l /etc/hosts

# repmgr 클러스터 상태 확인
sudo -u postgres repmgr cluster show

# PostgreSQL 로그에서 연결 실패 확인
sudo tail -n 50 /var/log/postgresql/postgresql-15-main.log

4️⃣ 해결 방법

  1. /etc/hosts 권한 복원
    sudo chmod 644 /etc/hosts
    sudo chown root:root /etc/hosts
  2. 클러스터 상태 재확인
    sudo -u postgres repmgr cluster show
  3. repmgrd 재시작
    sudo systemctl restart repmgrd
  4. 클러스터 정상 연결 확인
    sudo -u postgres repmgr cluster event

5️⃣ 예방 조치

  • 서버 보안 스크립트(예: CIS benchmark) 자동화 시 /etc/hosts 권한 변경 예외 설정
  • ansible, chef, puppet 등 자동화 정책에서 exclude rule 적용
  • 정기적으로 repmgr cluster show 결과 모니터링 자동화
📘 참고:

권한이 600으로 유지된 상태에서 repmgr은 호스트 이름 확인 대신 IP를 직접 지정하면 임시 동작은 가능하지만, 클러스터 구성 변경 시 예기치 못한 오류가 발생할 수 있습니다. 따라서 권장 설정은 chmod 644입니다.

반응형
LIST