OpenHA 클러스터 매니저(OpenHA Cluster Manager)

OpenHA의 핵심 관리 모듈인 OpenHA 클러스터 매니저(OpenHA Cluster Manager) 설정, 실행 방법을 안내합니다.

개요

OpenHA 클러스터 매니저(OpenHA Cluster Manager)는 OpenSQL 클러스터의 노드 상태를 실시간으로 감지하고, 장애 시 자동 Failover, Primary 노드 선출, PostgreSQL 파라미터 관리 등을 수행하는 핵심 관리 모듈입니다. Patroni 기반으로 구현되었으며, PostgreSQL 서버의 시작/중지/재시작과 같은 라이프사이클 제어 기능을 제공합니다.


환경 설정

OpenHA Cluster Manager의 설정은 다음 세 가지 유형이 있습니다.

Global Dynamic Configuration

  • OpenHA DCS(Distributed Configuration Store, etcd 기반)에 저장되며 모든 노드에 적용됩니다.

  • patronictl edit-config 명령이나 REST API로 수정 가능합니다.

  • 동적 구성 변경 사항은 모든 노드에 비동기적으로 반영됩니다.

Local Configuration File (patroni.yml)

  • patroni.yml 수정 후 patroni 재기동 없이 동적 reload 가능합니다.

    • Patroni 프로세스에 SIGHUP 보내면 local config 파일 다시 읽습니다,

    • POST /reload REST-API

    • patronictl reload 명령어 사용

환경변수

  • local configuration parameter를 환경 변수로 설정/재정의 할 수 있습니다.

본 매뉴얼에서는 위3가지 방식 중 Local Configuration File으로 설정 및 실행을 설명합니다.

Local Configuration File

OpenHA Cluster Manager 프로세스 실행 시, 매개변수로 입력 받는 경로에 위치한 yaml 파일로부터 읽어오는 설정 값입니다. Patroni 프로세스에 SIGHUP 시그널을 보내거나 REST API 서버에 POST /reload 요청을 보내 설정 파일을 새로 읽어오도록 할 수 있습니다. 기본 템플릿 환경구성 파일의 경로는 /etc/patroni/patroni.yml 이다. 해당 경로에 yml 파일을 생성하고 해당 파일의 내용을 수정하여 구성하고자 하는 환경에 맞게 변경합니다.

  • Patroni 클러스터의 메타 정보, etcd 연결 정보, 로깅 구성, REST API 서버 구성 및 PostgreSQL 파라미터 정보를 정의할 수 있습니다.

  • PostgreSQL 패러미터 셋은 Local Configuration 및 Global Dynamic Configuration로 설정할 수 있습니다. 중복되는 키가 있는 경우 Local Configuration의 값이 우선합니다.

  • bootstrap.dcs 항목을 정의해 아래의 Global Dynamic Configuration의 초기 구성 셋을 설정할 수 있습니다.

Configuration File 예제

각 노드별 patroni.yml 파일을 다음과 같이 작성합니다.

REST API 부분의 connect_address 값과 etcd3의 hosts 설정을 노드별 ip-address 주소로 변경합니다.

노드 주소가 아래와 같고 patroni 클러스터 구성을 하는 경우

  • node1 172.176.0.2

  • node2 172.176.0.3

  • node3 172.176.0.4

OpenHA Cluster Manager 실행

patroni.yml 작성 후 아래와 같이 각각의 노드에서 아래 명령어를 통해 OpenHA Cluster Manager 프로세스를 실행합니다. 인자로 유효한 Configuration .yml 파일의 경로가 입력되어야 합니다.

Cluster 실행 확인

patronictl 명령어를 사용하여 cluster 정상 동작을 확인합니다.

아래 예시처럼 Leader는 running, Replica는 streaming 으로 표기되는 것이 cluster 정상 부팅 상태입니다.

Last updated