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