2.6 KiB
2.6 KiB
date, topic, areas, tags
| date | topic | areas | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 2026-04-15 | pgcat HA 승격 (Step 0) |
|
|
Patroni multi-host 마이그레이션 Step 0 — pgcat 자체를 HA로 승격. 이후 Step 1에서 pgcat 를 Patroni REST API aware 로 전환할 때, pgcat 자체가 새 SPoF 가 되지 않도록 선행.
변경 내용
helm-charts (kaffa/helm-charts)
charts/appv0.3.0 → v0.5.0templates/deployment.yaml:affinity,topologySpreadConstraints블록 지원 추가templates/pdb.yaml신규 —podDisruptionBudget.minAvailable/maxUnavailable지원
values/pgcat.yaml:replicaCount: 2affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution(app=pgcat,topologyKey: kubernetes.io/hostname)podDisruptionBudget.minAvailable: 1
Commit: 421baef (pgcat HA: replicas=2, podAntiAffinity(hostname), PDB minAvailable=1)
ArgoCD
pgcat Application 은 syncPolicy.automated { prune: true, selfHeal: true } 설정. git push 직후 argocd.argoproj.io/refresh=hard annotate 로 즉시 sync 트리거.
롤아웃 관찰
- 시작: pgcat-545b8878b9-n45h8 (kr2) 단독 Running
- 중간: 구 RS + 신 RS surge 상태 (최대 4 pod),
maxSurge=25%/maxUnavailable=25%기본 strategy 동작 - 종료 (~55초): pgcat-549446cd6b-4hnk2 (kr1) + pgcat-549446cd6b-9rhk4 (hp2) 2/2 Running
- PDB
pgcat:minAvailable=1,AllowedDisruptions=1— 정상
노드 분산 검증
pgcat-549446cd6b-4hnk2 2/2 Running incus-kr1 10.42.1.107
pgcat-549446cd6b-9rhk4 2/2 Running incus-hp2 10.42.2.175
kr1 + hp2 — 서로 다른 노드. PodAntiAffinity 동작 확인.
서비스 Endpoints
pgcat 10.42.1.107:6432,10.42.2.175:6432
두 replica 모두 Service 뒤에 등록.
다운스트림 영향
rollout 중 NocoDB/n8n 로그 tail. 결과:
- NocoDB: 단일
Connection Error: Connection ended unexpectedly1회 — pod 재시작 없음, 45h 업타임 유지. knex/pg 자동 재연결 동작. - n8n: 에러 없음.
롤백 경로
values/pgcat.yaml에서replicaCount: 2→1,affinity/podDisruptionBudget블록 제거- 또는 chart 측: 구 버전 (v0.3.0) 으로
targetRevision지정 불가능 (단일 리포지토리 path) — 필요 시 역커밋
후속 작업
- Step 1: pgcat
pgcat.toml에use_patroni_api = true+patroni_api_port = 8008추가, 각 poolshards.0.servers를 Patroni 3노드 IP (10.100.2.5,10.100.3.185,10.100.1.83) 로 교체. 관련 Outline 문서:07497dd8-c8f7-4027-bb27-7d2cf10623a0