Failover Manager 5.0 릴리스

Bobby Bissett
2025년 4월 15일

Failover Manager(EFM)는 Postgres 데이터베이스 클러스터를 관리하는 도구로, 스트리밍 복제를 사용하는 프라이머리-스탠바이 배포 아키텍처의 고가용성을 가능하게 합니다. EFM 버전 5.0 릴리스는 Failover Manager에 여러 개선 사항과 신규 기능을 추가한 결과입니다. 이번 릴리스는 수년 만에 메이저 릴리스 식별자가 변경된 것입니다. 5.0으로 릴리스 번호를 지정한 이유는 단순한 의미 때문이며, 이는 4.10, 4.9 등의 기존 버전과 하위 호환되지 않는 여러 개선 사항이 있었기 때문입니다. 이 블로그에서는 메이저 버전 변경으로 이어진 주요 변경 사항들을 소개합니다.


메이저 버전 변경 사항

이번 메이저 버전 증가를 유도한 주요 변경 사항은 다음과 같습니다:

  • EFM 에이전트는 이제 더 이상 시작 로그(startup log)를 사용하여 시작 시 출력을 저장하지 않습니다. 예를 들어 systemd를 사용하는 경우, 시작 로그나 오류는 systemctl 또는 journalctl 출력에 기록됩니다. 이는 사용자들이 가장 기대하는 위치에 시작 정보를 제공하며, 클러스터마다 다르게 리디렉션할 수 없는 시작 로그의 기술적 문제도 해결합니다.
  • 새로 승격된 프라이머리를 따라가도록 스탠바이 데이터베이스를 재구성할 때, 해당 스탠바이의 로컬 WAL은 삭제됩니다. 이전 버전의 EFM에서는 보안 조치로 WAL을 먼저 복사했으나, 일반적으로 이 복사본은 필요하지 않으며, 이제는 기본적으로 복사를 수행하지 않아 시간과 디스크 공간을 절약합니다. 원래 동작을 사용하려면 backup.wal 속성을 설정하면 됩니다.
  • efm cluster-status-json 출력의 “xlog” 참조는 이제 “lsn”으로 변경되었습니다.
  • 이전 버전에서는 auto.resume.period라는 속성이 두 가지 목적을 동시에 수행했습니다. 이번 버전에서는 각 동작을 위한 속성이 분리되어 명확하게 구분됩니다. 속성이 변경될 때의 출력 예시는 EFM 업그레이드 페이지에서 확인할 수 있습니다. 두 동작은 다음과 같습니다:
    • 에이전트가 시작된 후 데이터베이스가 시작된 경우, 해당 데이터베이스를 모니터링하려는 시도 제어: auto.resume.startup.period 참조
    • 데이터베이스 장애 이후 모니터링을 재개하려는 에이전트의 시도 제어: auto.resume.failure.period 참조
  • 과거에는 EFM 속성 중 detach.on.agent.failure의 기본값이 에이전트(데이터베이스가 아닌)가 실패한 경우 노드를 로드 밸런서에서 분리하도록 설정되어 있었습니다. 이제는 일반적으로 기대되는 동작이 기본값으로 변경되었습니다.
  • Failover Manager는 이제 노드가 실패하거나 클러스터에서 분리되었을 때 클러스터 크기를 자동으로 조정하지 않습니다. 이는 아래에서 더 자세히 설명하며, 클러스터 상태 출력에 실패하거나 분리된 노드의 주소가 포함될 수 있음을 의미합니다.

클러스터 크기 및 쿼럼 처리

앞서 언급한 것처럼, 이전 Failover Manager는 노드 실패/분리 이후 클러스터 크기를 자동으로 조정했습니다. 예를 들어, 프라이머리 에이전트가 클러스터가 3노드에서 1노드로 줄어드는 것을 감지한 경우(보통 두 번 연속된 변경에서 발생)는 프라이머리 데이터베이스를 격리(fence off)했습니다. 하지만 3노드에서 2노드, 그리고 나중에 2노드에서 1노드로 줄어드는 경우는 아무런 동작도 하지 않았습니다. 이는 클러스터가 반으로 나뉘었을 때 나머지 절반이 프로모션되지 않기 때문에 프라이머리가 스스로를 격리하지 않기 때문입니다. 이 두 상황의 차이는 변경이 발생한 시간 차이뿐이며, 경계 상황에서 혼란과 예기치 못한 동작을 초래할 수 있습니다.

EFM 5.0부터는, 에이전트가 다른 노드의 실패/분리를 감지해도 해당 노드들은 재시작되거나 재참여하거나 efm reset-members 명령으로 제거될 때까지는 클러스터의 일부로 간주됩니다. 이는 클러스터 동작을 단순화하며, 드문 네트워크 오류 상황(예: 일부 노드는 다른 노드를 볼 수 있지만 그 반대는 불가능한 경우)에서 “스플릿 브레인(split brain)” 현상을 방지하는 데 효과적입니다. 이처럼 “실패한” 노드들이 시간이 지나며 자체 서브 클러스터를 형성할 수 있는 가능성을 줄여줍니다.

노드를 클러스터에 추가하거나 제거하는 동작은 기존처럼 클러스터 크기를 재조정합니다. 이번 버전의 변화는 실패하거나 분리된 노드들도 쿼럼 기준에 포함된다는 점입니다.


새로운 기능 및 수정 사항

앞으로의 게시물에서는 새로운 efm create-standby 기능 및 기타 Failover Manager 개선 사항에 대해 더 많은 정보를 제공할 예정입니다.


필요하시면 본 내용을 블로그 형식에 맞춰 마크다운으로 구성하거나 추가 디자인 요소를 넣어드릴 수도 있습니다.

본문: Failover Manager 5.0 Release

이메일: salesinquiry@enterprisedb.com