Hướng dẫn triển khai GlusterFS trên 3 VPS giá rẻ để tạo hệ thống lưu trữ có độ sẵn sàng cao (HA)
1. Đặt vấn đề: Thách thức lưu trữ trong kỷ nguyên số và giải pháp VPS giá rẻ
Đối với các doanh nghiệp nhỏ, startup hoặc các nhà phát triển độc lập, việc đảm bảo dữ liệu của hệ thống luôn trực tuyến và không bị gián đoạn (High Availability - HA) là một bài toán hóc búa. Các giải pháp lưu trữ đám mây cao cấp như AWS EFS hay Google Cloud Filestore thường có chi phí vượt quá ngân sách ban đầu. Trong khi đó, nếu chỉ lưu trữ dữ liệu trên một VPS (Virtual Private Server) đơn lẻ, hệ thống sẽ đối mặt với rủi ro Single Point of Failure (SPOF) — nghĩa là nếu VPS đó gặp sự cố phần cứng hoặc network, toàn bộ ứng dụng của bạn sẽ ngừng hoạt động.
Để giải quyết bài toán này, xu hướng tối ưu hóa hiện nay là tận dụng các gói VPS giá rẻ từ các nhà cung cấp như DigitalOcean, Linode, Vultr hoặc các nhà cung cấp nội địa, kết hợp với một hệ thống tệp phân tán mạnh mẽ. Và GlusterFS chính là câu trả lời hoàn hảo giúp biến các tài nguyên riêng lẻ thành một khối lưu trữ thống nhất, an toàn và có khả năng chịu lỗi cao.
2. Tổng quan về GlusterFS: Tại sao lại là lựa chọn tối ưu?
GlusterFS là một hệ thống tệp phân tán mã nguồn mở (Distributed File System), có khả năng mở rộng lên đến hàng petabyte. Khác với các kiến trúc lưu trữ truyền thống phụ thuộc vào một máy chủ quản lý siêu dữ liệu (Metadata Server), GlusterFS sử dụng thuật toán băm đàn hồi (Elastic Hash Algorithm) để xác định vị trí dữ liệu trực tiếp. Điều này loại bỏ hoàn toàn nút thắt cổ chai về hiệu năng và nguy cơ sập toàn bộ hệ thống khi máy chủ quản lý metadata bị hỏng.
Khi triển khai trên cấu hình 3 VPS (Node), chúng ta sẽ sử dụng kiến trúc Replicated Volume (với hệ số sao chép bằng 3). Cơ chế này đảm bảo dữ liệu được ghi đồng thời lên cả 3 node độc lập. Nếu một hoặc thậm chí hai node gặp sự cố sập nguồn hoặc mất kết nối, node còn lại vẫn hoạt động bình thường, đảm bảo ứng dụng không bị gián đoạn truy cập dữ liệu.
Lưu ý kiến trúc: Tại sao lại là 3 VPS mà không phải là 2? Trong hệ thống phân tán, việc sử dụng số lượng node lẻ (tối thiểu là 3) là bắt buộc để giải quyết bài toán Split-Brain (hiện tượng phân rã não bộ khi các node mất kết nối với nhau và tự coi mình là master). Với 3 node, cơ chế bầu chọn quorum (đa số) sẽ hoạt động chính xác, đảm bảo tính nhất quán của dữ liệu.
3. Chuẩn bị hạ tầng và môi trường hệ thống
Trước khi bắt tay vào cấu hình, bạn cần chuẩn bị 3 VPS chạy hệ điều hành Ubuntu Server 22.04 LTS hoặc Rocky Linux 9 (trong bài viết này chúng tôi sử dụng Ubuntu). Các VPS nên nằm trong cùng một datacenter (hoặc vùng mạng có độ trễ thấp) để đảm bảo tốc độ đồng bộ dữ liệu tốt nhất.
Dưới đây là thông số giả định cho hệ thống:
- Node 1: IP Public:
192.168.1.10| Hostname:node1.gluster.local - Node 2: IP Public:
192.168.1.20| Hostname:node2.gluster.local - Node 3: IP Public:
192.168.1.30| Hostname:node3.gluster.local
Mỗi VPS cần có ít nhất một ổ đĩa phụ (ví dụ: /dev/sdb) dung lượng tùy chọn, chưa được định dạng, dùng riêng để làm phân vùng lưu trữ cho GlusterFS (gọi là Brick).
Bước 1: Cấu hình File Hosts
Đăng nhập vào từng VPS bằng quyền root và cập nhật file /etc/hosts để các node có thể phân giải tên miền của nhau:
192.168.1.10 node1.gluster.local node1
192.168.1.20 node2.gluster.local node2
192.168.1.30 node3.gluster.local node3Bước 2: Định dạng và gắn ổ đĩa lưu trữ
Thực hiện các lệnh sau trên cả 3 node để tạo phân vùng, định dạng file system XFS (khuyến nghị cho GlusterFS) và mount vào hệ thống:
- Tạo thư mục mount:
mkdir -p /mnt/glusterfs/brick1 - Định dạng ổ cứng phụ:
mkfs.xfs -f /dev/sdb - Gắn ổ cứng vào thư mục:
mount /dev/sdb /mnt/glusterfs/brick1 - Cấu hình tự động mount trong
/etc/fstabbằng cách thêm dòng sau:/dev/sdb /mnt/glusterfs/brick1 xfs defaults 0 0
4. Cài đặt và cấu hình Cluster GlusterFS từng bước
Bước 1: Cài đặt gói phần mềm GlusterFS
Thực hiện lệnh cập nhật và cài đặt GlusterFS Server trên cả 3 node:
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-11
sudo apt update
sudo apt install -y glusterfs-server
sudo systemctl start glusterd
sudo systemctl enable glusterdKiểm tra trạng thái dịch vụ bằng lệnh sudo systemctl status glusterd để đảm bảo dịch vụ đang chạy (active).
Bước 2: Thiết lập kết nối Cluster (Peering)
Đứng tại Node 1, thực hiện lệnh kết nối tới Node 2 và Node 3 để thiết lập cụm tin cậy (Trusted Storage Pool):
sudo gluster peer probe node2.gluster.local
sudo gluster peer probe node3.gluster.localSau khi chạy xong, hãy kiểm tra trạng thái kết nối bằng lệnh:
sudo gluster peer statusHệ thống sẽ hiển thị trạng thái "State: Peer in Cluster" cho các node còn lại, minh chứng cho việc kết nối thành công.
Bước 3: Khởi tạo Replicated Volume
Bây giờ, chúng ta sẽ tạo một phân vùng lưu trữ có tên là ha-volume phân tán qua cả 3 node với hệ số replica bằng 3. Chạy lệnh sau trên bất kỳ node nào:
sudo gluster volume create ha-volume replica 3 \
node1.gluster.local:/mnt/glusterfs/brick1/data \
node2.gluster.local:/mnt/glusterfs/brick1/data \
node3.gluster.local:/mnt/glusterfs/brick1/data forceKhởi động volume vừa tạo để sẵn sàng đưa vào sử dụng:
sudo gluster volume start ha-volumeKiểm tra thông tin chi tiết của volume bằng lệnh: sudo gluster volume info.
5. Mount và thử nghiệm tính năng sẵn sàng cao (High Availability)
Để sử dụng vùng lưu trữ này từ các máy chủ ứng dụng (Client), bạn chỉ cần cài đặt gói client sudo apt install glusterfs-client. Sau đó, tiến hành mount phân vùng vào thư mục cục bộ:
mkdir -p /mnt/storage-client
mount -t glusterfs node1.gluster.local:/ha-volume /mnt/storage-clientThử nghiệm kịch bản lỗi (Failover Test):
- Tại client, tạo một tệp thử nghiệm:
touch /mnt/storage-client/test-file.txt. - Kiểm tra trên cả 3 node tại thư mục
/mnt/glusterfs/brick1/data, bạn sẽ thấy file này xuất hiện đồng thời trên cả 3 VPS. - Tiến hành tắt hoàn toàn Node 1 (giả lập sự cố sập nguồn VPS).
- Quay lại máy client, thực hiện đọc ghi dữ liệu hoặc tạo file mới. Bạn sẽ thấy hệ thống hoàn toàn không bị gián đoạn, client tự động chuyển hướng truy vấn sang Node 2 hoặc Node 3 một cách trơn tru.
6. Khuyến nghị tối ưu hóa hiệu năng và bảo mật
Mặc dù GlusterFS hoạt động rất tốt trên VPS giá rẻ, việc cấu hình mặc định có thể chưa tối ưu hoàn toàn cho môi trường production. Dưới đây là các kỹ thuật nâng cao bạn nên áp dụng:
- Tối ưu hóa Network Latency: Vì GlusterFS phụ thuộc nặng nề vào băng thông mạng để đồng bộ dữ liệu, hãy ưu tiên chọn các nhà cung cấp VPS hỗ trợ mạng nội bộ (Private Network) tốc độ cao (1Gbps - 10Gbps) và cấu hình GlusterFS chạy trên dải IP nội bộ này.
- Cấu hình Timeout: Giảm thời gian chờ nhận diện node sập để client chuyển đổi nhanh hơn bằng lệnh:
sudo gluster volume set ha-volume network.ping-timeout 5 - Bảo mật tường lửa: Chỉ cho phép các IP của các node trong cụm và IP client truy cập vào các cổng của GlusterFS (mặc định là cổng 24007, 24008 và dải cổng động từ 49152 trở lên) bằng cách cấu hình
UFWhoặciptables.
7. Kết luận
Việc kết hợp 3 VPS giá rẻ với giải pháp lưu trữ phân tán GlusterFS mang lại một phương án tối ưu về cả chi phí lẫn tính an toàn dữ liệu cho các doanh nghiệp vừa và nhỏ. Bạn không còn phải lo lắng về việc mất mát dữ liệu hay sập hệ thống khi một máy chủ gặp sự cố, đồng thời dễ dàng mở rộng dung lượng trong tương lai chỉ bằng việc thêm các brick mới vào cụm. Hãy bắt tay vào triển khai ngay hôm nay để xây dựng một hạ tầng CNTT bền vững và đáng tin cậy!
