patronictl 조회
patronictl --help
Usage: patronictl [OPTIONS] COMMAND [ARGS]...
Command-line interface for interacting with Patroni.
Options:
-c, --config-file TEXT Configuration file
-d, --dcs-url, --dcs TEXT The DCS connect url
-k, --insecure Allow connections to SSL sites without certs
--help Show this message and exit.
Commands:
dsn Generate a dsn for the provided member, defaults to a dsn...
edit-config Edit cluster configuration
failover Failover to a replica
flush Discard scheduled events
history Show the history of failovers/switchovers
list List the Patroni members for a given Patroni
pause Disable auto failover
query Query a Patroni PostgreSQL member
reinit Reinitialize cluster member
reload Reload cluster member configuration
remove Remove cluster from DCS
restart Restart cluster member
resume Resume auto failover
show-config Show cluster configuration
switchover Switchover to a replica
topology Prints ASCII topology for given cluster
version Output version of patronictl command or a running Patroni...
DSN(Data Source Name)
각 DB서버(PostgreSQL instance)에 접근하기 위한 connection string을 의미함.
#### 예시1
host=127.0.0.1 port=5432 user=postgres password=12345 dbname=postgres
#### 예시2
postgresql://postgres:12345@127.0.0.1:5432/postgres
patroni에서 DSN용도
#### patroni.yaml 파일에서 사용
#### 예시
postgresql:
authentication:
replication:
password: '#FIXME'
username: '#FIXME'
superuser:
channel_binding: prefer
gssencmode: prefer
password: 12345
sslmode: prefer
sslnegotiation: postgres
username: postgres
bin_dir: /usr/bin
connect_address: DB서버_ipaddress:5432 ==> 여기에 해당
DCS(Distributed Configuration Store)
- 분산 환경에서 클러스터 상태를 공유,관리하는 저장소
- Patroni는 고가용성(HA)을 위해 여러 노드가 PostgreSQL의 리더/팔로워 상태, failover 여부, 구성 정보 등을 서로 공유하고 협의해야 합니다. 이때 공통된 정보를 저장하고 관리하는 중앙 저장소 역할을 DCS가 합니다.
- 참고 : https://patroni.readthedocs.io/en/latest/dcs_failsafe_mode.html
- Patroni에서 지원하는 DCS 종류 (참고 : https://patroni.readthedocs.io/en/latest/yaml_configuration.html)
DCS 종류 설명 etcd 가장 일반적으로 사용
빠르고 안정적인 분산 key-value 저장소consul 서비스 디스커버리와 헬스체크 기능까지 포함된 저장소 zookeeper apache 생태계의 분산 조정 시스템 kubernetes API K6s 환경에서 ConfigMap/Endpoints 등을 DCS로 사용 Raft(deprecated) 외부 DCS 없이 자체적으로 리더 선출 가능
DCS의 역할
- leader 선출 : 어떤 노드가 leader인지 DCS에 기록하고 경쟁
- 클러스터 구성 관리 : 노드들의 접속 정보, 상태를 저장
- 상태 공유 : 모든 patroni 노드가 leader 상태나 장애 발생 여부 등을 공유
- failover 결정 : leader 장애 시 새로운 leader를 선출하는 데 사용
ETCD
etcd 클러스터는 일반적으로 홀수 개의 노드로 구성
이는 Raft 프로토콜의 쿼럼(quorum) 요구 사항 때문에 발생하며, 짝수 개의 노드를 사용하면 장애 발생 시 쿼럼을 확보하기 어려워질 수 있기 때문입니다.
일반적으로 3개 또는 5개의 노드를 사용
etcd 클러스터 구성의 기본 원리:
-
쿼럼:etcd 클러스터는 쿼럼 기반으로 작동합니다.쿼럼은 클러스터의 의사 결정을 위한 최소한의 노드 수를 의미합니다.쿼럼을 확보해야 데이터의 일관성을 보장할 수 있습니다.
-
홀수 개의 노드:짝수 개의 노드를 사용하면 장애 발생 시 쿼럼 확보가 어려워질 수 있습니다. 예를 들어, 4개의 노드에서 2개의 노드가 다운되면 쿼럼을 확보할 수 없게 됩니다 (2/4). 반면 3개의 노드에서 1개의 노드가 다운되면 쿼럼 (2/3)을 확보할 수 있습니다.
-
일반적인 구성:3개의 노드 또는 5개의 노드를 사용하는 것이 일반적인 구성입니다. 5개 노드를 사용하는 경우, 2개의 노드가 다운되어도 쿼럼을 확보할 수 있습니다.
결론적으로, etcd 클러스터는 홀수 개의 노드로 구성하여 고가용성을 확보하고 안정적인 서비스를 제공합니다.
'PostgreSQL' 카테고리의 다른 글
| patroni - DCS Failsafe Mode (0) | 2025.07.24 |
|---|---|
| patroni- standby cluster (0) | 2025.07.20 |
| Serial Types 과 Identity Columns (0) | 2025.07.07 |
| JIT(Just-in-Time Compilation) (0) | 2025.07.07 |
| PREPARE statement (1) | 2025.07.07 |