在介绍这个之前,我们知道Doris 之前是不支持主机名称方式,只能使用 IP 地址,在实际使用中,有的用户因为网络重构或者设备迁移产生了IP地址变更,这个就会引发Doris集群数据不可用。如果我们能通过主机名称,那么就可以避免因为IP地址变更引发的集群不可用数据丢失的问题。
Doris 从 2.0 版本引入的 FQDN的能力,来解决之前的 IP地址不能变更的问题。
本文介绍如何启用基于 FQDN(Fully Qualified Domain Name,完全限定域名 )使用 Apache Doris。FQDN 是 Internet 上特定计算机或主机的完整域名。
Doris 支持 FQDN 之后,各节点之间通信完全基于 FQDN。添加各类节点时应直接指定 FQDN,例如添加 BE 节点的命令为ALTER SYSTEM ADD BACKEND "be_host:heartbeat_service_port"
,
"be_host" 此前是 BE 节点的 IP,启动 FQDN 后,be_host 应指定 BE 节点的 FQDN。
1. 使用前置条件
-
Doris 版本一定是2.0 以上版本
-
Doris 集群所有机器都必须配置主机名称
-
要在每台机器的hosts文件中配置 IP 和主机名称的映射关系,或者有全集的DNS服务器
-
IP 地址不能有重复
-
在你的 fe.conf 文件中打开 FQDN 配置 :
enable_fqdn_mode = true
2. 新安装集群
这里我以单机为例来演示,安装 Doris 可以具体参照 Doris 官方文档就行:快速开始 - Apache Doris
2.1 修改hosts文件
首先我们修改本地的 /etc/hosts
文件
127.0.0.1 localhost::1 localhost192.168.31.54 zhangfeng
我的主机名称是:zhangfeng,对应的 IP 地址是:192.168.31.54
如果你是多个节点,这里将每个节点的 IP 地址和主机名称都要配置上,并且将这个文件复制到每个节点上的/etc/hosts
文件里。
如果你是DNS方式,请按照DNS的配置方式进行配置
2.2 配置并启动 FE
我们在 fe.conf 文件最后加上下面的内容
enable_fqdn_mode = true
然后启动 FE
bin/start_fe.sh --daemon
2.3 配置 BE 并启动
BE 的配置和启动方式和之前一样,不需要特别的配置,这里使用 FQDN 不是意味着 be 不需要配置 priority_networks
了,这个还是要进行配置,注意的这里配置的 IP 还是要和你的 hosts 主机名称哪个地方的一致,例如我这里的配置
priority_networks = 192.168.31.0/24
配置好之后正常启动 BE 即可
bin/start_be.sh
2.4 构建集群
使用 MySQL 命令行连接 FE
mysql -uroot -P9030 -H127.0.0.1
查看 FE 节点
这里可以看到 host 这里已经是主机名称,不在是之前 IP 地址
添加 BE 节点
alter system add backend "zhangfeng:9050";
注意这里我使用的是主机名称不在是 IP
查看BE节点
这里也可以看到我这边 host 是主机名称而不是 IP
这样集群就构建起来了,我们下面来验证一下我 IP 地址变成不是 192.168.31.54 的看看,会不会有影响。
3. 验证IP地址变更
我将 IP 地址从 54 变更成102,然后我们重新启动集群在看看
这里我将我的hosts文件中的 IP 地址修改成新的
注意:
这里变更 IP 地址需要修改你所有节点的 hosts文件 或者你的 DNS配置
然后重启之后我们在连接上去,可以看到,一切都是正常的
4. 旧集群启用 FQDN
-
首先我们需要将旧的集群如果不是 2.0 版本的需要先升级到 2.0 以上版本
-
FE 至少有三台follower才能进行如下操作,否则会造成集群无法正常启动
操作步骤:
-
逐一对 Follower、Observer 节点进行以下操作(最后操作 Master 节点):
-
停止节点。
-
检查节点是否停止。通过 MySQL 客户端执行
show frontends
,查看该 FE 节点的 Alive 状态直至变为 false -
为节点设置 FQDN:
ALTER SYSTEM MODIFY FRONTEND "<fe_ip>:<edit_log_port>" HOSTNAME "<fe_hostname>"
(停掉master后,会选举出新的master节点,用新的master节点来执行sql语句) -
修改节点配置。修改 FE 根目录中的
conf/fe.conf
文件,添加配置:enable_fqdn_mode = true
-
启动节点。
-
-
BE 节点启用 FQDN 只需要通过 MySQL 执行以下命令,不需要对 BE 执行重启操作。
ALTER SYSTEM MODIFY BACKEND "<backend_ip>:<backend_port>" HOSTNAME "<be_hostname>"