Xây dựng Hệ thống GitOps Tự Phục Hồi Sự Cố Hạ Tầng Bằng Giải Pháp Keepalived và Cụm K3s Trên VPS Giá Rẻ
Giới Thiệu Về Xu Hướng GitOps Và Thách Thức Trên Hạ Tầng Giá Rẻ
Trong kỷ nguyên chuyển đổi số, GitOps đã trở thành một tiêu chuẩn vàng cho việc quản lý cấu hình và triển khai ứng dụng. Bằng cách sử dụng Git làm nguồn chân lý duy nhất (Single Source of Truth), các đội ngũ vận hành có thể tự động hóa toàn bộ quy trình CI/CD. Tuy nhiên, một thách thức lớn đối với các doanh nghiệp khởi nghiệp hoặc các dự án nhỏ là chi phí hạ tầng. Việc triển khai các cụm Kubernetes lớn (như EKS, GKE) trên các nhà cung cấp cloud lớn đòi hỏi ngân sách không hề nhỏ.
Giải pháp thay thế là sử dụng các máy chủ ảo (VPS) giá rẻ. Nhưng hạ tầng giá rẻ thường đi kèm với rủi ro về độ ổn định. Làm thế nào để đảm bảo một hệ thống GitOps hoạt động liên tục, có khả năng tự phục hồi sự cố (Self-healing) mà không tốn kém? Câu trả lời nằm ở sự kết hợp kiến trúc thông minh giữa K3s - phiên bản Kubernetes siêu nhẹ - và Keepalived - giải pháp tạo IP ảo (VIP) để cân bằng tải và dự phòng lỗi.
Kiến Trúc Tổng Quan: K3s Kết Hợp Keepalived
Để xây dựng một hệ thống GitOps tự phục hồi trên VPS giá rẻ, chúng ta cần một kiến trúc High Availability (HA) tối giản nhưng mạnh mẽ. Kiến trúc này bao gồm hai thành phần cốt lõi xử lý hai tầng khác nhau:
- K3s (Kubernetes): Chịu trách nhiệm quản lý vòng đời của ứng dụng, tự động deploy lại các Pod bị lỗi và đồng bộ trạng thái từ Git thông qua các GitOps Controller như ArgoCD hoặc FluxCD.
- Keepalived (Tầng Hạ Tầng): Chịu trách nhiệm giám sát trạng thái của các node VPS. Nếu node Master chính gặp sự cố vật lý hoặc mất mạng, Keepalived sẽ tự động chuyển Virtual IP (VIP) sang node Master dự phòng trong vài giây mà không làm gián đoạn luồng GitOps.
Nhờ cơ chế này, hệ thống đạt được khả năng tự phục hồi kép: ứng dụng tự phục hồi nhờ K3s, và hạ tầng điều khiển tự phục hồi nhờ Keepalived.
Các Bước Triển Khai Chi Tiết Hệ Thống
Bước 1: Chuẩn Bị Hạ Tầng VPS
Bạn cần chuẩn bị ít nhất 3 Cloud VPS giá rẻ (ví dụ từ các nhà cung cấp như DigitalOcean, Linode, hoặc các nhà cung cấp nội địa) nằm trong cùng một mạng nội bộ (Private Network):
- Node Master 1 (Primary): IP 192.168.1.10
- Node Master 2 (Backup): IP 192.168.1.11
- Virtual IP (VIP): 192.168.1.100 (IP này sẽ do Keepalived quản lý)
Bước 2: Cấu Hình Keepalived Để Tạo IP Ảo (VIP)
Cài đặt Keepalived trên cả hai node Master bằng lệnh:
sudo apt-get update && sudo apt-get install -y keepalived
Cấu hình tệp tin /etc/keepalived/keepalived.conf trên Master 1 với độ ưu tiên (priority) cao hơn (ví dụ: 101) và cấu hình tương tự trên Master 2 với độ ưu tiên thấp hơn (ví dụ: 100). Khi cấu hình hoàn tất, khởi động dịch vụ Keepalived. Lúc này, Virtual IP (192.168.1.100) sẽ tự động gán vào giao tiếp mạng của Master 1.
Bước 3: Cài Đặt Cụm K3s High Availability
Thay vì sử dụng IP tĩnh của từng máy, chúng ta sẽ khởi tạo cụm K3s thông qua Virtual IP do Keepalived cung cấp. Điều này đảm bảo các Agent và GitOps Tool luôn kết nối đến một Endpoint duy nhất.
Chạy lệnh cài đặt K3s trên Master 1:curl -sfL [https://get.k3s.io](https://get.k3s.io) | sh -s - server --cluster-init --tls-san 192.168.1.100
Sau đó, tiến hành join Master 2 vào cụm bằng cách sử dụng token được tạo ra từ Master 1. Hệ thống K3s lúc này sẽ chạy dưới dạng Multi-Master nhúng cơ sở dữ liệu etcd nội bộ.
Tích Hợp Quy Trình GitOps Tự Phục Hồi Với ArgoCD
Sau khi hạ tầng K3s + Keepalived đã sẵn sàng, bước tiếp theo là cài đặt công cụ GitOps. Trong bài viết này, chúng ta sử dụng ArgoCD.
ArgoCD sẽ được triển khai trực tiếp vào cụm K3s. Chúng ta kết nối ArgoCD với một kho lưu trữ Git chứa toàn bộ manifest định nghĩa hạ tầng và ứng dụng. Cơ chế tự phục hồi (Self-healing) của GitOps được kích hoạt thông qua tính năng Automated Sync Policy của ArgoCD:
spec:
syncPolicy:
automated:
prune: true
selfHeal: trueKhi tính năng selfHeal được bật, nếu có bất kỳ ai vô tình sửa đổi cấu hình trên cụm K3s bằng lệnh thủ công (kubectl), ArgoCD sẽ ngay lập tức phát hiện sự sai lệch (drift) so với Git và tự động ghi đè, đưa hệ thống về trạng thái chuẩn xác được định nghĩa trong Git.
Kịch Bản Thử Nghiệm Phục Hồi Sự Cố (Failover Test)
Để chứng minh tính hiệu quả của hệ thống, chúng ta hãy giả lập một sự cố nghiêm trọng: Node Master 1 bị sập hoàn toàn.
- Phản ứng của Keepalived: Ngay khi Master 1 mất kết nối, Keepalived trên Master 2 sẽ phát hiện và lập tức chiếm quyền sở hữu Virtual IP (192.168.1.100). Quá trình này diễn ra trong vòng dưới 3 giây.
- Phản ứng của K3s: Các dịch vụ API Server vẫn hoạt động bình thường trên Master 2 thông qua VIP. Các ứng dụng (Pods) đang chạy trên các node worker không bị ảnh hưởng.
- Phản ứng của GitOps: ArgoCD tiếp tục chạy trên node còn sống, liên tục giám sát Git. Nếu trong quá trình sập node, có một phiên bản mã nguồn mới được push lên Git, ArgoCD vẫn tiến hành cập nhật ứng dụng lên hạ tầng mà không gặp bất kỳ trở ngại nào.
Kết quả là hệ thống duy trì tính sẵn sàng tối đa gần như 100% mà người dùng cuối không hề nhận ra sự cố ở tầng hạ tầng vật lý.
Kết Luận Và Lời Khuyên Tối Ưu Chi Phí
Việc kết hợp giữa Keepalived và K3s là một giải pháp kiến trúc xuất sắc dành cho những ai muốn tiếp cận công nghệ GitOps tiên tiến nhưng có nguồn ngân sách hạn chế. Giải pháp này giúp loại bỏ điểm lỗi duy nhất (Single Point of Failure) ở cả tầng mạng lẫn tầng điều khiển container.
Để tối ưu hóa hơn nữa, doanh nghiệp nên lưu ý một số điểm sau: đầu tiên, hãy đảm bảo các VPS có độ trễ mạng thấp (ping thấp) để etcd đồng bộ dữ liệu mượt mà. Thứ hai, hãy thiết lập các công cụ giám sát nhẹ nhàng như Prometheus và Grafana để theo dõi dung lượng RAM/CPU của VPS giá rẻ, tránh tình trạng quá tải cục bộ. Với mô hình này, bạn hoàn toàn có thể tự tin vận hành các hệ thống Production vừa và nhỏ một cách an toàn và tiết kiệm.
