n8n 장애: pcp.conf 근본 원인(entrypoint 미생성) 및 helm-charts 수정 내역 반영
This commit is contained in:
@@ -20,24 +20,30 @@ Patroni 자체는 정상 (`patronictl list` — postgres-2 Leader, TL23, replica
|
||||
|
||||
`failover_on_backend_error = off`, `failover_command = ''` 설정([[../infra/data/postgresql-ha|postgresql-ha]] 참조 — Patroni가 promotion 전담)이라 pgpool은 자동으로 상태를 갱신하지 않고, 수동 개입(PCP 또는 재시작) 필요.
|
||||
|
||||
### PCP 관리 인터페이스 불능
|
||||
### PCP 관리 인터페이스 불능 — 근본 원인
|
||||
|
||||
`pcp_attach_node`로 수동 재연결 시도 시:
|
||||
```
|
||||
FATAL: failed to authenticate PCP user
|
||||
DETAIL: could not open /opt/pgpool-II/etc/pcp.conf. reason: No such file or directory
|
||||
```
|
||||
pgpool 배포에 `pcp.conf`가 아예 생성되어 있지 않음 — PCP 기반 노드 관리가 애초에 불가능한 상태. `pgpool-secrets`에 `pcp_user`/`pcp_password`는 존재하나 서버측 conf 파일 부재로 무용.
|
||||
|
||||
원인은 `pgpool-config` ConfigMap의 **커스텀** `entrypoint.sh` (`kaffa/helm-charts` repo `pgpool/configmap.yaml`)가 pgpool 이미지 기본 entrypoint를 쓰지 않고 직접 `pgpool.conf`/`pool_hba.conf`만 렌더링 후 `pgpool -n -f ... -a ...`를 실행 — `pcp.conf` 생성 로직도, `-F` 플래그도 없었음. `pgpool-secrets`에 `pcp_user`/`pcp_password` 키는 있었지만 Deployment env에 매핑도 안 되어 있어 애초에 이중으로 빠져 있었음 (env 배선 + entrypoint 로직 둘 다 누락).
|
||||
|
||||
## 조치
|
||||
|
||||
1. `kubectl -n db rollout restart deployment pgpool` — 재시작 후 `show pool_nodes`에서 node 1 `role=primary, status=up`으로 정상 인식 확인
|
||||
2. n8n 파드는 pgpool 재시작 후에도 기존 끊긴 커넥션을 계속 사용해 timeout 지속 → `kubectl -n n8n rollout restart deployment n8n`으로 해결
|
||||
3. `https://n8n.inouter.com` HTTP 200 복구 확인
|
||||
4. **근본 수정** (`kaffa/helm-charts` repo, commit `712e5a0` + `a303f18`):
|
||||
- `pgpool/deployment.yaml`: `PGPOOL_PCP_USER`/`PGPOOL_PCP_PASSWORD` env를 `pgpool-secrets`(`pcp_user`/`pcp_password`)에서 매핑
|
||||
- `pgpool/configmap.yaml` entrypoint.sh: `pg_md5`로 `$CONFDIR/pcp.conf` 생성 + `pgpool` 실행 시 `-F "$CONFDIR/pcp.conf"` 추가
|
||||
- ArgoCD `pgpool` App selfHeal로 자동 반영 확인, `pcp_node_info -W`로 PCP 인증 정상 동작 검증 완료
|
||||
- 참고: `pcp_node_info`류 CLI의 `-w`+`PCPPASSWORD` env 조합은 인증 실패함 (원인 미상) — `-W`로 stdin에 비밀번호 입력하는 방식만 확인됨. 향후 PCP 수동 조작 시 이 방식 사용.
|
||||
|
||||
## TODO / 재발 방지
|
||||
|
||||
- [ ] pgpool 이미지/차트에 `pcp.conf` 생성 로직 추가 (Helm values 또는 ConfigMap) — PCP로 즉시 재연결 가능하게
|
||||
- [x] pgpool 배포에 `pcp.conf` 생성 로직 추가 — 2026-07-11 완료 (위 조치 4)
|
||||
- [ ] Patroni switchover/failover 시 pgpool 자동 재탐지 여부 조사 (health_check_period=10s인데 왜 자동 복구 안 됐는지 원인 미상 — 재현 필요)
|
||||
- [ ] pgpool `show pool_nodes`의 `status=down` & `role≠primary` 상태를 감지하는 모니터링/알림 추가 (5주간 미인지 상태로 방치됨)
|
||||
- [ ] n8n 자체도 DB 재연결 실패 시 자동 재시작(liveness probe on DB connectivity) 검토
|
||||
|
||||
Reference in New Issue
Block a user