장애 조치와 리더 선출(Patroni, Stolon)
자동 장애 조치에 Patroni 또는 Stolon을 사용하고, 분할 두뇌 현상을 방지하도록 쿼럼을 구성해보세요.
장애 조치와 리더 선출(Patroni, Stolon)은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
왜 자동 장애 조치를 사용하나요?
수동 장애 조치는 느리고 오류가 발생하기 쉽습니다. 도구를 사용하면 주 서버 장애를 감지하고 사람의 개입 없이 복제본을 승격할 수 있습니다.
장애 조치 단계
다음 작업이 수행되어야 합니다.
- 주 서버가 중단되었는지 감지(상태 확인, 합의)
- 가장 최신 WAL을 가진 복제본 선택
- 복제본 승격(pg_promote / pg_ctl promote)
- 다른 복제본이 새 주 서버를 따르도록 재구성
- 애플리케이션 연결 라우팅 업데이트
스플릿 브레인 위험
네트워크가 분리되면 기존 주 서버가 아직 작동 중인데도 복제본을 승격할 수 있습니다. 두 개의 주 서버가 생기면 쓰기 충돌과 데이터 손상이 발생합니다. 쿼럼을 사용하여 피하십시오.
Patroni
리더 선출을 위해 외부 DCS(분산 구성 저장소)를 사용하는 Python 데몬입니다. 일반적으로 etcd, Consul 또는 Zookeeper를 사용합니다.
# patroni.yml
name: pg1
scope: my_cluster
etcd:
hosts: 10.0.0.10:2379,10.0.0.11:2379,10.0.0.12:2379
postgresql:
data_dir: /var/lib/postgresql/dataPatroni가 새 리더를 선택하는 방법
각 노드의 Patroni 데몬은 etcd에서 리더 잠금을 획득하기 위해 경쟁합니다. 하나만 잠금을 보유할 수 있으며, 해당 노드가 주 서버가 됩니다. 다른 노드는 이를 따릅니다.
Stolon
Go 기반의 대안입니다. 비슷한 합의 모델을 사용하지만 운영 특성은 다릅니다. 센티널, 키퍼, 프록시 구성 요소로 책임을 나눕니다.
repmgr
2ndQuadrant에서 제공하는 더 가벼운 도구입니다. 자동화는 적고 수동 제어가 더 많으므로 소규모 구성에 적합합니다.
클라우드 관리형 장애 조치
RDS, Cloud SQL, Aurora가 장애 조치를 대신 처리합니다. 운영의 단순성을 얻는 대신 유연성을 포기합니다.
장애 조치 후 연결 라우팅
애플리케이션은 새 주 서버를 알아야 합니다. 선택지는 다음과 같습니다.
- DNS 업데이트(TTL 때문에 느림)
- 장애 조치 도구가 관리하는 유동 IP
- 프록시 계층: HAProxy, 스크립트와 함께 사용하는 pgbouncer, AWS RDS 엔드포인트
동기 복제와 장애 조치
동기 대기 서버는 데이터 손실이 전혀 없음을 보장합니다. 가장 강력한 HA를 위해 자동 장애 조치와 함께 사용하십시오.
쿼럼
동기 복제를 위해 synchronous_standby_names를 쿼럼으로 설정하십시오. 복제본 3개 중 ANY 2개가 확인해야 합니다. 이렇게 하면 느리거나 장애가 난 복제본 하나가 있어도 COMMIT이 차단되지 않습니다.
synchronous_standby_names = 'ANY 2 (replica1, replica2, replica3)'쓰기 후 읽기 일관성
장애 조치 후 또는 복제 지연이 발생하는 동안 애플리케이션이 새 주 서버에 쓰고 즉시 복제본에서 오래된 데이터를 읽을 수 있습니다. 쓰기 직후의 읽기를 주 서버로 라우팅하거나 pg_last_wal_replay_lsn을 추적하십시오.
장애 조치 테스트
필요해지기 전에 테스트하십시오. 매달 스테이징 환경에서 주 서버를 중단하고 운영 절차를 연습하십시오. 실제 장애 조치의 부담도 충분히 크므로 예상하지 못한 상황까지 겹치게 해서는 안 됩니다.
요약
자동 장애 조치는 중요한 경로에서 사람의 개입을 제거합니다.
- 자체 관리 환경에는 Patroni / Stolon
- 관리형 환경에는 RDS / Cloud SQL
- 스플릿 브레인에 주의하고 쿼럼 사용
- 장애 조치를 정기적으로 연습
빠른 확인
PostgreSQL 복제에서 "스플릿 브레인"이란 무엇입니까?
AI 튜터와 함께 SQL을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 46
- 레슨
- 183
자주 묻는 질문
“장애 조치와 리더 선출(Patroni, Stolon)” 강의는 무료인가요?
네 — “장애 조치와 리더 선출(Patroni, Stolon)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“장애 조치와 리더 선출(Patroni, Stolon)”에서 뭘 배우나요?
자동 장애 조치에 Patroni 또는 Stolon을 사용하고, 분할 두뇌 현상을 방지하도록 쿼럼을 구성해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“장애 조치와 리더 선출(Patroni, Stolon)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 스트리밍 복제와 WAL
- 샤딩을 위한 논리적 복제
- 장애 조치와 리더 선출(Patroni, Stolon)
- 읽기 복제본과 연결 라우팅