Apache Doris IP变更问题详解

本文详细描述了ApacheDoris在遇到多IP环境下的问题解决过程,包括FE和BE的异常日志分析、配置调整、元数据管理,以及如何通过调整priority_networks配置和元数据恢复模式来确保集群恢复正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

因为有多网卡的存在,或因为安装过 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的位数。
具体换算方法可以看下面两个例子。

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

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

  1. 集群迁移导致ip网段变更
  2. 虚拟环境中动态地址导致ip变更
  3. 重启fe/be前未正常配置priority_networks导致重启后获取的ip与元数据中的不一致

二、环境

硬件信息

  1. CPU :1C
  2. CPU型号:ARM64
  3. 内存 :2GB
  4. 硬盘 :36GB SSD

软件信息

  1. VM镜像版本 :CentOS-7
  2. Apahce Doris版本 :1.2.4.1
  3. 集群规模:1FE * 3BE

三、FE恢复

3.1 异常日志

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

在这里插入图片描述

3.2 获取当前ip

ip addr

在这里插入图片描述

3.3 重置ip信息

重置ip信息后还是会报如上异常

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

3.4 重置元数据记录

重置元数据记录后fe进程虽然能够启动,但是不可用

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

在这里插入图片描述

3.5 元数据模式恢复

# 在fe.conf中新增metadata_failure_recovery=true启用恢复模式重启fe
vim fe.conf
metadata_failure_recovery=true

# 此时进入http://192.168.31.78:8030/login 可以打开fe web ui说明可以正常启动fe了

在这里插入图片描述

3.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节点

新ip节点如下

新ip节点

3.7 关闭元数据模式重启fe

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

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

四、BE恢复

4.1 获取当前ip

ip addr

在这里插入图片描述

4.2 重置ip信息

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

4.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变更导致的集群异常问题至此已处理恢复完成,查阅过程中若遇到问题欢迎留言交流

### 如何在 IntelliJ IDEA 中使用正则表达式进行查找和替换 要在 IntelliJ IDEA 中使用正则表达式进行查找和替换操作,可以通过以下方式实现: #### 打开查找与替换对话框 通过快捷键 `Ctrl + R`(Windows/Linux)或 `Cmd + R`(macOS),可以打开“Find and Replace”对话框[^1]。 #### 启用正则表达式模式 在查找输入框旁边有一个选项用于启用正则表达式匹配。确保勾选该选项(通常显示为一个小图标,类似于 `. *` 或者标记为“Regex”)。这样,IDEA 会按照正则表达式的规则解析输入的查找条件[^3]。 #### 正则表达式语法支持 IntelliJ IDEA 支持标准的正则表达式语法。例如: - 使用圆括号 `()` 定义捕获组。 - 可以通过 `$n` 引用第 n 个捕获组的内容,在替换字段中应用这些捕获组的结果[^2]。 #### 示例:简单查找与替换 假设需要将形如 `"example"` 的字符串替换成调用方法的形式 `FYUtils.fyParams("example")`,可以执行以下操作: - **查找内容**: `"(.*?)"` 这里的 `(.*?)` 是一个捕获组,用来提取双引号内的任意内容。 - **替换内容**: `FYUtils.fyParams("$1")` 其中 `$1` 表示第一个捕获组的内容。 #### 复杂场景下的查找与替换 对于更复杂的场景,比如匹配带有特定结尾数字的字符串并将其拆分为多个参数传递给函数,可采用如下设置: - **查找内容**: `"(.*?)(\d)"` 这里 `(.*?)` 和 `(\d)` 分别代表两个不同的捕获组,前者捕捉除最后一位数字外的部分,后者单独捕捉最后一个数字。 - **替换内容**: `FYUtils.fyParams("$1", "$2")` #### 特殊情况处理 如果目标是移除某些 XML 节点中的 `<scope>` 标签及其内容,则可以利用类似的策略: - **查找内容**: `<scope>(.*)</scope>` - **替换内容**: 空白或者注释形式 `<!-- <scope>$1</scope> -->`[^4] ```xml <dependency> <!-- <scope>provided</scope> --> </dependency> ``` 以上代码展示了如何保留依赖项的同时隐藏其作用域信息。 ### 注意事项 当编写复杂正则表达式时,请务必测试其准确性以免误改其他无关部分;另外注意转义特殊字符如反斜杠 `\` 在不同上下文中可能有不同的含义。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据AI智能圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值