Blog chia sẻ về công nghệ ...
Published on

Triển khai CubeFS ở chế độ Cluster: Hướng dẫn từng bước chi tiết

Authors

🏗️ Triển khai CubeFS ở chế độ Cluster

Hướng dẫn chi tiết cách xây dựng cụm CubeFS Cluster gồm các node: Master, MetaNode, DataNode, ObjectNode, Lcnode, Erasure Code, dành cho môi trường production.


📑 Mục Lục

  1. Chuẩn bị và build phần mềm
  2. Cài đặt các thành phần trong Cluster
  3. FAQ - Khắc phục lỗi thường gặp

🔧 Chuẩn bị và Build phần mềm

cubefs-architecture-beginner
git clone https://github.com/cubefs/cubefs.git
cd cubefs
make build

Sau khi thành công, sẽ tạo ra:

  • build/bin/cfs-server
  • build/bin/cfs-client

🧩 Cài đặt các thành phần trong Cluster

🔹 Cài đặt Master

./cfs-server -c master.json

Ví dụ master.json:

{
  "role": "master",
  "ip": "127.0.0.1",
  "listen": "17010",
  "prof": "17020",
  "id": "1",
  "peers": "1:127.0.0.1:17010,2:127.0.0.2:17010,3:127.0.0.3:17010",
  "retainLogs": "20000",
  "logDir": "/cfs/master/log",
  "logLevel": "info",
  "walDir": "/cfs/master/data/wal",
  "storeDir": "/cfs/master/data/store",
  "consulAddr": "http://consul.prometheus-cfs.local",
  "clusterName": "cubefs01",
  "metaNodeReservedMem": "1073741824"
}

✅ Khuyến nghị chạy tối thiểu 3 node Master để đảm bảo HA.


📘 Cài đặt MetaNode

./cfs-server -c metanode.json

Ví dụ metanode.json:

{
  "role": "metanode",
  "listen": "17210",
  "prof": "17220",
  "logLevel": "info",
  "metadataDir": "/cfs/metanode/data/meta",
  "logDir": "/cfs/metanode/log",
  "raftDir": "/cfs/metanode/data/raft",
  "raftHeartbeatPort": "17230",
  "raftReplicaPort": "17240",
  "totalMem": "8589934592",
  "consulAddr": "http://consul.prometheus-cfs.local",
  "exporterPort": 9501,
  "masterAddr": ["127.0.0.1:17010","127.0.0.2:17010","127.0.0.3:17010"]
}

✅ Tối thiểu 3 MetaNode được khuyến nghị để đạt tính sẵn sàng cao.


💽 Cài đặt DataNode

./cfs-server -c datanode.json

Trước đó:

mkfs.xfs -f /dev/sdx
mkdir /data0
mount /dev/sdx /data0

Ví dụ datanode.json:

{
  "role": "datanode",
  "listen": "17310",
  "prof": "17320",
  "logDir": "/cfs/datanode/log",
  "logLevel": "info",
  "raftHeartbeat": "17330",
  "raftReplica": "17340",
  "raftDir": "/cfs/datanode/log",
  "consulAddr": "http://consul.prometheus-cfs.local",
  "exporterPort": 9502,
  "mediaType": 1,
  "masterAddr": ["127.0.0.1:17010","127.0.0.2:17010","127.0.0.3:17010"],
  "disks": ["/data0:10737418240", "/data1:10737418240"]
}

🌐 Cài đặt ObjectNode (tuỳ chọn)

./cfs-server -c objectnode.json

objectnode.json:

{
  "role": "objectnode",
  "domains": ["object.cfs.local"],
  "listen": "17410",
  "masterAddr": ["127.0.0.1:17010","127.0.0.2:17010","127.0.0.3:17010"],
  "logLevel": "info",
  "logDir": "/cfs/Logs/objectnode"
}

📦 Cài đặt Lcnode (tuỳ chọn)

./cfs-server -c lifecycle.json

lifecycle.json:

{
  "role": "lcnode",
  "listen": "17510",
  "masterAddr": ["127.0.0.1:17010","127.0.0.2:17010","127.0.0.3:17010"],
  "logLevel": "info",
  "logDir": "/cfs/Logs/lcnode"
}

🧊 Cài đặt Erasure Code Subsystem

Tham khảo [Using the Erasure Coding Storage System] để triển khai.


❓ FAQ - Khắc phục lỗi thường gặp

  • Lỗi thiếu RAM:

    bad totalMem config → Giảm metaNodeReservedMem hoặc tăng totalMem phù hợp.

  • Port đã bị chiếm dụng:

    bind: address already in use → Dùng lsof -i :<port>kill -9 <PID>.

  • FUSE mount lỗi:

    fusermount not found → Cài đặt FUSE: yum install fuse


✅ Bạn đã nắm được các bước triển khai toàn bộ cụm CubeFS ở chế độ Cluster. Hãy thử nghiệm và giám sát qua Prometheus hoặc quản lý volume qua giao diện dashboard.