[已解决] Doris跨机房节点迁移方案咨询

Viewed 110

目前有一个fe和be各3节点并处于同一机房的doris集群, 想将其迁移至3个机房进行灾备, 计划是每个机房各一个fe和be.

  1. 由于祼金属迁移机房会涉及到ip变更, 不知道这种跨机房迁移操作是否存在其他的不兼容或者风险点, 想让各位老师指点指点是否具备可行性.
  2. 我们按照文档上的缩容和扩容章节, 梳理了一个大致的迁移方案, 麻烦看看有没有什么重要的操作没有考虑到的?
一. 准备工作
前提: fe和be都各保留一个节点不会迁移, 只迁移另外两个节点
此方案比较麻烦, 主要是针对裸金属在节点迁移后ip&磁盘&cpu等关键信息和组件会发生变化的场景
在这种场景下, 每迁移一个BE节点, 都需要准备一个冗余节点, 按照先扩容一个节点, 再下线迁移一个节点的顺序操作
> fe节点不受此限制, 保证fe master节点不动即可

二. FE迁移
1.确定迁移的机器列表
使用root账号登陆doris执行`show frontends`
观察isMaster列的值确定需要保留在该前机房不动的master节点, 剩余的两个非master节点ip即为需要迁移的目标.

2.迁移步骤
* 依次对非master节点: `192.168.40.183和192.168.40.185`机器进行如下操作将其迁移到另外的机房
* 修改doris fe负载均衡的nginx配置中的原doris-fe地址, 移除需要迁移的两个fe地址, 并重新加载配置
* 连接到不迁移的master节点, 执行`ALTER SYSTEM DROP FOLLOWER "{IP}:9010"`下线所有需要迁移的fe节点
* 在不停机的情况下, 需要随时让节点数量满足大多数协议的要求
* 登陆到需要迁移的fe节点, 执行`supervisorctl stop doris_fe`停止需要迁移的fe节点
* 等迁移到另外的机房后, 根据该节点新的ip信息, 修改fe.conf中的priority_networks网段地址, 确保修改后和主节点在同一个网段
* 再开机执行`supervisorctl start doris_fe`启动需要迁移的fe节点
* 连接到不迁移的master节点, 执行`ALTER SYSTEM ADD FOLLOWER "{IP}:9010"`下线fe节点
* 使用root账号登陆doris执行`show frontends`, 观察alive和join列的值, 确保都是true即视为迁移完成
* 修改doris fe负载均衡的nginx配置, 将迁移后的新doris-fe地址添加进来, 并重新加载配置

三. BE迁移
1.确定迁移的机器列表
使用root账号登陆doris执行`show backends`确定节点数量, 并任选两台机器进行迁移

2.扩容be节点
使用root账号登陆doris执行`ALTER SYSTEM ADD BACKEND "{新增be节点的ip}:9050"`

3.迁移步骤
> 以迁移10.232.253.12和10.232.253.13为例, 依次对这两个节点进行如下操作将其迁移到另外的机房
* 使用root账号登陆doris执行`ALTER SYSTEM DECOMMISSION BACKEND "{需要迁移的doris be节点ip}:9050"`
* 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
* 该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends'; 看到该 BE 节点的 SystemDecommissioned 状态为 true。表示该节点正在进行下线。
该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 SystemDecommissioned 为 true 的状态。
* DECOMMISSION 的进度,可以通过 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
* 当SHOW PROC '/backends'看不到某个节点ip的时候, 就可以开始进行迁移该节点了, 直接使用`supervisorctl stop doris_be`停止需要迁移的be节点
* 等迁移到另外的机房后, 再开机执行`supervisorctl start doris_be`启动需要迁移的be节点
* 使用root账号登陆doris执行`ALTER SYSTEM ADD BACKEND "{需要迁移的doris be节点ip}:9050"`
* 使用root账号登陆doris执行`show backends`, 观察alive列的值, 确保都是true之后再进行下一个节点的操作

4.缩容be节点
* 使用root账号登陆doris执行`ALTER SYSTEM DECOMMISSION BACKEND "{新增的两个doris be节点ip}:9050"`
* 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
* 该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends'; 看到该 BE 节点的 SystemDecommissioned 状态为 true。表示该节点正在进行下线。
* 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 SystemDecommissioned 为 true 的状态。
* DECOMMISSION 的进度,可以通过 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
* 使用root账号登陆doris执行`show backends`看不到某个节点ip的时候, 这台机器就可以回收了
1 Answers

你这个方案真牛逼,完全不考虑跨机房的网络故障问题,只要网络故障,你这个集群就是个事故。
还有就是跨机房的网络延迟,抖动的问题导致的数据传输,同步等一系列的问题,3机房还要拉专线的费用问题,哪个大神拍脑袋想出来的方案啊?