Doris IP变更问题详解

文摘   2024-10-26 00:00   重庆  

  导读   本文主要分享当Apache Doris的IP发生变更时,如何快速恢复集群。

全文目录:

  1. 背景说明

  2. 环境信息

  3. FE恢复

  4. BE恢复



背景说明

因为有多网卡的存在,或因为安装过 docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Apache Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。

priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf 和 be.conf 中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。示例如下:

priority_networks=10.1.3.0/24

这是一种 CIDR 的表示方法。FE 或 BE 会根据这个配置项来寻找匹配的IP,作为自己的 localIP。

CIDR采用斜线记法,表示为:IP地址/网络ID的位数。
具体换算方法可以看下面两个例子。

① 192.168.0.0/16,换算为32位二进制地址:11000000.10101000.00000000.00000000。其中/16表示16位网络ID,即32位二进制地址中前16位是固定不变的,对应网段为:11000000.10101000.00000000.00000000~11000000.10101000.11111111.11111111。

② 192.168.1.2/24,换算为32位二进制地址:11000000.10101000.00000001.00000000。其中/24表示32位二进制地址中前24位是固定不变的,对应网段为:11000000.10101000.00000001.00000000~11000000.10101000.00000001.11111111

当出现如下场景时,ip会变更,从而导致fe/be异常无法正常启动运作

① 集群迁移导致ip网段变更

② 虚拟环境中动态地址导致ip变更

③ 重启fe/be前未正常配置priority_networks导致重启后获取的ip与元数据中的不一致

环境信息

1. 硬件信息

  • CPU:1C

  • CPU型号:ARM64

  • 内存:2GB

  • 硬盘:36GB SSD

2. 软件信息

  • VM镜像版本:CentOS-7

  • Apache Doris版本:1.2.4

  • 集群规模:1FE * 3BE

FE恢复

1. 异常日志

查看fe.out会报如下异常,此时fe进程是无法启动的;
操作前注意备份所有fe的元数据并停止上游读写动作!

2. 获取当前IP

ip addr

3. 重置IP信息

重置ip信息后还是会报如上异常,需要继续重置元数据

# 修改fe.conf的priority_networkspriority_networks = 192.168.0.0/16# 或者priority_networks = 192.168.31.78/16

4. 重置元数据记录

重置元数据记录后FE进程虽然能够启动,但是不可用,需要元数据模式恢复。

# 注释掉fe元数据中之前记录的老ipvim doris-meta/image/ROLE

5. 元数据模式恢复

# 在fe.conf中新增metadata_failure_recovery=true启用恢复模式重启fevim fe.confmetadata_failure_recovery=true
# 此时进入http://192.168.31.78:8030/login 可以打开fe web ui说明可以正常启动fe了

6. 重置fe集群节点

虽然使用元数据恢复模式fe目前能够启动,但是还没完全恢复,因为当前fe元数据中记录的集群节点中并没有刚刚修改的ip节点

# 在mysql客户端或者web ui的Playground执行如下sql更新fe元数据中记录的fe节点# 移除老ip节点ALTER SYSTEM DROP FOLLOWER "192.168.31.81:9010";
# 新增新ip节点ALTER SYSTEM ADD FOLLOWER "192.168.31.78:9010";

老IP节点如下。

重置后新IP节点如下。

7. 关闭元数据模式重启FE

# 在fe.conf中注释metadata_failure_recovery=true关闭恢复模式重启fevim fe.conf#metadata_failure_recovery=true

# 此时进入http://192.168.31.78:8030/login 可以打开fe web ui说明fe完全恢复了
BE恢复

1. 获取当前IP

ip addr

2. 重置IP信息

# 修改be.conf的priority_networkspriority_networks = 192.168.0.0/16# 或者priority_networks = 192.168.31.136/16# 设置完成后重启be即可恢复

3. 重置BE集群节点

虽然当前be已经能够启动,但是还没完全恢复,因为当前fe元数据中记录的be集群节点中并没有刚刚修改的be节点

# 在mysql客户端或者web ui的Playground执行如下sql更新fe元数据中记录的be节点# 移除老ip节点ALTER SYSTEM DROPP FOLLOWER "192.168.31.81:9010";ALTER SYSTEM DROPP FOLLOWER "192.168.31.72:9010";ALTER SYSTEM DROPP FOLLOWER "192.168.31.133:9010";
# 新增新ip节点ALTER SYSTEM ADD FOLLOWER "192.168.31.78:9010";ALTER SYSTEM ADD FOLLOWER "192.168.31.71:9010";ALTER SYSTEM ADD FOLLOWER "192.168.31.136:9010";

3台BE都重置后完全恢复如下。

至此,Apache Doris 因为IP变更导致的集群异常问题至此已处理恢复完成,查阅过程中若遇到问题欢迎留言交流

大数据技能圈
分享大数据前沿技术,实战代码,详细文档
 最新文章