Doris扩容与缩容

本文详细介绍了Doris数据库系统中FE节点(包括Leader、Follower和Observer)的扩容与缩容过程,以及BE节点和Broker的管理方法,强调了注意事项和最佳实践,如FE节点保持奇数个以实现高可用,BE节点的自动负载均衡等。
摘要由CSDN通过智能技术生成

Doris扩容与缩容

IP角色
10.0.0.1FE(Leader)、broker原有节点
10.0.0.2FE(FOLLOWER)、broker后续扩容节点
10.0.0.3FE(OBSERVER)、broker后续扩容节点
10.0.0.4BE、broker原有节点
10.0.0.5BE、broker原有节点
10.0.0.6BE、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 缩容注意事项:

  1. 删除 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 扩容注意事项:

  1. 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 是无状态的进程,可以随意启停。停止后,正在其上运行的作业会失败,重试即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值