stargo缩扩容starrocks集群,实现节点服务器替换
1.背景
在企业中可能需要,将starrocks的某一台服务器下架,换上另一台服务器,如何实现这个操作,本篇将进行介绍;
2.原表副本情况
创建一个测试表
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\" );
查看分本在节点的分布情况,可以看出在三节点均匀分布
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 节点。
语法:
./stargo cluster scale-out ## cluster_name:需扩容集群的集群名,例如这里的\'sr-c1\'## topology_file:包含扩容节点对应信息的yaml拓扑文件,文件名称随意,stargo通过该文件获取扩容节点的ip、端口及目录信息
3.0 配置ssh
在执行扩容命令前,我们仍需在目标服务器上手动创建对应的目录,并配置 stargo 所在节点对目标节点的免密。
3.1 编辑yaml文件
扩容的 yaml 文件中只需要配置需扩容节点相关的信息,不需要也不能填写已有集群的信息。扩容的 yaml 不需要编写 global 中的信息,这部分会直接沿用原集群的信息。其他信息参考部署时的模板文件填入即可,例如 sr-out.yaml:
[root@hadoop101 stargo-v2.3]# vim sr-out.yamlfe_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 在新节点上创建目录
[root@hadoop104 ~] mkdir /data/starrocks[root@hadoop104 ~] mkdir /opt/module/starrocks
3.3 运行检查
分发stargo到hadoop104
运行服务检查
[root@hadoop104 stargo-v2.3] ./env_check.sh ############################ CPU检查 #############################success########################## Linux版本检查 ##########################success########################## Glibc版本检查 ##########################success############################ Swap检查 ############################successsuccess########################### 内核参数检查 ##########################successsuccess####################### 进程最大打开文件数检查 ######################success####################### 用户最大可用进程数检查 ######################success########################### FE端口检查 ###########################success########################### BE端口检查 ###########################success######################### Broker端口检查 #########################success########################### 防火墙检查 ###########################success########################## TCP参数检查 ###########################success######################### Somaxconn检查 #########################success########################## SELinux检查 ###########################success########################## Hugepage检查 ##########################successsuccess########################## 时钟同步检查 ##########################success############################ 时区检查 ############################success########################## 磁盘容量检查 ##########################success########################## 内存大小检查 ##########################服务器内存较小,为保证集群性能和稳定性,生产环境的建议内存为32G+######################### Netstat命令检查 ########################success
3.4 执行扩容命令
[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-c1clusterVerison = v3.0.9ID 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 查看集群块存储分布情况
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 命令。
集群缩容的语法为:
./stargo cluster scale-in --node ## cluster_name:需缩容的集群名称## nodeId:缩容节点的节点ID,即为通过display命令查到的ID字段值
4.1 先缩容FE节点
先查看集群状态
[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-c1clusterVerison = v3.0.9ID 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服务
[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]
查看集群节点退役成功
[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-c1clusterVerison = v3.0.9ID 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节点
[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掉。
查看集群状态节点退役成功
[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-c1clusterVerison = v3.0.9ID 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
查看集群块分布情况,数据均衡退役成功
mysql> ADMIN SHOW REPLICA DISTRIBUTION FROM detail;+-----------+------------+-------+---------+| BackendId | ReplicaNum | Graph | Percent |+-----------+------------+-------+---------+| 10007 | 6 | > | 33.33 % || 10084 | 6 | > | 33.33 % || 13036 | 6 | > | 33.33 % |+-----------+------------+-------+---------+
5.查看集群元数据
集群节点已经替换为新添加的节点,旧节点从集群元文件中删除
[root@hadoop101 sr-c1] vim /root/.stargo/cluster/sr-c1/meta.yaml