🟦 1. Tóm tắt High Available PostgreSQL với Patroni
Patroni là một giải pháp HA (High Availability) cho PostgreSQL, dùng để tự động hóa:
- Failover (chuyển đổi leader khi node chính chết)
- Replication (đồng bộ dữ liệu giữa leader và replica)
- Cluster membership (quản lý node trong cụm)
- Health check + watchdog
- Tự healing cluster
Patroni không tự lưu metadata mà dùng một distributed consensus store, thường là:
- etcd (phổ biến nhất)
- Consul
- ZooKeeper
📌 Thành phần chính của Patroni Cluster:
- Patroni nodes (master + replicas)
- etcd cluster (store khóa/giá trị cho leader lock)
- VIP / HAProxy / PgBouncer (tùy chọn)
📌 Luồng hoạt động:
- Patroni dùng etcd để ghi/đọc trạng thái leader.
- Node nào giữ được leader key trong etcd sẽ trở thành Primary.
- Các node còn lại sẽ follow replication.
- Khi leader chết → Patroni chạy consensus → chọn node khác làm leader.
🟧 2. Một số lệnh Patroni cơ bản
✔ Xem trạng thái cluster
patronictl -c /etc/patroni/config.yml list
✔ Xem trạng thái node
patronictl -c /etc/patroni/config.yml member
patronictl -c /etc/patroni/config.yml show-config
✔ Failover thủ công
patronictl -c /etc/patroni/config.yml failover
✔ Switchover (có kế hoạch)
patronictl -c /etc/patroni/config.yml switchover
✔ Restart Patroni
systemctl restart patroni
✔ Khởi động lại PostgreSQL qua Patroni
patronictl restart <cluster_name> <node_name>
✔ Remove a member khỏi cluster
patronictl remove <cluster_name> <node_name>
✔ Pause cluster (tắt tự động failover)
patronictl pause
✔ Unpause
patronictl resume
✔ Check health
patronictl -c /etc/patroni/config.yml health
🟩 3. Một số lệnh etcd cơ bản
✔ Kiểm tra cluster health
etcdctl cluster-health # v2
etcdctl endpoint health # v3
✔ Xem tất cả khóa trong etcd
etcdctl ls /service/ --recursive # v2
etcdctl get /service/<key> # v2
etcdctl get / --prefix # v3
✔ Ghi khóa
etcdctl set /service/test value # v2
etcdctl put /service/test "value" # v3
✔ Xóa khóa
etcdctl rm /service/test # v2
etcdctl del /service/test # v3
✔ Xem khóa Patroni lưu
etcdctl ls /service/pgcluster
✔ Xem leader
etcdctl get /service/pgcluster/leader
✔ Check etcd service logs
journalctl -u etcd.service -f
✔ Check members
etcdctl member list -w table
✔ Lưu cặp key-value vào etcd cluster
etcdctl put greeting "Hello World!"
✔ Kiểm tra key-value từ etcd node
etcdctl get greeting
🟦 4. Tóm tắt siêu ngắn
Patroni = Tự động failover cho Postgres
etcd = lưu khóa leader
patronictl = thao tác cluster
Lệnh quan trọng nhất:
|
Mục đích 683_ab5eab-04> |
Lệnh 683_cb4a04-77> |
|
Kiểm tra cluster 683_91bb80-2b> |
|
|
Failover 683_cf92b5-fc> |
|
|
Switchover 683_3a4527-21> |
|
|
Restart node 683_b8dd25-30> |
|
|
Pause auto-failover 683_52a9b5-40> |
|
|
Xem leader trong etcd 683_10499f-70> |
|