Ivory: Biến việc quản trị PostgreSQL HA & Patroni trở nên nhàn hơn

Anh em là một DBA hay DevOps Engineer đang vận hành PostgreSQL Cluster cũng không lạ gì với Patroni là tiêu chuẩn dành cho giải pháp High Availability. Tuy nhiên, việc quản trị Patroni thuần túy qua cmd đôi khi mang lại vất vả một chút với các anh em ít sử dụng như dev:

  • Muốn check trạng thái cluster? Gõ patronictl list.
  • Muốn xem độ trễ replication? Phải soi từng con số trên màn hình terminal.
  • Khi sự cố xảy ra, việc hình dung node nào đang là Leader, node nào vừa fail đòi hỏi bạn phải có trí nhớ cực tốt về kiến trúc hệ thống.

Hôm nay mình giới thiệu với anh em về Ivory một chiếc dashboard mã nguồn mở giúp trực quan hóa toàn bộ cụm Database. Nó không màu mè, chủ yếu giúp biến những thông tin thuần CLI từ Patroni thành giao diện đồ họa dễ nhìn, dễ quản lý chút với anh em dev ít gõ cmd có thể tham khảo nhé.

019b3b5e-800c-78b7-80d4-c855a992ae66

Ivory là gì?

Nói đơn giản, Ivory là một công cụ quản trị UI mã nguồn mở dành riêng cho PostgreSQL Cluster (Patroni). Nó không sinh ra để thay thế hoàn toàn CLI hay các hệ thống Monitor như Grafana, mà đóng vai trò là lớp management plane giúp đơn giản hóa các thao tác vận hành hàng ngày.

Cài đặt nhanh

Ivory được viết bằng Golang nên backend cực nhẹ và hiệu năng cao. Bạn có thể deploy ngay lập tức bằng Docker:

docker run -d \
  -p 8080:80 \
  --name ivory \
  --restart unless-stopped \
  ghcr.io/veegres/ivory:latest

Sau đó truy cập qua: http://localhost:8080,

Lưu ý khi cấu hình lần đầu:

  • Secret Word: Nhớ kỹ từ này, quên là phải cài lại từ đầu đấy.
  • Authentication: Nếu public ra ngoài, nhớ chọn basic auth để đặt user/pass bảo vệ nhé.

Trải nghiệm các tính năng ăn tiền

019b3b60-a20e-7f6c-bcb0-fabe8d850793

Giao diện trực quan

Thay vì gõ lệnh trên terminal để xem server nào là Master, Ivory trực quan cực dễ hiểu:

  • Biết ngay node nào là Leader, node nào là Replica (Sync/Async).
  • Trạng thái Replication Lag được hiển thị realtime.

Đặc biệt, các thao tác Switchover (chuyển đổi Leader có kế hoạch) hay Failover (chuyển đổi khi có sự cố) được thực hiện chỉ bằng cú click chuột. Điểm cộng là tính năng Scheduled Switchover:

  • Chuyển đổi Master: Muốn đổi con server A sang B làm Master? Bấm một nút là xong.
  • Hẹn giờ chuyển đổi: Tính năng này cực xịn. Bạn có thể hẹn giờ Ivory tự động đổi Master lúc 3h sáng. Set lịch xong đi ngủ, không cần thức đêm canh me nữa.

Maintenance Mode

Khi cần thực hiện các tác vụ thủ công như OS Patching, minor version upgrade hay thay đổi phần cứng, nỗi sợ lớn nhất là Patroni hiểu nhầm node bị chết và kích hoạt auto-failover loạn xạ.

Ivory cho phép bạn toggle chế độ Pause và Resume cluster ngay trên giao diện.

  • Pause: Đóng băng trạng thái cluster trong DCS, vô hiệu hóa auto-failover. Bạn tha hồ stop service, restart server mà không lo Cluster bị split-brain hay failover ngoài ý muốn.
  • Resume: Trả lại quyền điều khiển cho Patroni sau khi bảo trì xong.

Dọn rác dữ liệu

Vấn đề muôn thuở của cơ chế MVCC trong PostgreSQL là Bloat (các dead tuples chiếm dụng dung lượng nhưng chưa được vacuum).

Ivory tích hợp sẵn khả năng hiển thị tỷ lệ Bloat của Tables và Indexes. Không chỉ dừng ở việc “nhìn”, nó còn tích hợp sâu với pgcompacttable để thực hiện compaction (nén/dọn dẹp dữ liệu) ngay trên UI. Quá trình này giúp thu hồi dung lượng đĩa về cho OS mà hạn chế tối đa việc gây lock lên database (khác với VACUUM FULL).

Sửa cấu hình tập trung

Quên việc phải SSH vào từng node để sửa file postgresql.conf hay patroni.yml. Ivory cho phép:

  • Sửa đổi DCS Configuration (cấu hình toàn cục cho cả cluster).
  • Điều chỉnh Local Configuration cho từng node riêng biệt.

Sau khi sửa, bạn có thể ra lệnh gửi tín hiệu SIGHUP để reload config nóng, hoặc thực hiện rolling restart các node nếu tham số yêu cầu khởi động lại, tất cả đều nằm trong tầm kiểm soát của giao diện.

Query Console

Ivory cung cấp một giao diện chạy SQL thông minh hiểu về kiến trúc Cluster của bạn:

  • Role Awareness: Nó cho phép bạn đánh label hoặc nhận diện query nào nên chạy trên Leader (Write), query nào an toàn để chạy trên Replica (Read-only/Reporting).
  • Template Repository: Bạn có thể lưu lại các câu lệnh troubleshooting hay dùng (ví dụ: check pg_stat_activity, check lock, check replication slots). Khi có sự cố (incident), chỉ cần load template ra và chạy, tiết kiệm thời gian gõ lệnh quý báu.

Kết luận

Ivory có thể không thay thế được sự linh hoạt tuyệt đối của dòng lệnh trong các ca khó, nhưng nó là một Management Plane tuyệt vời cho những các tác vụ vận hành hàng ngày. Nếu bạn đang quản lý nhiều cụm Patroni cùng lúc, việc dựng một instance Ivory sẽ giúp cuộc đời DBA của bạn “dễ thở” hơn rất nhiều.

Thông tin nổi bật

Sự kiện phát trực tiếp​

Event Thumbnail

Báo cáo quan trọng

Article Thumbnail
Article Thumbnail

Sự kiện đang hiện hành

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Tiêu điểm chuyên gia