Doris扩容与缩容
IP | 角色 | |
---|---|---|
10.0.0.1 | FE(Leader)、broker | 原有节点 |
10.0.0.2 | FE(FOLLOWER)、broker | 后续扩容节点 |
10.0.0.3 | FE(OBSERVER)、broker | 后续扩容节点 |
10.0.0.4 | BE、broker | 原有节点 |
10.0.0.5 | BE、broker | 原有节点 |
10.0.0.6 | BE、broker | 后续扩容节点 |
FE的扩容与缩容
FE 节点的扩容和缩容过程,不影响当前系统运行。
查看当前 FE 的节点情况:
[root@doris-001 ~]$ mysql -uroot -P9030 -h127.0.0.1
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.99 Doris version doris-2.0.2-rc05-ae923f7
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show frontends\G
*************************** 1. row ***************************
Name: fe_33cfe6c1_1f8c_4ce5_bbeb_977e3197f89e
Host: 10.0.0.1
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 1840060193
Join: true
Alive: true
ReplayedJournalId: 4809
LastHeartbeat: 2023-11-06 13:24:38
IsHelper: true
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
CurrentConnected: Yes
1 row in set (0.02 sec)
增加FE节点,实现FE的高可用
FE 分为 Leader,Follower 和 Observer 三种角色。 默认一个集群,只能有一个 Leader,可以有多个 Follower 和 Observer。如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。
第一个启动的 FE 自动成为 Leader。在此基础上,可以添加若干 Follower 和 Observer。
FE 扩容注意事项:
Follower FE(包括 Leader)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
当 FE 处于高可用部署时(1个 Leader,2个 Follower),建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。
helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。
要扩容的新机器安装FE
#创建文件夹
mkdir -p /app/doris
mkdir -p /app/doris/doris-meta
#解压doris
tar -zxvf /app/apache-doris-2.0.2-bin-x64.tar.gz -C /app/doris/
#创建软链接
ln -s /app/doris/apache-doris-2.0.2-bin-x64/fe/ /app/doris/
修改fe.conf配置
vim fe.conf
#配置文件中指定元数据路径:
meta_dir = /app/doris/doris-meta
#修改绑定 ip(每台机器修改成自己的 ip)
priority_networks = 10.0.0.x/24
#支持Https,打开前端页面
enable_http_server_v2 = true
#增加动态分区
dynamic_partition_enable = true
#启动从节点FE
cd /app/doris/fe/bin
#FE从节点指定主节点启动
./start_fe.sh --helper 10.0.0.1:9010 --daemon
#查看进程
[root@doris-002 bin]# jps
6088 Jps
5098 DorisFE
添加FOLLOWER、OBSERVER节点:
#FE主节点通过MySQL连接,添加FE从节点
ALTER SYSTEM ADD FOLLOWER "10.0.0.2:9010";
Query OK, 0 rows affected (0.00 sec)
ALTER SYSTEM ADD OBSERVER "10.0.0.3:9010";
Query OK, 0 rows affected (0.00 sec
查看FE信息:
MySQL [(none)]> show frontends\G
*************************** 1. row ***************************
Name: fe_33cfe6c1_1f8c_4ce5_bbeb_977e3197f89e
Host: 10.0.0.1
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 1840060193
Join: true
Alive: true
ReplayedJournalId: 5640
LastHeartbeat: 2023-11-06 14:10:31
IsHelper: true
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
CurrentConnected: Yes
*************************** 2. row ***************************
Name: fe_bb8911e1_e439_4cf1_841f_7360309c890f
Host: 10.0.0.2
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: false
ClusterId: 1840060193
Join: true
Alive: true
ReplayedJournalId: 5639
LastHeartbeat: 2023-11-06 14:10:31
IsHelper: true
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
CurrentConnected: No
*************************** 3. row ***************************
Name: fe_71b1fb93_5617_4f0d_acbe_d19077251ef7
Host: 10.0.0.3
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: OBSERVER
IsMaster: false
ClusterId: 1840060193
Join: true
Alive: true
ReplayedJournalId: 5639
LastHeartbeat: 2023-11-06 14:10:31
IsHelper: false
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
CurrentConnected: No
3 rows in set (0.03 sec)
FE扩容成功
删除FE节点
MySQL [(none)]> ALTER SYSTEM DROP FOLLOWER "10.0.0.2:9010";
Query OK, 0 rows affected (0.42 sec)
MySQL [(none)]> ALTER SYSTEM DROP OBSERVER "10.0.0.3:9010";
Query OK, 0 rows affected (0.01 sec)
MySQL [(none)]> show frontends\G
*************************** 1. row ***************************
Name: fe_33cfe6c1_1f8c_4ce5_bbeb_977e3197f89e
Host: 10.0.0.1
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 1840060193
Join: true
Alive: true
ReplayedJournalId: 5774
LastHeartbeat: 2023-11-06 14:17:52
IsHelper: true
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
CurrentConnected: Yes
1 row in set (0.02 sec)
FE 缩容注意事项:
- 删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数。
BE 扩容和缩容
查看BE信息:
MySQL [(none)]> show backends\G
*************************** 1. row ***************************
BackendId: 10153
Host: 10.0.0.4
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-11-06 09:13:13
LastHeartbeat: 2023-11-06 14:19:47
Alive: true
SystemDecommissioned: false
TabletNum: 6
DataUsedCapacity: 0.000
TrashUsedCapcacity: 0.000
AvailCapacity: 168.629 GB
TotalCapacity: 182.959 GB
UsedPct: 7.83 %
MaxDiskUsedPct: 7.83 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
Status: {"lastSuccessReportTabletsTime":"2023-11-06 14:19:08","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
*************************** 2. row ***************************
BackendId: 10154
Host: 10.0.0.5
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-11-06 09:13:16
LastHeartbeat: 2023-11-06 14:19:47
Alive: true
SystemDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000
TrashUsedCapcacity: 0.000
AvailCapacity: 141.477 GB
TotalCapacity: 182.959 GB
UsedPct: 22.67 %
MaxDiskUsedPct: 22.67 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
Status: {"lastSuccessReportTabletsTime":"2023-11-06 14:19:00","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
2 rows in set (0.01 sec)
BE 节点的扩容和缩容过程,不影响当前系统运行以及正在执行的任务,并且不会影响当前系统的性能。数据均衡会自动进行。根据集群现有数据量的大小,集群会在几个小时到1天不等的时间内,恢复到负载均衡的状态。
增加BE节点
要扩容的新机器安装BE
#创建文件夹
mkdir -p /app/doris
mkdir -p /app/software
#创建软链接
ln -s /app/doris/apache-doris-2.0.2-bin-x64/be/ /app/doris/
编辑配置文件
vim /app/doris/be/conf/be.conf
#存储数据路径
storage_root_path = /app/software
#修改绑定 ip(每台机器修改成自己的 ip)
priority_networks = 10.0.0.6/24
#启动BE
cd /app/doris/be/bin
./start_be.sh --daemon
添加BE节点:
ALTER SYSTEM ADD BACKEND "10.0.0.6:9050";
BE 扩容注意事项:
- BE 扩容后,Doris 会自动根据负载情况,进行数据均衡,期间不影响使用。
查看BE信息
MySQL [(none)]> show backends\G
*************************** 1. row ***************************
BackendId: 10153
Host: 10.0.0.4
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-11-06 09:13:13
LastHeartbeat: 2023-11-06 14:26:02
Alive: true
SystemDecommissioned: false
TabletNum: 6
DataUsedCapacity: 0.000
TrashUsedCapcacity: 0.000
AvailCapacity: 168.627 GB
TotalCapacity: 182.959 GB
UsedPct: 7.83 %
MaxDiskUsedPct: 7.83 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
Status: {"lastSuccessReportTabletsTime":"2023-11-06 14:25:29","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
*************************** 2. row ***************************
BackendId: 10154
Host: 10.0.0.5
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-11-06 09:13:16
LastHeartbeat: 2023-11-06 14:26:02
Alive: true
SystemDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000
TrashUsedCapcacity: 0.000
AvailCapacity: 141.453 GB
TotalCapacity: 182.959 GB
UsedPct: 22.69 %
MaxDiskUsedPct: 22.69 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
Status: {"lastSuccessReportTabletsTime":"2023-11-06 14:25:21","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
*************************** 3. row ***************************
BackendId: 11001
Host: 10.0.0.6
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-11-06 14:25:40
LastHeartbeat: 2023-11-06 14:26:02
Alive: true
SystemDecommissioned: false
TabletNum: 15
DataUsedCapacity: 0.000
TrashUsedCapcacity: 10.076 KB
AvailCapacity: 168.720 GB
TotalCapacity: 182.959 GB
UsedPct: 7.78 %
MaxDiskUsedPct: 7.78 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.0.2-rc05-ae923f7
Status: {"lastSuccessReportTabletsTime":"2023-11-06 14:26:06","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
3 rows in set (0.00 sec)
BE扩容成功
删除BE节点
删除 BE 节点有两种方式:DROP 和 DECOMMISSION
DROP语句
ALTER SYSTEM DROP BACKEND "10.0.0.6:9050";
DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,会有对应的防误操作提示。
decommission语句
ALTER SYSTEM DECOMMISSION BACKEND "10.0.0.6";
DECOMMISSION 命令说明:
该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
该命令是一个异步操作。执行后,可以通过 SHOW PROC ‘/backends’; 看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。
该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。
DECOMMISSION 的进度,可以通过 SHOW PROC ‘/backends’; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
该操作可以通过:
CANCEL DECOMMISSION BACKEND “IP:PROT”;
命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡
BROKER的扩容与缩容
Broker 实例的数量没有硬性要求。通常每台物理机部署一个即可。Broker 的添加和删除可以通过以下命令完成:
-- 添加broker
ALTER SYSTEM ADD BROKER broker_name "10.0.0.1:8000";
-- 例:
ALTER SYSTEM ADD BROKER broker_name "10.0.0.1:8000","10.0.0.2:8000","10.0.0.3:8000";
-- 删除指定broker
ALTER SYSTEM DROP BROKER broker_name "10.0.0.1:8000";
-- 删除所有broker
ALTER SYSTEM DROP ALL BROKER broker_name;
Broker 是无状态的进程,可以随意启停。停止后,正在其上运行的作业会失败,重试即可。