Back to articles
Technology Insight

Xây Dựng Cluster Lưu Trữ S3-Compatible Phân Tán Bằng Garage Trên VPS Giá Rẻ Địa Lý Khác Nhau

June 3, 2026

Giới thiệu xu hướng tối ưu hóa chi phí Object Storage cho doanh nghiệp

Trong kỷ nguyên số, dữ liệu được ví như nguồn dầu mỏ mới của doanh nghiệp. Tuy nhiên, chi phí lưu trữ dữ liệu phình to trên các dịch vụ đám mây lớn như AWS S3, Google Cloud Storage hay Azure Blob đang trở thành một gánh nặng tài chính không nhỏ, đặc biệt là đối với các startup và doanh nghiệp vừa và nhỏ (SMEs). Mặc dù các dịch vụ S3-compatible lưu trữ giá rẻ đã xuất hiện, nhưng việc phụ thuộc vào một nhà cung cấp duy nhất luôn tiềm ẩn rủi ro về downtime hoặc mất an toàn dữ liệu do sự cố phần cứng khu vực.

Giải pháp tối ưu nhất là tự xây dựng một hệ thống lưu trữ phân tán, tận dụng các tài nguyên VPS giá rẻ từ nhiều nhà cung cấp và vị trí địa lý khác nhau (Multicloud / Multi-region). Để hiện thực hóa điều này mà không cần đến hạ tầng phần cứng khủng hay đội ngũ vận hành phức tạp, Garage Object Storage nổi lên như một ứng viên xuất sắc nhất hiện nay.

Garage Object Storage là gì và tại sao lại tối ưu trên VPS giá rẻ?

Garage là một hệ thống lưu trữ đối tượng (Object Storage) mã nguồn mở, gọn nhẹ, được viết hoàn toàn bằng ngôn ngữ Rust và tương thích hoàn toàn với Amazon S3 API. Điểm đặc biệt khiến Garage vượt trội hơn hẳn so với MinIO hay Ceph trong kịch bản này là nó được thiết kế ngay từ đầu cho các cụm máy chủ phân tán có độ trễ mạng cao và phần cứng không đồng nhất.

  • Kiến trúc gọn nhẹ: Không như MinIO yêu cầu tài nguyên lớn hoặc Ceph cần cả một đội ngũ chuyên gia vận hành, Garage chạy mượt mà chỉ với 1 GB RAM và CPU đời cũ.
  • Chịu lỗi địa lý cao (Geo-resilience): Cơ chế nhân bản (replication) của Garage tự động phân chia các mảnh dữ liệu (chunks) đồng đều qua 3 phân vùng (Zones) khác nhau, đảm bảo dữ liệu sống sót ngay cả khi một trung tâm dữ liệu hoặc một nhà cung cấp VPS bị sập hoàn toàn.
  • Mô hình đồng nhất yếu (Weak consistency model): Phù hợp hoàn hảo khi kết nối các VPS qua mạng Internet công cộng với độ trễ biến động, giúp hệ thống không bị nghẽn khi một node gặp sự cố mạng tạm thời.

Chuẩn bị hạ tầng VPS và Mô hình Lab kết nối

Để xây dựng một cluster tối thiểu đạt chuẩn production có khả năng chịu lỗi, chúng ta cần chuẩn bị ít nhất 3 VPS nằm ở các khu vực địa lý hoặc nhà cung cấp khác nhau nhằm tạo ra 3 Zones độc lập:

Tên NodeVị Trí Địa Lý / Nhà Cung CấpCấu Hình Tối ThiểuVai Trò Layout
node-tokyoTokyo (Linode / Akamai)1 Core CPU, 1GB RAM, 20GB SSDZone: jp-tokyo
node-singaporeSingapore (DigitalOcean)1 Core CPU, 1GB RAM, 20GB SSDZone: sg-sin
node-frankfurtFrankfurt (Hetzner)1 Core CPU, 2GB RAM, 20GB SSDZone: eu-ger

Lưu ý quan trọng về mạng bảo mật: Các node Garage kết nối nội bộ thông qua cổng mạng RPC (mặc định là 3901). Để đảm bảo an toàn tuyệt đối qua môi trường Internet, bạn nên thiết lập một mạng VPN nội bộ bằng WireGuard hoặc Tailscale giữa 3 VPS này, thay vì mở công khai cổng RPC ra toàn thế giới.

Hướng dẫn từng bước cấu hình Cluster Garage phân tán

Bước 1: Cài đặt Garage Binary trên các VPS

Vì Garage được biên dịch dưới dạng một file binary tĩnh duy nhất (Single Static Binary), việc cài đặt cực kỳ đơn giản trên mọi bản phân phối Linux như Ubuntu hay Debian. Thực hiện lệnh sau trên cả 3 VPS:

sudo wget https://garagehq.deuxfleurs.fr/_releases/v1.0.1/x86_64-unknown-linux-musl/garage -O /usr/local/bin/garage
sudo chmod +x /usr/local/bin/garage
# Tạo thư mục lưu cấu hình và dữ liệu
sudo mkdir -p /etc/garage /var/lib/garage/meta /var/lib/garage/data

Bước 2: Tạo File Cấu Hình garage.toml

Mỗi node sẽ cần một file cấu hình riêng tại đường dẫn /etc/garage/garage.toml. Dưới đây là mẫu cấu hình chuẩn cho node-tokyo. Hãy thay đổi các tham số IP tương ứng cho các node còn lại:

metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "sqlite"
replication_factor = 3

[rpc]
bind_addr = "[::]:3901"
# Địa chỉ IP public (hoặc IP VPN Wireguard) để các node khác kết nối tới
rpc_public_addr = "1.2.3.4:3901"
# Tạo một chuỗi bí mật dài 32 ký tự bằng lệnh: openssl rand -hex 16
rpc_secret = "b3c6237c9a4ef3d21b0123456789abcdef"

[s3_api]
s3_region = "ap-southeast-1"
api_bind_addr = "[::]:3900"

[admin]
api_bind_addr = "[::]:3903"
admin_token = "your_secure_admin_token_here"

Lưu ý: rpc_secret phải giống nhau hoàn toàn trên tất cả các node trong cùng một cluster để chúng có thể xác thực và bắt tay kết nối với nhau.

Bước 3: Khởi chạy dịch vụ Garage

Bạn có thể quản lý Garage dễ dàng bằng cách tạo một file dịch vụ Systemd (/etc/systemd/system/garage.service) để hệ thống tự động chạy khi khởi động VPS. Sau đó, khởi chạy dịch vụ bằng lệnh:

sudo systemctl daemon-reload
sudo systemctl enable --now garage
sudo systemctl status garage

Kết nối Cluster và Phân bổ tài nguyên Hệ thống (Layout Management)

Sau khi cả 3 node đã hoạt động và kết nối được với nhau thông qua mạng RPC, bước tiếp theo là cấu hình sơ đồ topology hình học (Layout) của Cluster. Khác với các hệ thống thông thường, Garage sử dụng cơ chế thiết lập layout theo phiên bản để tránh việc vô tình rebalance dữ liệu gây nghẽn mạng.

Đứng từ bất kỳ một node nào, thực hiện chuỗi lệnh sau để gán vùng địa lý (Zone) và dung lượng lưu trữ dự kiến (Capacity) cho từng máy chủ:

# Lấy danh sách ID của các node hiện tại
garage node status

# Gán cấu hình layout cho Node Tokyo
garage layout assign  --zone jp-tokyo --capacity 10G

# Gán cấu hình layout cho Node Singapore
garage layout assign  --zone sg-sin --capacity 10G

# Gán cấu hình layout cho Node Frankfurt
garage layout assign  --zone eu-ger --capacity 10G

Kiểm tra lại xem cấu hình layout đã đúng ý định chưa bằng lệnh garage layout show. Nếu mọi thứ đã chuẩn xác, tiến hành áp dụng thay đổi để kích hoạt cluster bằng lệnh sau:

garage layout apply --version 1

Ngay lập tức, hệ thống sẽ đồng bộ và thiết lập cơ chế nhân bản chéo qua cả 3 nhà cung cấp hạ tầng khác nhau.

Tạo Bucket S3 và kết nối ứng dụng thực tế

Khi Cluster đã ở trạng thái Healthy, việc sử dụng hoàn toàn tương tự như bạn đang thao tác với AWS S3 thông thường. Hãy tạo thông tin xác thực và không gian lưu trữ cho ứng dụng của bạn:

# 1. Tạo một cặp mã khóa truy cập (Access Key / Secret Key)
garage key create my-app-key

# 2. Tạo một Bucket mới để chứa file dữ liệu
garage bucket create my-company-backups

# 3. Phân quyền cho Key vừa tạo có quyền đọc/ghi trên Bucket
garage bucket allow my-company-backups --key my-app-key

Giờ đây, bạn có thể cấu hình ứng dụng của mình (WordPress, Nextcloud, Rclone, hoặc mã nguồn Laravel/NodeJS) trỏ đến IP của một trong các VPS tại cổng 3900 với thông tin Key vừa tạo. Hệ thống sẽ tự động nhân bản dữ liệu ngầm ra toàn thế giới một cách mượt mà và an toàn.

Kết luận và các lưu ý tối ưu vận hành

Việc kết hợp giải pháp lưu trữ đối tượng mã nguồn mở Garage cùng với hạ tầng VPS giá rẻ đa vị trí địa lý mở ra một hướng đi đột phá cho các kỹ sư hệ thống và doanh nghiệp. Phương pháp này không chỉ cắt giảm tới 70-80% chi phí so với việc thuê các dịch vụ Cloud lớn mà còn mang lại tính chủ động tuyệt đối về chủ quyền dữ liệu và khả năng chịu lỗi thảm họa trên diện rộng.

Để vận hành hệ thống ổn định lâu dài, hãy lưu ý luôn đặt một proxy ngược (như Nginx hoặc Caddy) phía trước cổng 3900 để mã hóa TLS/HTTPS cho các dữ liệu truyền tải trên Internet, đồng thời theo dõi sát sao dung lượng ổ đĩa SSD của các VPS để có kế hoạch mở rộng quy mô (Scale-out) thêm node mới khi doanh nghiệp phát triển.

Xây Dựng Cluster Lưu Trữ S3-Compatible Phân Tán Bằng Garage Trên VPS Giá Rẻ Địa Lý Khác Nhau | DPTCloud