Multi-Site Replication trong Minio

1. Tổng quan

MinIO hỗ trợ cơ chế replication giữa nhiều site nhằm phục vụ các kịch bản Disaster Recovery (DR), High Availability (HA) và Multi-Region Deployment. Tùy nhu cầu, bạn có thể triển khai theo dạng miễn phí (bucket replication một chiều) hoặc bản thương mại (site replication đa chiều, active-active). Nội dung dưới đây phân tích chi tiết các khái niệm, kiến trúc, ví dụ, cùng so sánh sự khác biệt giữa bản miễn phí và bản trả phí.

2. Kiến trúc replication nhiều site

2.1. Distributed MinIO trong một site

  • Mỗi site triển khai một cluster (pool) riêng biệt.
  • Ví dụ: tại Site A có 4 node × 3 disk, tại Site B cũng có một cluster tương tự.
  • Các node trong cùng một cluster yêu cầu kết nối LAN độ trễ thấp.

2.2. Multi-Site Replication

  • Mỗi site = một cluster độc lập.
  • Giữa các site bật tính năng replication để đồng bộ dữ liệu.
  • Có hai mô hình:
    • Bucket replication: đồng bộ dữ liệu ở cấp bucket, thường một chiều (A → B).
    • Site replication: đồng bộ dữ liệu ở cấp site, nhiều chiều (A ↔ B hoặc A ↔ B ↔ C).

Sơ đồ minh họa:

+-----------+          Replication (async)         +-----------+
|  ClusterA | -----------------------------------> |  ClusterB |
|  (Site A) |                                     |  (Site B) |
+-----------+                                     +-----------+
       |                                               |
       v                                               v
   Người dùng A                                   Người dùng B

3. Miễn phí và trả phí

3.1. Miễn phí (Community / AGPLv3)

  • Hỗ trợ bucket replication một chiều (async).
  • Bạn có thể cấu hình để bucket photos ở Site A replicate sang bucket photos ở Site B.
  • Ứng dụng: DR cơ bản, lưu dữ liệu backup ở site dự phòng.
  • Giới hạn:
    • Chỉ một chiều.
    • Không có cơ chế tự động failover.
    • Nếu site B bị lỗi, site A vẫn hoạt động nhưng dữ liệu không thể sync sang site B.

Ví dụ:

Site A (cluster 4 node) ----replicate----> Site B (cluster 4 node)

3.2. Trả phí (Enterprise / SUBNET)

  • Hỗ trợ site replication đa chiều (active-active).
  • Các site đồng bộ dữ liệu song song và có thể phục vụ đọc/ghi đồng thời.
  • Có khả năng tự động failover giữa các site.
  • Dùng cho môi trường yêu cầu HA/DR nghiêm ngặt, multi-region production.

Ví dụ:

Site A <----sync----> Site B <----sync----> Site C
  ^                                               |
  +-----------------------sync--------------------+

4. Build Multi-Site Replication

4.1. Cấu hình bucket replication một chiều (free) giữa hai cluster

Phần này hướng dẫn cấu hình bucket replication một chiều (free) giữa hai cluster MinIO độc lập (multi-site). Bạn sẽ:

  • Khai báo alias cho hai cluster,
  • Tạo bucket và bật versioning,
  • Khai báo remote replication,
  • Thêm rule replication (chọn phạm vi, xóa đồng bộ, metadata…),
  • Kiểm thử, theo dõi và xử lý sự cố.

Ghi chú: “Bucket replication” một chiều là tính năng miễn phí. “Site replication” đa chiều, tự động failover là trả phí (Enterprise).

4.2. Điều kiện tiên quyết

Mỗi site là một cluster MinIO độc lập (không kéo giãn 1 cluster qua 2 DC).

  • Mạng giữa hai site cho phép TCP đến cổng S3 (ví dụ 9000) và bạn có thông tin Access Key/Secret Key của cluster đích.
  • Đồng bộ giờ (NTP) giữa 2 site để tránh lệch thời gian gây lỗi chữ ký.
  • Quyền user tại site nguồn đủ để cấu hình replication (thường là admin hoặc user/policy tương đương).

4.3. Cấu hình

Đặt tên alias, tạo bucket

Ví dụ: site nguồn (Site A) tại http://10.0.1.10:9000, site đích (Site B) tại http://10.0.2.10:9000.

Khai báo alias:

mc alias set siteA http://10.0.1.10:9000 ACCESS_A SECRET_A
mc alias set siteB http://10.0.2.10:9000 ACCESS_B SECRET_B

Tạo bucket đồng tên (khuyến nghị) ở cả hai site:

mc mb siteA/photos
mc mb siteB/photos

Bật versioning (bắt buộc cho replication)

mc version enable siteA/photos
mc version enable siteB/photos

Versioning cần được bật ở cả nguồn lẫn đích.

Khai báo “remote” (nối bucket nguồn tới bucket đích)

Có hai cách thông dụng. Bạn chọn một trong hai:

Cách 1- Dùng mc admin bucket remote (trả về ARN)

Thêm remote replication service cho bucket nguồn (Site A) tới bucket đích (Site B):

mc admin bucket remote add siteA/photos \
  https://ACCESS_B:SECRET_B@10.0.2.10:9000/photos \
  --service replication

Lệnh trả về ARN (định danh remote). Ghi lại ARN này (ví dụ arn:minio:replication::...).

Thêm rule replication, dùng ARN ở trên:

mc admin bucket replicate add siteA/photos \
  --remote-bucket <ARN_TU_BUOC_5.1.1> \
  --priority 1 \
  --replicate "delete,delete-marker,metadata,tags"

Cách B – Dùng mc replicate (khai báo trực tiếp alias/bucket)

mc replicate add siteA/photos \
  --remote-bucket siteB/photos \
  --priority 1 \
  --replicate "delete,delete-marker,metadata,tags"

Hai cách trên cùng mục đích: thiết lập replication một chiều từ siteA/photossiteB/photos. Tùy phiên bản mc, cú pháp có thể khác nhẹ; nếu một cách báo lỗi tham số, thử cách còn lại.

5. Tuỳ chọn rule (tham khảo nhanh)

  • --replicate "delete": Khi xóa object ở nguồn, hành vi xóa được nhân bản sang đích (yêu cầu versioning).
  • --replicate "delete-marker": Replicate “delete marker” (xóa có phiên bản).
  • --replicate "metadata": Đồng bộ cập nhật metadata.
  • --replicate "tags": Đồng bộ object tags.
  • --tags "env=prod,team=data": Chỉ replicate object có tag phù hợp.
  • --prefix "logs/": Chỉ replicate object có key prefix nhất định.
  • --bandwidth 100MiB: Giới hạn băng thông replicate (tùy phiên bản mc).
  • --priority 1: Khi có nhiều rule, priority thấp hơn thường có độ ưu tiên cao hơn (tùy phiên bản, hãy thống nhất một convention nội bộ).

6. Kiểm thử

Ghi thử file tại nguồn:

echo "hello" > /tmp/hello.txt
mc cp /tmp/hello.txt siteA/photos/

Kiểm tra ở đích:

mc ls siteB/photos
mc cat siteB/photos/hello.txt

Kiểm tra xóa (nếu đã bật replicate delete/delete-marker):

mc rm siteA/photos/hello.txt
# chờ replica; sau đó:
mc ls --versions siteB/photos/hello.txt

7. Theo dõi và vận hành

  • Xem rule/remote đang cấu hình: mc admin bucket remote ls siteA/photos mc admin bucket replicate ls siteA/photos
  • Kiểm tra trạng thái replicate: mc replicate status siteA/photos
  • Theo dõi sự cố/giao dịch: mc admin trace -v --errors siteA

8. Một vài ví dụ biến thể

Replicate theo prefix: chỉ đồng bộ thư mục images/

mc replicate add siteA/photos \
  --remote-bucket siteB/photos \
  --prefix "images/" \
  --replicate "delete,delete-marker"

Replicate theo tag: chỉ sync object có tag env=prod

mc replicate add siteA/photos \
  --remote-bucket siteB/photos \
  --tags "env=prod" \
  --replicate "metadata,tags"

Giới hạn băng thông replicate (nếu cần kiểm soát WAN)

mc replicate add siteA/photos \
  --remote-bucket siteB/photos \
  --bandwidth 100MiB

9. Troubleshooting

  • Access Denied / Signature mismatch: kiểm tra Access/Secret, đồng bộ giờ (NTP) và endpoint URL.
  • Replication không chạy: đảm bảo versioning đã bật cả hai phía; kiểm tra rule có trùng khớp prefix/tags không.
  • Chậm / backlog lớn: kiểm tra băng thông giữa site, xem --bandwidth có đang giới hạn; theo dõi mc admin trace.
  • Không thấy xóa được replicate: chắc chắn bạn đã thêm deletedelete-marker vào --replicate.

10. Lời khuyên

  • Nếu mục tiêu chỉ là backup dữ liệu hoặc DR cơ bản, bản miễn phí với bucket replication một chiều đã đủ.
  • Nếu cần active-active multi-site với yêu cầu HA/DR cấp doanh nghiệp, bạn nên xem xét bản thương mại.
  • Tránh triển khai distributed cluster rải rác qua nhiều site (ví dụ 2 node ở Site A + 2 node ở Site B) vì độ trễ mạng sẽ khiến cluster hoạt động không ổn định.
  • Khi triển khai multi-site, luôn kiểm tra băng thông và độ trễ mạng giữa các datacenter.

11. Kết luận

MinIO replication nhiều site có hai cấp độ: bucket replication miễn phí (một chiều, dùng cho DR cơ bản) và site replication trả phí (đa chiều, active-active, dùng cho HA/DR doanh nghiệp). Tùy yêu cầu thực tế và ngân sách, bạn có thể chọn giải pháp phù hợp. Trong mọi trường hợp, mỗi site nên được triển khai như một cluster độc lập, sau đó bật replication giữa các site thay vì cố gắng kéo dài một cluster qua nhiều datacenter.

Bài viết gần đây

spot_img

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here

Đăng ký nhận thông tin bài viết qua email