扩容缩容
Doris 可以很方便的扩容和缩容 FE、BE、Broker 实例。
FE 扩容和缩容
可以通过将 FE 扩容至 3 个以上节点来实现 FE 的高可用。
用户可以通过 mysql 客户端登陆 Master FE。通过:
SHOW PROC '/frontends';
来查看当前 FE 的节点情况。
FE 节点的扩容和缩容过程,不影响当前系统运行。
1. 增加 FE 节点
FE 分为 Follower 和 Observer 两种角色。其中多个 Follower 行程可选组组,自动选择出一个作为 Leader。一个集群,只能有一个 Leader,其余为 Follower 和 Observer。如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。
第一个启动的 FE 自动成为 Leader。在此基础上,可以添加若干 Follower 和 Observer。
添加 Follower 或 Observer。使用 mysql-client 连接到已启动的 FE,并执行:
ALTER SYSTEM ADD FOLLOWER "host:port";
或
ALTER SYSTEM ADD OBSERVER "host:port";
其中 host 为 Follower 或 Observer 所在节点 ip,port 为其配置文件 fe.conf 中的 edit_log_port。
配置及启动 Follower 或 Observer。Follower 和 Observer 的配置同 Leader 的配置。第一次启动时,需执行以下命令:
./bin/start_fe.sh --helper host:port --daemon
其中 host 为 Leader 所在节点 ip, port 为 Leader 的配置文件 fe.conf 中的 edit_log_port。--helper 参数仅在 follower 和 observer 第一次启动时才需要。
查看 Follower 或 Observer 运行状态。使用 mysql-client 连接到任一已启动的 FE,并执行:SHOW PROC '/frontends'; 可以查看当前已加入集群的 FE 及其对应角色。
FE 扩容注意事项:
1. Follower FE(包括 Leader)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
2. 当 FE 处于高可用部署时(1个 Leader,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
3. 通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。
4. helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。
2. 删除 FE 节点
使用以下命令删除对应的 FE 节点:
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";
FE 缩容注意事项:
1. 删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数。
2. 不可删除当前 Leader FE 节点。如需删除 Leader,请先将 Leader 节点服务杀掉,等自动选出新的 Leader 后,在通过命令删除这个节点。
BE 扩容和缩容
用户可以通过 mysql-client 登陆 Leader FE。通过:
SHOW PROC '/backends';
来查看当前 BE 的节点情况。
BE 节点的扩容和缩容过程,不影响当前系统运行以及正在执行的任务,并且不会影响当前系统的性能。数据均衡会自动进行。根据集群现有数据量的大小,集群会在几个小时到1天不等的时间内,恢复到负载均衡的状态。
3. 增加 BE 节点
BE 节点的增加方式同 BE 部署 一节中的方式,通过 ALTER SYSTEM ADD BACKEND
命令增加 BE 节点。
BE 扩容注意事项:
BE 扩容后,Doris 会自动根据负载情况,进行数据均衡,期间不影响使用。
4. 删除 BE 节点
删除 BE 节点有两种方式:DROP 和 DECOMMISSION
DROP 语句如下:
ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";
注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以我们强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,会有对应的防误操作提示。
DECOMMISSION 语句如下:
ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
DECOMMISSION 命令说明:
1. 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
2. 该命令是一个异步操作。执行后,可以通过
SHOW PROC '/backends';
看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。3. 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。
4. DECOMMISSION 的进度,可以通过
SHOW PROC '/backends';
中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。5. 该操作可以通过:
CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡
Broker 扩容缩容
Broker 实例的数量没有硬性要求。通常每台物理机部署一个即可。Broker 的添加和删除可以通过以下命令完成:
ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port"; ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port"; ALTER SYSTEM DROP ALL BROKER broker_name;
Broker 是无状态的进程,可以随意启停。当然,停止后,正在其上运行的作业会失败,重试即可。
集群升级
Palo 的升级方式和 Apache Doris 完全一致。用户也可以参考 Apache Doris 官网文档 进行升级。
本章节说明用户下载新版本的二进制包后的升级步骤。
注1:升级是在原集群上升级,无需重做数据。
注2:通常情况下,集群升级只需升级 FE、BE、Broker 进程。
注3:升级流程须严格按照 BE -> FE -> Broker 的顺序进行升级。
升级步骤
这里我们以从 0.14.13.1 版本升级到 0.15.1-rc03 版本为例。
1. 下载二进制包并解压
tar xzf PALO-0.15.1-rc03-binary.tar.gz
解压后的目录结构如下:
├── PALO-0.15.1-rc03-binary ├── apache_hdfs_broker ├── auditloader.zip ├── be ├── doris-flink-1.0-SNAPSHOT.jar ├── doris-spark-1.0.0-SNAPSHOT.jar ├── fe └── udf
2. 升级 BE
这里我们假设 BE 的安装路径为 /path/to/be/
。BE 节点分别为 hostA、hostB、hostC。
通过以上步骤将所有 BE 节点升级完成后。可以进一步先观察集群运行情况,再继续升级 FE 节点。
- 1. 首先我们进入到 hostA 的
/path/to/be/
目录下,通过sh bin/stop_be.sh
停止 BE 进程。 - 2. 将
/path/to/be/lib/
目录中的palo_be
和meta_tool
文件替换为新版本中的PALO-0.15.1-rc03-binary/be/lib/
目录下的同名文件。 - 3. 通过
sh bin/start_be.sh --daemon
启动 BE 进程。 - 4. 此时,我们已经完成 hostA 上 BE 节点的更新。此时我们可以先观察集群运行是否正常。如果一切正常,则可以重复步骤 1-3 来升级其余的 2 个BE节点。(Palo 保证新版本的向前兼容性,所以新版本原则上是可以和旧版本同时运行的。)
- 3. 升级 FE
- 1. FE 节点的升级顺序为:
Observer -> 非 Master FE 节点 -> Master FE 节点
- FE 的节点类型和是否是 Master,可以通过
show frontends
语句结果中的Role
和IsMaster
列获取。 - 如果只部署了一个 FE 节点,强烈建议先按照 Doris 官方升级文档 中的 测试 FE 元数据兼容性 一节进行元数据兼容性验证。
- 通过以上步骤将所有 FE 节点升级完成后。则 Palo 的主进程(FE、BE)都已升级完成。
- 2. 进入 FE 的安装路径
/path/to/fe/
,通过sh bin/stop_fe.sh
停止 FE 进程。 - 3. 将
/path/to/fe/lib/
目录整体替换为新版本中的PALO-0.15.1-rc03-binary/fe/lib/
目录。 - 4. 通过
sh bin/start_fe.sh --daemon
启动 FE 进程。 - 5. 此时,我们已经完这个 FE 节点的更新。此时我们可以通过 MySQL client 连接这个 FE 节点进行一些查询或导入操作,来观察集群是否正常。如果一切正常,则可以重复步骤 1-3 来升级其余的 FE 节点。
- 4. 升级 Broker
- 如果用户部署了 Broker 进程,则可以按照以下步骤进行升级。
- Broker 为无状态进程,全部升级即可。
- 通过以上步骤将所有 Broker 节点升级完成即可。
- 1. 进入 Broker 的安装路径
/path/to/broker/
,通过sh bin/stop_broker.sh
停止 Broker 进程。 - 2. 将
/path/to/broker/lib/
目录整体替换为新版本中的PALO-0.15.1-rc03-binary/apache_hdfs_broker/lib/
目录。 - 3. 通过
sh bin/start_broker.sh --daemon
启动 Broker 进程。 - 4. 此时,我们已经完这个 Broker 节点的更新。重复步骤 1-3 来升级其余的 Broker 节点。
- 5. 测试升级结果
- 通过 MySQL client 连接任意 FE 节点进行业务操作,观察业务运行情况即可。
关于版本回滚
因为数据库是一个有状态的服务,所以在大多数情况下,Palo/Doris 无法支持版本回滚(版本降级)。在某些情况下,可以支持 3 位或 4 位版本的回滚,但不会支持 2 为版本的回滚。
所以建议通过先升级部分节点并观察业务运行情况的方式(灰度升级)来降低升级风险。
如有回滚需求,请事先联系 Palo/Doris 开发人员进行确认。
非法的回滚操作可能导致数据丢失和损坏。