stargo缩扩容starrocks集群,实现节点服务器替换

1.背景

在企业中可能需要,将starrocks的某一台服务器下架,换上另一台服务器,如何实现这个操作,本篇将进行介绍;

|----|-----------|-----------|-----------|-----------|
| 节点 | hadoop101 | hadoop102 | hadoop103 | hadoop104 |
| 集群 | 原集群节点 ||| 新节点 |
| fe | ✔ | ✔ | ❌(下线) | ✔(新上线) |
| be | ✔ | ✔ | ❌(下线) | ✔(新上线) |

2.原表副本情况

创建一个测试表

sql 复制代码
CREATE TABLE IF NOT EXISTS detail (
    event_time DATETIME NOT NULL COMMENT "datetime of event",
    event_type INT NOT NULL COMMENT "type of event",
    user_id INT COMMENT "id of user",
    device_code INT COMMENT "device code",
    channel INT COMMENT ""
 )
 DUPLICATE KEY(event_time, event_type)
 DISTRIBUTED BY HASH(user_id)
 PROPERTIES (
 "replication_num" = "3"
 );

查看分本在节点的分布情况,可以看出在三节点均匀分布

sql 复制代码
mysql> ADMIN SHOW REPLICA DISTRIBUTION FROM detail;
+-----------+------------+-------+---------+
| BackendId | ReplicaNum | Graph | Percent |
+-----------+------------+-------+---------+
| 10007     | 6          | >     | 33.33 % |
| 10084     | 6          | >     | 33.33 % |
| 10085     | 6          | >     | 33.33 % |
+-----------+------------+-------+---------+
3 rows in set (0.10 sec)

3.扩容集群

stargo 中的"集群扩容"是指集群的"横向扩容",即为原有的集群增加 FE、BE 或 Broker 节点。

语法:

bash 复制代码
./stargo cluster scale-out <cluster_name> <topology_file>
## cluster_name:需扩容集群的集群名,例如这里的'sr-c1'
## topology_file:包含扩容节点对应信息的yaml拓扑文件,文件名称随意,stargo通过该文件获取扩容节点的ip、端口及目录信息

3.0 配置ssh

在执行扩容命令前,我们仍需在目标服务器上手动创建对应的目录,并配置 stargo 所在节点对目标节点的免密。

3.1 编辑yaml文件

扩容的 yaml 文件中只需要配置需扩容节点相关的信息,不需要也不能填写已有集群的信息。扩容的 yaml 不需要编写 global 中的信息,这部分会直接沿用原集群的信息。其他信息参考部署时的模板文件填入即可,例如 sr-out.yaml:

bash 复制代码
[root@hadoop101 stargo-v2.3]# vim sr-out.yaml

fe_servers:
  - host: 192.21.243.51
    ssh_port: 22
    java_heap_mem: 10240
    http_port: 8031
    rpc_port: 9021
    query_port: 9031
    edit_log_port: 9011
    deploy_dir: /opt/module/starrocks/fe
    meta_dir: /data/starrocks/fe/meta
    log_dir: /data/starrocks/fe/log
    priority_networks: 172.21.243.51
    role: FOLLOWER
    config:
      sys_log_level: "INFO"
be_servers:
  - host: 192.21.243.51
    ssh_port: 22
    be_port: 9061
    webserver_port: 8041
    heartbeat_service_port: 9051
    brpc_port: 8061
    deploy_dir : /opt/module/starrocks/be
    storage_dir: /data/starrocks/be/storage
    log_dir: /data/starrocks/be/log
    priority_networks: 172.21.243.51
    config:
      enable_new_load_on_memory_limit_exceeded: true
      mem_limit: 90%

3.2 在新节点上创建目录

bash 复制代码
[root@hadoop104 ~] mkdir /data/starrocks
[root@hadoop104 ~] mkdir /opt/module/starrocks

3.3 运行检查

分发stargo到hadoop104

运行服务检查

bash 复制代码
[root@hadoop104 stargo-v2.3] ./env_check.sh 

############################ CPU检查 #############################
success

########################## Linux版本检查 ##########################
success

########################## Glibc版本检查 ##########################
success

############################ Swap检查 ############################
success
success

########################### 内核参数检查 ##########################
success
success

####################### 进程最大打开文件数检查 ######################
success

####################### 用户最大可用进程数检查 ######################
success

########################### FE端口检查 ###########################
success

########################### BE端口检查 ###########################
success

######################### Broker端口检查 #########################
success

########################### 防火墙检查 ###########################
success

########################## TCP参数检查 ###########################
success

######################### Somaxconn检查 #########################
success

########################## SELinux检查 ###########################
success

########################## Hugepage检查 ##########################
success
success

########################## 时钟同步检查 ##########################
success

############################ 时区检查 ############################
success

########################## 磁盘容量检查 ##########################
success

########################## 内存大小检查 ##########################
服务器内存较小,为保证集群性能和稳定性,生产环境的建议内存为32G+

######################### Netstat命令检查 ########################
success

3.4 执行扩容命令

bash 复制代码
[root@hadoop101 stargo-v2.3] ./stargo cluster scale-out sr-c1 sr-out.yaml


############################################# SCALE OUT BE CLUSTER #############################################
############################################# SCALE OUT BE CLUSTER #############################################
[2025-08-27 19:04:34.728881    INFO] Starting BE node [BeHost = 172.21.243.51 HeartbeatServicePort = 9051]
[2025-08-27 19:04:58.787840    INFO] The BE node start succefully [host = 172.21.243.51, heartbeatServicePort = 9051]
[2025-08-27 19:04:58.787926  OUTPUT] List all BE status:
                                        beHost = 172.21.243.51       beHeartbeatServicePort = 9051      beStatus = true

[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 19:05:17.874878    INFO] Display cluster [clusterName = sr-c1]
clusterName = sr-c1
clusterVerison = v3.0.9
ID                          ROLE    HOST                  PORT             STAT        DEPLOYDIR                                           DATADIR                                           
--------------------------  ------  --------------------  ---------------  ----------  --------------------------------------------------  --------------------------------------------------
172.21.243.157:9011         FE      172.21.243.157        9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        UP/L        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.19:9011          FE      172.21.243.19         9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.51:9011          FE      172.21.243.51         9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.157:9061         BE      172.21.243.157        9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.14:9061          BE      172.21.243.14         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.19:9061          BE      172.21.243.19         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.51:9061          BE      172.21.243.51         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage 

3.5 查看集群块存储分布情况

sql 复制代码
mysql> ADMIN SHOW REPLICA DISTRIBUTION FROM detail;
+-----------+------------+-------+---------+
| BackendId | ReplicaNum | Graph | Percent |
+-----------+------------+-------+---------+
| 10007     | 4          | >     | 22.22 % |
| 10084     | 5          | >>    | 27.78 % |
| 10085     | 5          | >>    | 27.78 % |
| 13036     | 4          | >     | 22.22 % |
+-----------+------------+-------+---------+
4 rows in set (0.01 sec)

starrocks会自动执行数据均衡

4.缩容集群

stargo 中的集群缩容仍是指横向缩容,即将集群中的某个节点在集群中删除。对于 FE、CN 和 Broker 实例,stargo 会直接执行 Drop 命令,该命令为同步操作,执行后对应节点即完成缩容。而对于 BE 实例,基于数据安全考虑,stargo 会执行 DECOMMISSION 命令,该命令为异步操作,需等待目标 BE 将自己的数据迁移至集群其他节点后才会脱离集群完成缩容,所以实际的缩容时间会随该节点数据量的增大而增加。

说明:

1)FE Leader节点不允许缩容,可以先停止其服务待集群重新选主后再执行缩容。

2)BE 是否被执行缩容可通过 show backends; 命令返回值中的 SystemDecommissioned 是否为 true 来判断。在 BE 开始缩容后,其上的 tablet 会自动迁移至集群其他节点,故 BE 的缩容进度可通过返回值中的 TabletNum 剩余数来粗估。

3)因 DECOMMISSION 为异步操作,stargo 仅会在执行缩容命令后给出提示,并不会一直等待缩容完成。若发现集群缩容一直未完成,在确认集群中表都为三副本且集群中没有不健康副本后,可在 StarRocks 中对该 BE 再次执行 drop 命令。

集群缩容的语法为:

bash 复制代码
./stargo cluster scale-in <cluster_name> --node <nodeId>
## cluster_name:需缩容的集群名称
## nodeId:缩容节点的节点ID,即为通过display命令查到的ID字段值

4.1 先缩容FE节点

先查看集群状态

bash 复制代码
[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 19:15:31.442134    INFO] Display cluster [clusterName = sr-c1]
clusterName = sr-c1
clusterVerison = v3.0.9
ID                          ROLE    HOST                  PORT             STAT        DEPLOYDIR                                           DATADIR                                           
--------------------------  ------  --------------------  ---------------  ----------  --------------------------------------------------  --------------------------------------------------
172.21.243.157:9011         FE      172.21.243.157        9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        UP/L        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.19:9011          FE      172.21.243.19         9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.51:9011          FE      172.21.243.51         9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.157:9061         BE      172.21.243.157        9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.14:9061          BE      172.21.243.14         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.19:9061          BE      172.21.243.19         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.51:9061          BE      172.21.243.51         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage      

退役hadoop103节点FE服务

bash 复制代码
[root@hadoop101 stargo-v2.3] ./stargo cluster scale-in sr-c1 --node 172.21.243.19:9011
[2025-08-27 19:16:23.388499  OUTPUT] Start scale in cluster [clusterName = sr-c1, nodeId = 172.21.243.19:9011]
[2025-08-27 19:16:23.959336  OUTPUT] Scale in FE node successfully. [clusterName = sr-c1, nodeId = 172.21.243.19:9011]

查看集群节点退役成功

bash 复制代码
[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 19:16:32.184010    INFO] Display cluster [clusterName = sr-c1]
clusterName = sr-c1
clusterVerison = v3.0.9
ID                          ROLE    HOST                  PORT             STAT        DEPLOYDIR                                           DATADIR                                           
--------------------------  ------  --------------------  ---------------  ----------  --------------------------------------------------  --------------------------------------------------
172.21.243.157:9011         FE      172.21.243.157        9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        UP/L        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.51:9011          FE      172.21.243.51         9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.157:9061         BE      172.21.243.157        9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.14:9061          BE      172.21.243.14         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.19:9061          BE      172.21.243.19         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.51:9061          BE      172.21.243.51         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage               

4.2 缩容BE节点

bash 复制代码
[root@hadoop101 stargo-v2.3] ./stargo cluster scale-in sr-c1 --node 172.21.243.19:9061
[2025-08-27 19:20:52.360015  OUTPUT] Start scale in cluster [clusterName = sr-c1, nodeId = 172.21.243.19:9061]
[2025-08-27 19:20:52.472146  OUTPUT] Scale in BE node successfully. [clusterName = sr-c1, nodeId = 172.21.243.19:9061]
[2025-08-27 19:20:52.472177  OUTPUT] 注意:BE的缩容为异步操作,当前提示仅代表缩容命令执行完成。缩容命令执行后,后台会先将目标节点的tablet迁移至集群其他BE节点,在迁移完成后将该BE将自动脱离集群。Tablet迁移进度可通过"show backends;"语句查看TabletNum进行判断。若目标节点的tablet仅剩数十个且TabletNum长时间不减少,则可考虑执行"show proc '/statistic';"语句,在确认集群无不健康tablet副本后将目标BE手动Drop掉。

查看集群状态节点退役成功

bash 复制代码
[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 19:26:18.927756    INFO] Display cluster [clusterName = sr-c1]
clusterName = sr-c1
clusterVerison = v3.0.9
ID                          ROLE    HOST                  PORT             STAT        DEPLOYDIR                                           DATADIR                                           
--------------------------  ------  --------------------  ---------------  ----------  --------------------------------------------------  --------------------------------------------------
172.21.243.157:9011         FE      172.21.243.157        9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        UP/L        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.51:9011          FE      172.21.243.51         9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.157:9061         BE      172.21.243.157        9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.14:9061          BE      172.21.243.14         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.51:9061          BE      172.21.243.51         9061/9051        UP          /opt/module/starrocks/be                            /data/starrocks/be/storage 

查看集群块分布情况,数据均衡退役成功

sql 复制代码
mysql> ADMIN SHOW REPLICA DISTRIBUTION FROM detail;
+-----------+------------+-------+---------+
| BackendId | ReplicaNum | Graph | Percent |
+-----------+------------+-------+---------+
| 10007     | 6          | >     | 33.33 % |
| 10084     | 6          | >     | 33.33 % |
| 13036     | 6          | >     | 33.33 % |
+-----------+------------+-------+---------+

5.查看集群元数据

集群节点已经替换为新添加的节点,旧节点从集群元文件中删除

sql 复制代码
[root@hadoop101 sr-c1] vim /root/.stargo/cluster/sr-c1/meta.yaml