Quay lại danh sách
Tin tức công nghệ

Xây Dựng Hệ Thống GitOps Tự Phục Hồi (Self-Healing) Bằng Keepalived Và K3s Trên Cụm VPS Giá Rẻ

29 tháng 5, 2026

Đặt vấn đề: Thách thức độ sẵn sàng cao (High Availability) trên hạ tầng giá rẻ

Trong kỷ nguyên số, việc duy trì hệ thống hoạt động liên tục (24/7) là yếu tố sống còn đối với mọi doanh nghiệp. Tuy nhiên, đối với các doanh nghiệp vừa và nhỏ (SMEs) hoặc các startup, chi phí đầu tư vào các dịch vụ đám mây lớn như AWS, Google Cloud hay Microsoft Azure để có được tính năng High Availability (HA) và giải pháp GitOps toàn diện là một gánh nặng tài chính không nhỏ. Việc thuê các dịch vụ Managed Kubernetes thường đi kèm với chi phí ẩn và giá thành cấu hình rất cao.

Một giải pháp thay thế phổ biến là sử dụng các Virtual Private Server (VPS) giá rẻ từ các nhà cung cấp như DigitalOcean, Linode, Vultr hoặc thậm chí là các nhà cung cấp hạ tầng tại Việt Nam. Thế nhưng, hạ tầng giá rẻ lại luôn đi kèm với rủi ro: phần cứng dùng chung dễ lag, mạng thiếu ổn định, và không có sẵn các bộ cân bằng tải (Load Balancer) phần cứng để điều hướng traffic khi một node bị sập. Làm thế nào để chúng ta vừa tiết kiệm chi phí, vừa sở hữu một hệ thống GitOps tự phục hồi sự cố (Self-Healing) mạnh mẽ? Câu trả lời nằm ở sự kết hợp linh hoạt giữa Keepalived và K3s.

1. Kiến trúc giải pháp: Sự giao thoa giữa Keepalived, K3s và GitOps

Để hiểu rõ cách hệ thống vận hành và tự sửa chữa khi có sự cố, chúng ta cần phân tích ba thành phần cốt lõi của kiến trúc này:

  • K3s (Lightweight Kubernetes): Là phiên bản tối giản của Kubernetes do Rancher phát triển. K3s loại bỏ các gói mã nguồn không cần thiết, tối ưu hóa bộ nhớ (chỉ cần dưới 512MB RAM cho một tiến trình), rất phù hợp để chạy trên các VPS cấu hình thấp nhưng vẫn giữ nguyên vẹn API và sức mạnh của Kubernetes tiêu chuẩn.
  • Keepalived (Virtual IP - VIP): Sử dụng giao thức VRRP (Virtual Router Redundancy Protocol). Keepalived cho phép chúng ta cấu hình một địa chỉ IP ảo (VIP) chung cho nhiều VPS. Tại một thời điểm, IP này sẽ trỏ về node Master chính (Master 1). Nếu node này sập, Keepalived tự động phát hiện và chuyển IP ảo sang node dự phòng (Master 2) chỉ trong vài giây mà không làm gián đoạn luồng truy cập của người dùng.
  • GitOps (ArgoCD / FluxCD): Mô hình vận hành quản lý hạ tầng bằng code (Infrastructure as Code). Mọi trạng thái mong muốn của ứng dụng được khai báo trong kho lưu trữ Git (Git repository). Một agent bên trong K3s liên tục đồng bộ hóa và ép buộc hệ thống thực tế phải giống 100% với cấu hình trong Git.
Kiến trúc này tạo ra một vòng lặp tự phục hồi khép kín: Keepalived bảo vệ tầng mạng và điều phối hạ tầng (Infrastructure Level), trong khi K3s kết hợp GitOps bảo vệ tầng ứng dụng (Application Level).

2. Các bước triển khai chi tiết trên cụm VPS

Bước 1: Chuẩn bị hạ tầng VPS và cài đặt Keepalived

Giả sử chúng ta có 3 VPS giá rẻ chạy Ubuntu Server trong cùng một dải mạng nội bộ (LAN):

  • VPS-01 (Master 1): IP 192.168.1.10
  • VPS-02 (Master 2): IP 192.168.1.11
  • VPS-03 (Worker 1): IP 192.168.1.12
  • Virtual IP (VIP) mong muốn: 192.168.1.100

Đầu tiên, tiến hành 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 (đặt độ ưu tiên priority 101) và trên Master 2 (đặt độ ưu tiên priority 100). Khởi động lại dịch vụ để Virtual IP 192.168.1.100 được gắn vào giao diện mạng của Master 1.

Bước 2: Khởi tạo cụm K3s High Availability với database tích hợp

Thay vì sử dụng một database bên ngoài như MySQL hay PostgreSQL làm datastore cho K3s (gây tốn thêm chi phí VPS), chúng ta sẽ sử dụng Embedded ETCD có sẵn trong K3s để đồng bộ hóa dữ liệu trạng thái giữa các master.

Trên Master 1, chạy lệnh khởi tạo cụm với IP ảo làm endpoint điều khiển:

curl -sfL https://get.k3s.io | sh -s - server --cluster-init --tls-san 192.168.1.100

Sau khi Master 1 khởi chạy thành công, lấy token bảo mật và tiến hành gia nhập Master 2 vào cụm bằng lệnh tương tự nhưng trỏ về Master 1. Cuối cùng, kết nối các Worker node vào cụm để mở rộng tài nguyên tính toán cho ứng dụng.

Bước 3: Triển khai công cụ GitOps (ArgoCD)

Khi cụm K3s HA đã sẵn sàng hoạt động ổn định qua IP ảo, chúng ta sẽ cài đặt ArgoCD để thiết lập quy trình GitOps. ArgoCD sẽ theo dõi kho lưu trữ mã nguồn của bạn trên GitHub/GitLab và tự động cập nhật các tài nguyên Kubernetes.

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

3. Cơ chế tự phục hồi sự cố (Self-Healing) hoạt động như thế nào?

Sức mạnh thực sự của hệ thống này nằm ở kịch bản xử lý sự cố hoàn toàn tự động mà không cần sự can thiệp của kỹ sư hệ thống (Zero-human intervention):

Kịch bản 1: Một VPS Master đột ngột bị sập (Lỗi phần cứng, mất mạng)
Ngay khi VPS-01 (Master chính) gặp sự cố, tiến trình Keepalived trên VPS-02 sẽ không nhận được gói tin heartbeat định kỳ. Trong vòng chưa đầy 3 giây, VPS-02 tự động chiếm quyền điều khiển và gán địa chỉ Virtual IP (192.168.1.100) vào card mạng của mình. Toàn bộ các Worker node và công cụ GitOps ArgoCD kết nối tới api-server thông qua VIP này sẽ tiếp tục hoạt động bình thường, không hề bị gián đoạn tiến trình quản lý.

Kịch bản 2: Ứng dụng bị sập hoặc cấu hình sai do tác động vô ý
Nếu một pod ứng dụng bị crash do lỗi code hoặc ai đó vô tình dùng lệnh kubectl delete để xóa tài nguyên trên cụm, cơ chế Self-Healing của K3s kết hợp GitOps sẽ kích hoạt. ArgoCD phát hiện trạng thái thực tế của cụm (Actual State) bị sai lệch so với file cấu hình gốc trên Git (Desired State). Nó lập tức kích hoạt tiến trình Auto-Sync, tự động tải lại cấu hình chuẩn và tạo lại các Pod bị thiếu, đưa hệ thống về trạng thái an toàn trong vài giây.

4. Đánh giá ưu điểm và một số lưu ý tối ưu chi phí

Mô hình kết hợp Keepalived + K3s + GitOps mang lại những giá trị vượt trội cho các dự án tối ưu chi phí:

  • Tiết kiệm tối đa: Bạn không cần mua thêm dịch vụ Cloud Load Balancer (tốn từ $15-$30/tháng). Bạn cũng không cần hệ thống máy chủ lưu trữ dữ liệu cồng kềnh nhờ tận dụng tối đa tài nguyên của các VPS giá rẻ.
  • Tự động hóa tuyệt đối: Loại bỏ hoàn toàn các lỗi thao tác bằng tay (Human error). Mọi thay đổi hạ tầng đều được lưu vết lịch sử rõ ràng trên Git (Audit log).
  • Khả năng mở rộng tốt: Khi nhu cầu tải tăng cao, bạn chỉ cần mua thêm các VPS Worker giá rẻ và join vào cụm K3s chỉ bằng một dòng lệnh duy nhất.

Lưu ý quan trọng khi triển khai: Vì chúng ta đang vận hành trên các VPS giá rẻ, hãy cấu hình giới hạn tài nguyên (Resource Requests/Limits) cho từng ứng dụng một cách chặt chẽ để tránh hiện tượng một ứng dụng bị rò rỉ bộ nhớ (Memory leak) làm sập toàn bộ Node. Đồng thời, hãy thiết lập giám sát (Monitoring) bằng Prometheus và Grafana nhẹ để luôn kiểm soát được dung lượng đĩa cứng và băng thông mạng nội bộ giữa các VPS.

Kết luận

Xây dựng một hệ thống có tính sẵn sàng cao và tự phục hồi không còn là đặc quyền của các doanh nghiệp lớn với ngân sách khổng lồ. Bằng cách kết hợp khéo léo giữa Keepalived, cụm K3s HA và triết lý GitOps, bạn hoàn toàn có thể tự tay thiết lập một hạ tầng chuẩn doanh nghiệp (Enterprise-grade) trên các cụm VPS giá rẻ. Đây là bước đi chiến lược giúp tối ưu hóa chi phí vận hành, nâng cao độ ổn định của sản phẩm và giải phóng thời gian cho đội ngũ kỹ sư tập trung vào phát triển tính năng cốt lõi.

Xây Dựng Hệ Thống GitOps Tự Phục Hồi (Self-Healing) Bằng Keepalived Và K3s Trên Cụm VPS Giá Rẻ | DPTCloud