Back to articles
Technology Insight

Xây dựng Cụm Docker Swarm kết hợp GlusterFS trên 3 VPS ARM Oracle Cloud: Giải Pháp High Availability Giá 0 Đồng

June 3, 2026

Giới thiệu xu hướng tối ưu chi phí hạ tầng với Oracle Cloud Free Tier

Trong bối cảnh tối ưu hóa chi phí vận hành (OpEx) trở thành ưu tiên hàng đầu của các doanh nghiệp, việc tận dụng các nền tảng đám mây miễn phí nhưng mạnh mẽ là một chiến lược thông minh. Oracle Cloud Infrastructure (OCI) nổi lên như một điểm sáng rực rỡ với chương trình Always Free Tier, cung cấp cấu hình cực kỳ cấu trúc: lên đến 4 cụm Core CPU ARM Ampere và 24 GB RAM. Đây là nguồn tài nguyên lý tưởng để triển khai các kiến trúc phân tán.

Tuy nhiên, một VPS đơn lẻ không bao giờ là đủ đối với các ứng dụng yêu cầu tính sẵn sàng cao (High Availability - HA). Nếu VPS đó gặp sự cố phần cứng hoặc bảo trì định kỳ từ nhà cung cấp, dịch vụ của bạn sẽ bị gián đoạn. Giải pháp toàn diện ở đây là kết hợp 3 VPS ARM miễn phí thành một cụm Docker Swarm để quản lý container, đồng thời tích hợp hệ thống lưu trữ phân tán GlusterFS để đảm bảo dữ liệu luôn được đồng bộ theo thời gian thực giữa các node. Bài viết này sẽ hướng dẫn bạn từng bước xây dựng hệ thống HA hoàn chỉnh với chi phí 0 đồng.

Kiến trúc tổng quan: Docker Swarm kết hợp GlusterFS

Mô hình của chúng ta sẽ bao gồm 3 VPS ARM được khởi tạo trên Oracle Cloud (ví dụ: node1, node2, và node3). Mỗi VPS sẽ đóng hai vai trò song song:

  • Tầng Tính Toán (Compute Layer): Docker Swarm với cấu trúc 3 Managers (hoặc 1 Manager và 2 Workers, nhưng khuyến khích cấu hình cả 3 làm Manager để đạt độ đồng thuận Raft tối ưu cho cụm 3 node).
  • Tầng Lưu Trữ (Storage Layer): GlusterFS clustered volume. Dữ liệu ghi vào thư mục được chia sẻ trên bất kỳ node nào cũng sẽ ngay lập tức được replicate (sao chép) sang 2 node còn lại.

Nhờ sự kết hợp này, khi một node bất kỳ đột ngột ngừng hoạt động (宕机), Docker Swarm sẽ tự động dịch chuyển container sang node khác, và tại đó, GlusterFS đã chuẩn bị sẵn sàng dữ liệu đồng bộ mới nhất. Ứng dụng của bạn sẽ tiếp tục chạy mà không bị mất dữ liệu hay gián đoạn dịch vụ.

Bước 1: Chuẩn bị hạ tầng và cấu hình Network trên Oracle Cloud

Trước tiên, bạn cần đăng ký tài khoản Oracle Cloud và khởi tạo 3 instance sử dụng hệ điều hành Ubuntu Server (hỗ trợ kiến trúc ARM64). Hãy phân bổ tài nguyên hợp lý, ví dụ mỗi node sở hữu 1 Core ARM và 6GB/8GB RAM.

Cấu hình Security List (Virtual Cloud Network - VCN)

Để các node có thể giao tiếp toàn diện với nhau, bạn cần mở các port cần thiết trên bảng điều khiển Oracle Cloud bằng cách truy cập vào mạng VCN và cấu hình Ingress Rules:

  • Docker Swarm Ports: TCP 2377 (Cluster management), TCP/UDP 7946 (Node communication), UDP 4789 (Overlay network).
  • GlusterFS Ports: TCP 24007 (Gluster Daemon), TCP 24008, và dải port từ 49152 đến 49156 cho các brick.
Lưu ý bảo mật: Chỉ nên cấu hình mở các port này cho dải IP nội bộ của VCN (ví dụ: 10.0.0.0/16) thay vì mở public ra toàn bộ internet (0.0.0.0/0) để tránh rủi ro bảo mật nghiêm trọng.

Bước 2: Cài đặt và cấu hình hệ thống lưu trữ phân tán GlusterFS

GlusterFS đóng vai trò là "trái tim" lưu trữ của cả hệ thống. Chúng ta sẽ tiến hành cài đặt glusterfs-server trên cả 3 node.

Chạy các lệnh sau trên cả 3 node để cài đặt:

sudo apt update
sudo apt install -y glusterfs-server
sudo systemctl enable glusterd
sudo systemctl start glusterd

Kết nối các Node thành một Storage Pool

Đứng tại node1, thực hiện lệnh thiết lập liên kết peer với 2 node còn lại (thay thế bằng IP nội bộ của các node):

sudo gluster peer probe [IP_NODE_2]
sudo gluster peer probe [IP_NODE_3]

Kiểm tra trạng thái kết nối bằng lệnh: sudo gluster peer status. Đảm bảo trạng thái hiển thị là "Peer in Cluster".

Khởi tạo Replicated Volume

Tạo một thư mục local trên cả 3 node để làm phân vùng thô cho GlusterFS (ví dụ: /gluster/brick1). Sau đó, thực hiện lệnh tạo volume tại node1:

sudo gluster volume create swarm-cluster replica 3 node1:/gluster/brick1 node2:/gluster/brick1 node3:/gluster/brick1 force
sudo gluster volume start swarm-cluster

Cuối cùng, mount volume vừa tạo vào một thư mục chung trên cả 3 node (ví dụ: /mnt/swarm-storage) để Docker Swarm sử dụng làm nơi lưu trữ persistent volume cho các container.

Bước 3: Thiết lập cụm Docker Swarm tính sẵn sàng cao

Sau khi tầng lưu trữ đã sẵn sàng, chúng ta tiến hành cấu hình tầng tính toán. Trước hết, hãy cài đặt Docker Engine lên cả 3 máy ảo ARM bằng script chính thức từ Docker:

curl -fsSL [https://get.docker.com](https://get.docker.com) -o get-docker.sh
sudo sh get-docker.sh

Khởi tạo Swarm Cluster

Tại node1, khởi chạy lệnh khởi tạo cụm Swarm:

sudo docker swarm init --advertise-addr [IP_INTERNAL_NODE_1]

Hệ thống sẽ trả về một chuỗi token kèm lệnh docker swarm join. Sao chép lệnh này và thực thi trên node2 và node3 để đưa chúng gia nhập vào cụm với vai trò là thành viên.

Để nâng cấp node2 và node3 lên làm Manager (đảm bảo tính HA khi node1 chết), quay lại node1 và chạy lệnh:

sudo docker node promote node2 node3

Bước 4: Triển khai ứng dụng thực tế và kiểm thử khả năng chịu lỗi (Failover)

Để chứng minh sức mạnh của hệ thống HA giá 0 đồng này, chúng ta sẽ triển khai một dịch vụ WordPress kết hợp cơ sở dữ liệu MySQL sử dụng tệp docker-compose.yml dạng Swarm Stack. Điểm mấu chốt là tất cả các đường dẫn data của MySQL và WordPress đều được trỏ vào thư mục chia sẻ /mnt/swarm-storage.

Kịch bản kiểm thử High Availability

  1. Truy cập vào ứng dụng WordPress và đăng một bài viết mới kèm hình ảnh (dữ liệu này sẽ được lưu vào GlusterFS và đồng bộ lập tức sang cả 3 VPS).
  2. Thực hiện tắt đột ngột (Force Shutdown) node1 trực tiếp từ trang quản trị Oracle Cloud Dashboard để giả lập tình huống sập nguồn vật lý.
  3. Kết quả: Docker Swarm mất khoảng vài giây để phát hiện node1 ngoại tuyến, sau đó tự động khởi tạo lại container WordPress và MySQL trên node2 hoặc node3. Do dữ liệu đã được GlusterFS đồng bộ sẵn trên các node này, trang web WordPress vẫn hoạt động bình thường, không mất mát bất kỳ dữ liệu nào.

Những lưu ý quan trọng khi vận hành trên cấu hình ARM

Mặc dù giải pháp này mang lại hiệu quả kinh tế tuyệt đối, bạn cần lưu ý một số điểm kỹ thuật sau để hệ thống vận hành trơn tru:

  • Tương thích kiến trúc chip (Architecture): Do VPS sử dụng chip ARM64 (Ampere), các Docker Image bạn sử dụng phải hỗ trợ nền tảng này. Hầu hết các image phổ biến như Nginx, MySQL, Node, Python hiện nay đều hỗ trợ Multi-Arch, nhưng hãy luôn kiểm tra tag arm64 trên Docker Hub trước khi deploy.
  • Tốc độ Disk I/O: Ổ cứng miễn phí của Oracle Cloud có giới hạn về IOPS. GlusterFS thực hiện đồng bộ qua mạng nội bộ nên sẽ có độ trễ (latency) nhất định khi ghi file dung lượng lớn. Giải pháp này phù hợp cho các website vừa và nhỏ, môi trường staging, hoặc các ứng dụng doanh nghiệp nội bộ có tần suất ghi đĩa không quá dày đặc.
  • Giới hạn mạng (Network Bottleneck): Đảm bảo đường truyền giữa các node ổn định để tránh hiện tượng "split-brain" trong hệ thống GlusterFS.

Lời kết

Việc kết hợp Docker Swarm và GlusterFS trên hạ tầng Always Free của Oracle Cloud mang lại một giải pháp High Availability (HA) cực kỳ mạnh mẽ mà không tốn một đồng chi phí bản quyền hay thuê server. Đây là phương án tối ưu cho các lập trình viên, startup giai đoạn đầu hoặc các doanh nghiệp nhỏ muốn xây dựng một hệ thống có khả năng tự phục hồi, an toàn trước các sự cố hạ tầng mà vẫn kiểm soát tốt ngân sách công nghệ thông tin.

Xây dựng Cụm Docker Swarm kết hợp GlusterFS trên 3 VPS ARM Oracle Cloud: Giải Pháp High Availability Giá 0 Đồng | DPTCloud