Xây Dựng Hệ Thống GitOps Tự Phục Hồi Sự Cố Trên Cụm K3s Và Keepalived Với VPS Giá Rẻ
Đặt Vấn Đề: Thách Thức Sẵn Sàng Cao Trên Hạ Tầng Tối Ưu Chi Phí
Trong kỷ nguyên chuyển đổi số, tính sẵn sàng cao (High Availability - HA) không còn là đặc quyền của các doanh nghiệp lớn với ngân sách hạ tầng khổng lồ. Các doanh nghiệp vừa và nhỏ (SMEs) hoặc các startup công nghệ luôn tìm kiếm giải pháp tối ưu hóa chi phí nhưng vẫn đảm bảo hệ thống vận hành liên tục, giảm thiểu thời gian chết (downtime). Xây dựng một cụm Kubernetes tiêu chuẩn trên các nhà cung cấp cloud lớn (AWS, Google Cloud, Azure) thường đi kèm chi phí rất cao cho các dịch vụ Managed Kubernetes và Load Balancer đám mây.
Để giải quyết bài toán này, phương án sử dụng cụm VPS giá rẻ kết hợp với K3s — một bản phân phối Kubernetes siêu nhẹ từ Rancher — nổi lên như một giải pháp thay thế hoàn hảo. Tuy nhiên, thách thức lớn nhất khi tự triển khai trên VPS giá rẻ là thiếu vắng các bộ cân bằng tải động (Cloud Load Balancers) để chuyển dịch traffic tự động khi node Master gặp sự cố. Bài viết này sẽ hướng dẫn bạn cách giải quyết triệt để vấn đề này bằng cách kết hợp Keepalived (tạo IP ảo VIP) và mô hình dịch chuyển hạ tầng theo triết lý GitOps, giúp hệ thống không chỉ đạt tính sẵn sàng cao mà còn có khả năng tự phục hồi tự động khi có sự cố xảy ra.
Kiến Trúc Tổng Quan Của Hệ Thống Sẵn Sàng Cao
Hệ thống tự phục hồi của chúng ta được cấu thành từ ba lớp thành phần cốt lõi, hoạt động phối hợp chặt chẽ:
- Lớp Điều Phối Hạ Tầng (Keepalived): Hoạt động ở tầng Network để cung cấp một IP ảo duy nhất (Virtual IP - VIP). Khi một VPS đóng vai trò Master Node bị sập, Keepalived tự động chuyển giao VIP này sang Master Node dự phòng trong vài giây mà không làm gián đoạn kết nối của người dùng.
- Lớp Tính Toán & Cụm Cluster (K3s Multi-Master): Bản phân phối Kubernetes rút gọn nhưng đầy đủ tính năng, cấu hình theo mô hình High Availability với database tích hợp (như embedded etcd hoặc sử dụng một cụm DB ngoại vi tương thích).
- Lớp Đồng Bộ & Tự Phục Hồi Ứng Dụng (GitOps với ArgoCD): Định nghĩa toàn bộ trạng thái hệ thống (hạ tầng, ứng dụng, network) trong kho lưu trữ Git. ArgoCD liên tục giám sát và tự động đồng bộ hóa (Auto-Sync) cũng như tự sửa chữa (Self-Healing) khi phát hiện trạng thái thực tế của cluster bị lệch lệch so với cấu hình cấu trúc trong Git.
Triết lý cốt lõi ở đây là: Keepalived chịu trách nhiệm cứu vãn tầng mạng và kết nối cluster, K3s đảm bảo tính toàn vẹn của ứng dụng, và GitOps bảo vệ trạng thái mong muốn của toàn hệ thống trước mọi biến động cấu hình vô ý hoặc sự cố phần cứng.
Hướng Dẫn Triển Khai Chi Tiết Qua Các Bước
Bước 1: Cấu hình High Availability Network với Keepalived
Giả sử chúng ta có 2 Node VPS Master: Master-01 (192.168.1.10) và Master-02 (192.168.1.11). Chúng ta sẽ cấu hình một Virtual IP chung là 192.168.1.100.
Cài đặt Keepalived trên cả hai node bằng lệnh:
sudo apt-get update && sudo apt-get install -y keepalivedCấu hình tệp tin /etc/keepalived/keepalived.conf trên Master-01 (Node chính):
vrrp_script check_k3s {
script "pgrep k3s"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass MySecretPass
}
virtual_ipaddress {
192.168.1.100
}
track_script {
check_k3s
}
}Đối với Master-02, cấu hình tương tự nhưng thay đổi state MASTER thành state BACKUP và giảm priority xuống 100. Khởi động lại dịch vụ để áp dụng thay đổi: sudo systemctl restart keepalived. Lúc này, mọi traffic gửi đến IP 192.168.1.100 sẽ tự động được điều hướng đến node đang giữ quyền MASTER.
Bước 2: Triển khai cụm K3s HA Cluster qua Virtual IP
Sau khi IP ảo hoạt động ổn định, chúng ta tiến hành khởi tạo cụm K3s trên Node Master-01, trỏ cấu hình API Server đến Virtual IP đã thiết lập để đảm bảo các node worker luôn kết nối được kể cả khi Master-01 chết:
curl -sfL https://get.k3s.io | sh -s - server \
--cluster-init \
--tls-san 192.168.1.100Sau khi hoàn tất, lấy token kết nối và khởi chạy K3s trên Master-02 để tham gia vào cụm sẵn sàng cao:
curl -sfL https://get.k3s.io | sh -s - server \
--server https://192.168.1.100:6443 \
--token \
--tls-san 192.168.1.100 Bước 3: Tích hợp GitOps và kích hoạt tính năng Tự Phục Hồi (Self-Healing)
Khi cụm K3s đã chạy ổn định với mô hình HA mạng, chúng ta cài đặt ArgoCD để hiện thực hóa quy trình GitOps. Sử dụng chính Virtual IP để kết nối và quản trị cụm cluster từ xa.
Triển khai ứng dụng thông qua một tệp manifest của ArgoCD Application, trong đó bắt buộc phải kích hoạt tính năng tự động đồng bộ và tự sửa chữa:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: core-infrastructure-app
namespace: argocd
spec:
project: default
source:
repoURL: 'https://github.com/your-organization/gitops-infra.git'
targetRevision: HEAD
path: manifests/production
destination:
server: 'https://kubernetes.default.svc'
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: trueKhi thuộc tính selfHeal: true được thiết lập, nếu có bất kỳ sự thay đổi ngoài ý muốn nào diễn ra trên cụm K3s (ví dụ: một kỹ sư vô tình xóa một Deployment, hoặc cấu hình Pod bị thay đổi thủ công do sự cố lỗi phần cứng cục bộ), ArgoCD sẽ ngay lập tức phát hiện sự sai lệch (Out-of-Sync) và tự động kéo cấu hình chuẩn từ Git về để đè lên, đưa hệ thống trở lại trạng thái an toàn chỉ trong vài giây.
Kịch Bản Thử Nghiệm Giả Định Sự Cố Hạ Tầng
Để minh chứng cho sức mạnh tự phục hồi của hệ thống kết hợp này, hãy cùng phân tích kịch bản khi một VPS Master đột ngột mất điện hoàn toàn:
- Giây thứ 1-2: Node Master-01 (đang giữ IP ảo 192.168.1.100) chết đột ngột. Keepalived trên Master-02 không nhận được gói tin quảng bá (advertisement package) từ Master-01.
- Giây thứ 3: Keepalived trên Master-02 tự động thăng cấp thành MASTER và gán Virtual IP 192.168.1.100 vào interface mạng của mình. Các Worker Node kết nối tới API Server không bị mất kết nối lâu, dòng traffic ngoại vi đổ vào hệ thống hoàn toàn thông suốt thông qua Master-02.
- Giây thứ 10: K3s nhận diện được sự sụp đổ của các Pod nằm trên node bị lỗi, tự động lập lịch tái khởi chạy các Pod đó trên các VPS Worker còn sống sót.
- Giây thứ 30: ArgoCD kiểm tra định kỳ trạng thái, nhận thấy cấu hình thực tế có sự xáo trộn hoặc thiếu sót, kích hoạt cơ chế Self-Healing tái lập toàn bộ hạ tầng mạng Ingress, ConfigMap và các tài nguyên ứng dụng đúng chuẩn mực lưu trữ trên Git.
Ưu Điểm Vượt Trội Và Kết Luận
Sự kết hợp giữa Keepalived, K3s và triết lý GitOps mang lại một giải pháp hạ tầng mang tính đột phá cho các doanh nghiệp có ngân sách tối ưu:
- Tiết kiệm tối đa chi phí: Không cần sử dụng các bộ cân bằng tải đắt đỏ từ nhà cung cấp điện toán đám mây lớn, giảm chi phí vận hành hàng tháng lên tới 70-80%.
- Khả năng chịu lỗi xuất sắc: Loại bỏ hoàn toàn điểm lỗi đơn nhất (Single Point of Failure - SPOF) ở cả tầng mạng lẫn tầng ứng dụng.
- Quản trị hiện đại: Mọi thay đổi đều được ghi vết (Audit Log) trên Git, việc nâng cấp hay hạ cấp hệ thống trở nên dễ dàng và an toàn tuyệt đối.
Việc làm chủ công nghệ và xây dựng hệ thống tự phục hồi trên cụm VPS giá rẻ là bước đệm vững chắc giúp doanh nghiệp tối ưu chi phí hạ tầng, nâng cao năng lực cạnh tranh và đảm bảo trải nghiệm người dùng luôn ở mức cao nhất.
