目录
1. 通过MySQL客户端连接Doris
2. FE Follower扩缩容
3. FE Observer 扩缩容
4. FE扩缩容注意点
进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容!
FE扩缩容包括FE中Follower的扩缩容和FE中Observer的扩缩容,根据节点划分,这里配置3台Follower(node1~node3)和2台Observer(node4、node5)。
1. 通过MySQL客户端连接Doris
Doris 采用 MySQL 协议进行通信,用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群。选择 MySQL client 版本时建议采用5.1 之后的版本,因为 5.1 之前不能支持长度超过 16 个字符的用户名。
给FE进行扩容同样需要通过MySQL客户端来连接Doris FE ,可以在node1节点上下载免安装的MySQL,命令如下:
[root@node1 ~]# cd /software/
[root@node1 ~]# wget https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
也可以在资料中获取“mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz”文件。
下载完成免安装mysql后,进行解压,在bin/目录下可以找打mysql命令行工具,然后执行命令连接Doris即可,具体操作如下:
#解压 mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
[root@node1 software]# tar -zxvf ./mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
#修改名称
[root@node1 software]# mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql-5.7.22-client
#连接Doris
[root@node1 bin]# ./mysql -u root -P9030 -h127.0.0.1
注意:
- 连接Doris使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户。关于用户权限设置可以参照官网:https://doris.apache.org/zh-CN/docs/dev/admin-manual/privilege-ldap/user-privilege/
- -P 是连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的 query_port。
- -h 是我们连接的 FE IP地址,如果你的客户端和 FE 安装在同一个节点可以使用127.0.0.1,这种也是 Doris 提供的如果你忘记 root 密码,可以通过这种方式不需要密码直接连接登录,进行对 root 密码进行重置。
- 给root用户设置密码,操作如下:
#给当前登录的root用户设置密码为123456
mysql> set password = password('123456');
通过以上设置密码后,再次访问http://node1:8030时,密码需要指定成设置的密码,否则登录不上。
- 查看Doris FE运行状态:
mysql> show frontends\G
*************************** 1. row ***************************
Name: 192.168.179.4_9010_1675512391847
IP: 192.168.179.4
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 1228
LastHeartbeat: 2023-02-04 21:21:23
IsHelper: true
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: Yes
1 row in set (0.02 sec)
注意:如果 IsMaster、Join 和 Alive 三列均为true,则表示节点正常。
2. FE Follower扩缩容
可以通过将Apache Doris FE扩容至3个以上节点来实现FE的高可用,FE节点的扩容和缩容过程中不影响当前系统的运行。根据前面集群的规划要在node1~node3节点上搭建Apache Doris FE,目前在node1搭建好了FE并启动,该启动的FE自动成为Leader,下面在node2和node3节点配置FE后加入到Apache Doris 集群中,给Doris集群扩容,详细步骤如下:
1. 准备FE 安装包
将node1节点上配置好的FE安装包发送到node2,node3节点上
[root@node1 ~]# cd /software/doris-1.2.1/
[root@node1 doris-1.2.1]# scp -r ./apache-doris-fe/ node2:/software/doris-1.2.1/
[root@node1 doris-1.2.1]# scp -r ./apache-doris-fe/ node3:/software/doris-1.2.1/
发送完成后,在node2、node3节点将“apache-doris-fe/doris-meta/”元数据清空或者重新创建该目录,否则后续启动Follower FE有问题,操作如下:
#node2节点
[root@node2 ~]# rm -rf /software/doris-1.2.1/apache-doris-fe/doris-meta/*
#node3节点
[root@node3 ~]# rm -rf /software/doris-1.2.1/apache-doris-fe/doris-meta/*
2. 在node2、node3上修改fe.conf配置文件
这里node2,node3 节点FE配置同node1配置,两台节点中只需要配置/software/doris-1.2.1/apache-doris-fe/conf/fe.conf配置文件中priority_networks 参数为当前节点的ip即可。
# vim /software/doris-1.2.1/apache-doris-fe/conf/fe.conf
...
priority_networks = 192.168.179.5/24 #node2节点
...
...
priority_networks = 192.168.179.6/24 #node3节点
...
3. 在node2、node3上启动FE
node2、node3节点配置FE完成后,由于是Follower角色,已经存在node1为Leader,所以第一次启动时需要执行如下命令,指定Leader所在节点IP和端口,端口为在fe.conf中edit_log_port配置项,默认为9010。
#node2节点启动FE
[root@node2 ~]# cd /software/doris-1.2.1/apache-doris-fe/bin/
[root@node2 bin]# ./start_fe.sh --helper node1:9010 --daemon
#node3节点启动FE
[root@node3 ~]# cd /software/doris-1.2.1/apache-doris-fe/bin/
[root@node3 bin]# ./start_fe.sh --helper node1:9010 --daemon
注意:--helper 参数仅在follower 和observer第一次启动时才需要。
4. 添加FE Follower 到Doris集群
在node1中进入mysql客户端,连接到Doris集群,执行如下命令,将node2,node3启动的FE加入到集群中。
#在node1中通过mysql连接doris集群
[root@node1 bin]# ./mysql -u root -P9030 -h127.0.0.1
#执行命令,将FE Follower加入到Doris集群中
mysql> ALTER SYSTEM ADD FOLLOWER "node2:9010";
Query OK, 0 rows affected (0.05 sec)
mysql> ALTER SYSTEM ADD FOLLOWER "node3:9010";
Query OK, 0 rows affected (0.02 sec)
添加完成之后可以访问node1~node3任何一台节点的8030端口登录WebUI,查看对应的FE信息,这里登录http://node1:8030查看FE信息:
也可以通过SQL “show frontends\G”命令来查询集群信息,当加入了更多的FE后,我们可以在node1 mysql 客户端连接到node1~node3的任何一台节点来编写SQL。
#连接node3 FE 编写SQL
[root@node1 bin]# ./mysql -uroot -P9030 -h192.168.179.6 -p123456
mysql> show frontends\G;
*************************** 1. row ***************************
Name: 192.168.179.4_9010_1675512391847
IP: 192.168.179.4
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 3038
LastHeartbeat: 2023-02-06 12:57:40
IsHelper: true
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: Yes
*************************** 2. row ***************************
Name: 192.168.179.5_9010_1675659168809
IP: 192.168.179.5
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: false
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 3037
LastHeartbeat: 2023-02-06 12:57:40
IsHelper: true
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: No
*************************** 3. row ***************************
Name: 192.168.179.6_9010_1675659173265
IP: 192.168.179.6
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: false
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 3037
LastHeartbeat: 2023-02-06 12:57:40
IsHelper: true
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: No
3 rows in set (0.05 sec)
ERROR:
No query specified
至此,Apache Doris集群中已经完成3台FE Follower的部署(node1~node3)。
对FE Follower扩容完成后,也可以通过以下命令来进行FE Follower缩容,删除FE Follower节点,需要保证最终剩余的Follower(包括Leader)节点为奇数,这里不再演示FE缩容。
#对FE进行缩容命令
ALTER SYSTEM DROP FOLLOWER "fe_host:edit_log_port";
注意:如果缩容后再将该节点加入到集群中需要清空元数据目录:rm -rf /software/doris-1.2.1/apache-doris-fe/doris-meta/*
3. FE Observer 扩缩容
Observer的扩缩容也是基于已有一台FE Leader的前提下进行,这里node1为FE Leader,我们将要在node4,node5节点上配置Observer,Observer配置流程与FE Follower的扩缩容大体一致,步骤如下:
1. 准备FE 安装包
将node1节点上配置好的FE安装包发送到node4,node5节点上
[root@node1 ~]# cd /software/doris-1.2.1/
[root@node1 doris-1.2.1]# scp -r ./apache-doris-fe/ node4:/software/doris-1.2.1/
[root@node1 doris-1.2.1]# scp -r ./apache-doris-fe/ node5:/software/doris-1.2.1/
发送完成后,在node4、node5节点将“apache-doris-fe/doris-meta/”元数据清空或者重新创建该目录,否则后续启动Follower FE有问题,操作如下:
#node4节点清空doris-meta目录
[root@node4 ~]# rm -rf /software/doris-1.2.1/apache-doris-fe/doris-meta/*
#node5节点清空doris-meta目录
[root@node5 ~]# rm -rf /software/doris-1.2.1/apache-doris-fe/doris-meta/*
2. 在node4、node5上修改fe.conf配置文件
这里node4,node5 节点FE配置同node1配置,两台节点中只需要配置/software/doris-1.2.1/apache-doris-fe/conf/fe.conf配置文件中priority_networks 参数为当前节点的ip即可。
# vim /software/doris-1.2.1/apache-doris-fe/conf/fe.conf
...
priority_networks = 192.168.179.7/24 #node4节点
...
...
priority_networks = 192.168.179.8/24 #node5节点
...
3. 在node4、node5上启动FE
node4、node5节点配置FE完成后,由于是Observer角色,已经存在node1为FE Leader,与添加Follower一样,第一次启动时需要执行如下命令,指定Leader所在节点IP和端口,端口为在fe.conf中edit_log_port配置项,默认为9010。
#node4节点启动FE
[root@node4 ~]# cd /software/doris-1.2.1/apache-doris-fe/bin/
[root@node4 bin]# ./start_fe.sh --helper node1:9010 --daemon
#node5节点启动FE
[root@node5 ~]# cd /software/doris-1.2.1/apache-doris-fe/bin/
[root@node5 bin]# ./start_fe.sh --helper node1:9010 --daemon
注意:--helper 参数仅在follower 和observer第一次启动时才需要。
4. 添加FE Observer到Doris集群
在node1中进入mysql客户端,连接到Doris集群,执行如下命令,将node4,node5启动的FE加入到集群中。
#在node1中通过mysql连接doris集群
[root@node1 bin]# ./mysql -u root -P9030 -h127.0.0.1
#执行命令,将FE Observer加入到Doris集群中
mysql> ALTER SYSTEM ADD OBSERVER "node4:9010";
Query OK, 0 rows affected (0.05 sec)
mysql> ALTER SYSTEM ADD OBSERVER "node5:9010";
Query OK, 0 rows affected (0.02 sec)
注意:以上添加OBSERVER 操作与添加FOLLOWER操作命令类似,只是添加的角色不同:ALTER SYSTEM ADD FOLLOWER[OBSERVER] "fe_host:edit_log_port"。
添加完成之后可以访问node1~node5任何一台节点的8030端口登录WebUI,查看对应的FE信息,这里登录http://node1:8030查看FE信息:
也可以通过SQL “show frontends\G”命令来查询集群信息,当加入了更多的FE后,我们可以在node1 mysql 客户端连接到node1~node5的任何一台节点来编写SQL。
#连接node5 FE 编写SQL
[root@node1 bin]# ./mysql -uroot -P9030 -h192.168.179.8 -p123456
mysql> show frontends\G;
*************************** 1. row ***************************
Name: 192.168.179.8_9010_1675670545934
IP: 192.168.179.8
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: OBSERVER
IsMaster: false
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 6430
LastHeartbeat: 2023-02-06 16:06:13
IsHelper: false
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: Yes
*************************** 2. row ***************************
Name: 192.168.179.4_9010_1675512391847
IP: 192.168.179.4
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 6431
LastHeartbeat: 2023-02-06 16:06:13
IsHelper: true
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: No
*************************** 3. row ***************************
Name: 192.168.179.5_9010_1675659168809
IP: 192.168.179.5
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: false
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 6430
LastHeartbeat: 2023-02-06 16:06:13
IsHelper: true
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: No
*************************** 4. row ***************************
Name: 192.168.179.6_9010_1675659173265
IP: 192.168.179.6
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: false
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 6430
LastHeartbeat: 2023-02-06 16:06:13
IsHelper: true
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: No
*************************** 5. row ***************************
Name: 192.168.179.7_9010_1675670543490
IP: 192.168.179.7
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: OBSERVER
IsMaster: false
ClusterId: 131295731
Join: true
Alive: true
ReplayedJournalId: 6430
LastHeartbeat: 2023-02-06 16:06:13
IsHelper: false
ErrMsg:
Version: doris-1.2.1-rc01-Unknown
CurrentConnected: No
5 rows in set (0.10 sec)
至此,Apache Doris集群中已经完成3台FE Follower的部署(node1~node3)、2台Observer的部署(node4、node5)。
对FE Observer扩容完成后,也可以通过以下命令来进行FE Observer缩容,删除FE Observer节点。操作如下:
#将node4、node5 FE Observer进行缩容命令
mysql> ALTER SYSTEM DROP OBSERVER "node4:9010";
mysql> ALTER SYSTEM DROP OBSERVER "node5:9010";
对Observer进行缩容后,再次将对应节点node4、node5加入到Doris FE中就可以按照扩容操作实现。这里只需要将node4、node5节点上“/software/doris-1.2.1/apache-doris-fe/doris-meta”元数据目录清空,启动node4、node5对应的FE进程,然后执行添加命令即可:
#node4节点启动FE
[root@node4 ~]# cd /software/doris-1.2.1/apache-doris-fe/bin/
[root@node4 bin]# ./start_fe.sh --helper node1:9010 --daemon
#node5节点启动FE
[root@node5 ~]# cd /software/doris-1.2.1/apache-doris-fe/bin/
[root@node5 bin]# ./start_fe.sh --helper node1:9010 --daemon
#将node4、node5 FE OBserver 再次加入到Doris集群命令
mysql> ALTER SYSTEM ADD OBSERVER "node4:9010";
mysql> ALTER SYSTEM ADD OBSERVER "node5:9010";
4. FE扩缩容注意点
FE 进行扩缩容时需要注意以下几点:
- Follower FE(包括 Leader)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
- 当 FE 处于高可用部署时(1个 Leader,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
- 通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常3个即可满足绝大部分需求。
- 添加FE 时需要将对应安装包中doris-meta目录清空。
- helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。
- 删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数。