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