集群升级
注意
各个版本的升级步骤请参考 release notes
获取二进制
- https://github.com/cubeFS/cubefs/releases 获取指定版本代码,编译生成二进制
冻结集群
$ cfs-cli cluster freeze true
- freeze: 冻结期间,卷不能再创建新的数据分片,不影响正在进行的业务流程
注意事项
- 确认启动配置文件,不要更改配置文件中的数据目录、端口等重要信息
- 配置文件其他参数修改参考配置说明,release notes 等
- 各组件升级顺序, 参考对应版本 release notes
- 如无特殊要求,一般可按照 datanode->metanode->master->client 的顺序升级各组件
升级 DataNode
下面以 datanode 为例描述
- 停止旧的 datanode 进程
- 启动新的 datanode 进程
- 启动后检查节点状态,直到显示为 active 后,再升级下一台机器
$ cfs-cli datanode info 192.168.0.33:17310
[Data node info]
ID : 9
Address : 192.168.0.33:17310
Carry : 0.06612836801123345
Used ratio : 0.0034684352702178426
Used : 96 GB
Available : 27 TB
Total : 27 TB
Zone : default
IsActive : Active
Report time : 2020-07-27 10:23:20
Partition count : 16
Bad disks : []
Persist partitions : [2 3 5 7 8 10 11 12 13 14 15 16 17 18 19 20]
升级 MetaNode
与 DataNode 类似
升级 master
- 停止旧的 master 进程
- 启动新的 master 进程
- 观察监控是否正常
- 查看 master 对应的 raft 状态是否正常
- 如下,查看对应重启 master id 对应的 commit 是否与其他副本一致,raft 是否有主
curl 192.168.0.1:17010/get/raftStatus | python -m json.tool
{
"code": 0,
"data": {
"AppQueue": 0,
"Applied": 25168073,
"Commit": 25168074,
"ID": 1,
"Index": 25168074,
"Leader": 2,
"NodeID": 2,
"Replicas": {
"1": {
"Active": true,
"Commit": 25168074,
"Match": 25168074,
"Next": 25168075,
},
"2": {
"Active": true,
"Commit": 25168074,
"Match": 25168074,
"Next": 25168075,
"Paused": false,
},
"3": {
"Active": true,
"Commit": 25168074,
"Match": 25168074,
"Next": 25168075,
}
},
"RestoringSnapshot": false,
"State": "StateLeader",
"Stopped": false,
"Term": 292,
"Vote": 2
},
"msg": "success"
}
升级 client
- 停止业务读写
- umount 挂载点
- 若出现如下错误, 则需要执行 umount -l 挂载点
umount: /xxx/mnt: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1)
- 查看 client 进程若存在,则停止
- 启动新的客户端进程即可,
df -h
查看是否执行成功
在github上编辑