Curve 迁移服务

  1. 适用环境:
  2. 版本号: v1.2.6+
  3. CurveAdm版本:v0.2.0+
  4. 最后更新日期: 2023/09/30
  5. 层面: 数据面
  6. 运维级别: P1
  7. 所属产品: 存储
  8. 需求明细: 节点名称
  9. 验收标准: 迁移完成,且集群正常工作
  10. 参考步骤:
  1. 1. 需要先确认当前集群是否健康:
  2. $ curve bs status cluster
  3. 结果输出有下面字样则集群健康:Cluster health is: ok
  4. 注:如果集群不健康,需要判断是否仍然需要迁移,否则可能导致集群服务不可用。
  5. 2. 备份本地集群拓扑文件:
  6. $ cp topology.yaml topology-old.yaml
  7. 注:当本地拓扑文件丢失时,我们可以通过如下命令保存当前的集群拓扑来恢复:
  8. $ curveadm config show > topology.yaml
  9. 3. 添加新增机器至主机列表:
  10. $ vim hosts.yaml
  11. global:
  12. user: curve
  13. ssh_port: 22
  14. private_key_file: /home/curve/.ssh/id_rsa
  15. hosts:
  16. - host: server-host1
  17. hostname: 10.0.1.1
  18. - host: server-host2
  19. hostname: 10.0.1.2
  20. - host: server-host3
  21. hostname: 10.0.1.3
  22. - host: server-host4 # 新增机器
  23. hostname: 10.0.1.4
  24. 注:如果找不到本地的hosts.yaml文件,则使用如下命令重新导出:
  25. $ curveadm hosts show > hosts.yaml
  26. 4. 编辑本地集群拓扑文件,在拓扑文件中添加新机器:
  27. $ vim topology.yaml
  28. kind: curvebs
  29. global:
  30. variable:
  31. machine1: server-host1
  32. machine2: server-host2
  33. machine3: server-host3
  34. machine4: server-host4 # 新增机器
  35. chunkserver_services:
  36. config:
  37. listen.ip: ${service_host}
  38. listen.port: 6800
  39. listen.external_port: 7800
  40. chunkserver.loglevel: 0
  41. deploy:
  42. - host: ${machine1}
  43. - host: ${machine2}
  44. - host: ${machine4} # 将 ${machine3} 修改为 ${machine4}
  45. config:
  46. chunkserver.loglevel: 3
  47. 注:
  48. * 每一次只能迁移同一种角色的其中一个服务
  49. * 每一次只能迁移同一台主机的服务
  50. 5. 迁移服务:
  51. $ curveadm migrate topology.yaml
  52. 6. 再次查看新节点对应的服务是否已经启动(StatusUp状态):
  53. $ curveadm status
  54. 7. 查看集群的健康状态:
  55. $ curve bs status cluster
  56. 结果输出有下面字样则集群健康:Cluster health is: ok
  57. 8. 如果要继续迁移,请等待当前服务迁移完成,集群健康。
  58. 重复3-7步骤
  1. 参考影响:
  • 时间: 无

  • 业务方: 无

  • 用户:无

  1. 参考风险:
  • 数据面: 在服务迁移过程中,相当于停服然后重启。如果迁移etcd/mds可能没有影响,对于chunkserver来说可能会有IO抖动,因为copyset的leader可能重新选举。

  • 管控面: 无

  • 恢复能力: 无需恢复

  1. 参考回滚策略: 无

  2. 需求发起方: CURVE

  3. 接收方:

  4. 评审责任人: SRE负责人,SA负责人,CURVE负责人

  5. 用户通知责任人: 技术支持

  6. 执行责任人: CURVE/SA

  7. 测试回归责任人: CURVE

  8. 执行审核责任人: SA/CURVE/SRE