1.背景
在企业中可能需要,将starrocks的某一台服务器下架,换上另一台服务器,如何实现这个操作,本篇将进行介绍;
节点 | hadoop101 | hadoop102 | hadoop103 | hadoop104 |
集群 | 原集群节点 | 新节点 | ||
fe | ✔ | ✔ | ❌(下线) | ✔(新上线) |
be | ✔ | ✔ | ❌(下线) | ✔(新上线) |
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> <topology_file>
## 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.51ssh_port: 22java_heap_mem: 10240http_port: 8031rpc_port: 9021query_port: 9031edit_log_port: 9011deploy_dir: /opt/module/starrocks/femeta_dir: /data/starrocks/fe/metalog_dir: /data/starrocks/fe/logpriority_networks: 172.21.243.51role: FOLLOWERconfig:sys_log_level: "INFO"
be_servers:- host: 192.21.243.51ssh_port: 22be_port: 9061webserver_port: 8041heartbeat_service_port: 9051brpc_port: 8061deploy_dir : /opt/module/starrocks/bestorage_dir: /data/starrocks/be/storagelog_dir: /data/starrocks/be/logpriority_networks: 172.21.243.51config:enable_new_load_on_memory_limit_exceeded: truemem_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检查 ############################
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 执行扩容命令
[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 查看集群块存储分布情况
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 <cluster_name> --node <nodeId>
## 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-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服务
[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-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节点
[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-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
查看集群块分布情况,数据均衡退役成功
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