- Published on
Triển khai CubeFS ở chế độ Cluster: Hướng dẫn từng bước chi tiết
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
🏗️ 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
🔧 Chuẩn bị và Build phần mềm

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ảmmetaNodeReservedMem
hoặc tăngtotalMem
phù hợp.❗ Port đã bị chiếm dụng:
bind: address already in use
→ Dùnglsof -i :<port>
và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.