stargo部署starrocks

发布于:2025-08-30 ⋅ 阅读:(16) ⋅ 点赞:(0)

1. stargo介绍

        StarGo 是用于管理多个 StarRocks 集群的命令行工具,通过 StarGo 我们可以进行多集群的部署、查看、启停、调参、升级、降级及扩缩容等操作。

2.下载地址

stargo下载地址https://forum.mirrorship.cn/t/topic/4945starrocks中文镜像下载地址https://www.mirrorship.cn/zh-CN/download/community

3. 安装部署

节点 hadoop101 hadoop102 hadoop103
fe
be

3.1 文件准备

[root@hadoop101 software] ls |grep star
stargo-v2.3.tar.gz
[root@hadoop101 software] ls |grep Star
StarRocks-3.0.9.tar.gz
[root@hadoop101 software] tar -zxvf stargo-v2.3.tar.gz -C ../module/

[root@hadoop101 software] cd ../module/stargo-v2.3/
[root@hadoop101 stargo-v2.3] ll
total 61776
-rw-r--r-- 1 root root     3522 Aug 15  2023 deploy-template.yaml
-rwxr-xr-x 1 root root    11345 Oct 11  2023 env_check.sh
-rw-r--r-- 1 root root 54048998 Sep  7  2023 jdk8u362-b09.tar.gz
-rw-r--r-- 1 root root    57612 Nov 22  2023 README.md
-rw-r--r-- 1 root root      195 Oct 17  2023 repo.yaml
-rwxr-xr-x 1 root root  9124923 Nov 13  2023 stargo

分发配置文件
[root@hadoop101 module] xsync.sh /opt/software/StarRocks-3.0.9.tar.gz
[root@hadoop101 module] xsync.sh /opt/module/stargo-v2.3

3.1.1 deploy-template.yaml

deploy-template.yaml 是集群配置信息的拓扑文件模板,我们可根据该模板来编辑目标集群的 yaml 配置文件

3.1.2 env_check.sh

env_check.sh 是配合 StarGo 进行部署前环境检查的 shell 脚本,用来检查当前服务器的 CPU、系统内核、端口占用、重要系统参数等是否符合 StarRocks 的部署要求,对检查通过的项打印绿色的 success,未通过的项会以红色字体给出提示及调参说明。具体的检测项说明见附录

该脚本需要手动的在集群中的每台服务器中执行。stargo 主程序在运行时也会对集群所有的节点进行数项关键参数的校验,但在部署前仍然建议手动运行检测脚本,并根据提示对集群进行完整的调参。

注意:检测脚本对检测异常项给出的调参语句大多为临时调整命令(即执行后立刻生效,重启服务器后会失效),永久修改的方法可参考官方文档https://docs.mirrorship.cn/zh-cn/latest/deployment/environment_configurations

3.1.3 jdk8u362-b09.tar.gz

jdk8u362-b09.tar.gz 是 StarGo 内置的 Eclipse Temurin OpenJDK(精简了官方版本的源码包和说明文档),该 JDK 已经过社区多轮的兼容性测试验证,可以稳定使用。StarGo 会为部署的每个实例分发一份 JDK 并在其启动脚本中添加程序级的环境变量。

若希望集群使用 Oracle JDK,可在部署集群前将 Oracle 官方 jdk-8u201-linux-x64.tar.gzjdk-11.0.2_linux-x64_bin.tar.gz 放入 StarGo 目录(仅额外支持了这两个在 Oracle 变更 OTN 许可协议前的可商用版本,StarGo 是以 JDK 包名和解压后的文件夹名称来识别的),当目录内同时存在上述的多个 JDK 时,优先级为 jdk-11.0.2_linux-x64_bin.tar.gz > jdk-8u201-linux-x64.tar.gz > jdk8u362-b09.tar.gz。在每次进行集群升降级或扩容操作时,StarGo 都会使用该 JDK 包为 StarRocks 程序重新分发一次 JDK。

3.1.4 repo.yaml

repo.yaml 是 StarGo 获取本地部署包的配置文件。在我们进行部署、升级、降级或扩容操作时我们需要在其中配置目标版本的部署包路径及包名,示例如下:

#该配置文件配置部署、升级/降级或扩容时需用的StarRocks二进制包路径及包名:
sr_path: /opt/software/           ## 部署包所在文件夹路径,路径末尾的"/"加或者不加逻辑上都不影响
sr_name: StarRocks-3.0.9.tar.gz   ## 安装包包名。除官网发布的Release安装包外,stargo新版本也支持了自定义安装包,但需保证手动创建压缩包时使用tar -czvf命令(即需要使用gzip压缩),同时安装包文件名与解压后的文件夹名称也要相同,且解压后的文件夹下层需为fe、be、apache_hdfs_broker这三个程序目录(换言之就是需要和官网发布的安装包目录层次相同)。

3.1.5  stargo

stargo 文件是 StarGo 的核心二进制文件,无需安装,没有特殊依赖,开箱即用,使用前确认文件拥有可执行权限即可。

stargo 程序只需在集群内或者集群外的任意一个节点上放置,若后续需要对 stargo 升级,可直接替换该文件为新版本文件(如果发现内置的 jdk 版本不一致,也需要将 jdk 替换为新版的)。

3.2 环境检测和调优

[root@hadoop101 stargo-v2.3] ./env_check.sh 

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

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

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

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

########################### 内核参数检查 ##########################
success
检查项2:推荐调整max_map_count=262144,来调大进程可拥有的内存映射区域的最大数量以保障程序稳定性,临时调整命令:echo 262144 | sudo tee /proc/sys/vm/max_map_count

####################### 进程最大打开文件数检查 ######################
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.2.1 环境检测脚本说明

############################ CPU检查 #############################
StarRocks BE需要CPU支持AVX2指令集才可启动,请更换至符合要求的x86架构服务器
#说明:该项为硬件检测,提示异常时,x86架构下需要更换服务器,ARM架构下需使用为ARM架构单独编译的StarRocks部署包。

########################## Linux版本检查 ##########################
若无特殊原因,建议您更换使用CentOS7部署StarRocks,该系统当前测试最为充分
#说明:从稳定性角度考虑,建议生产环境直接使用CentOS 7.9。

########################## Glibc版本检查 ##########################
StarRocks BE要求glibc版本最低为2.17才可启动,请升级glibc或使用更高内核版本的系统
或:检测到较高的glibc版本,StarRocks BE或将无法启动,请更换或降级系统为CentOS7
#说明:官网提供的安装包在Linux系统glibc版本小于2.17或大于2.37,BE启动都会有问题,所以再次建议使用CentOS 7进行部署。

############################ Swap检查 ############################
检查项1:使用swap分区可能影响查询性能,建议配置为不优先使用,临时配置命令:echo 0 | sudo tee /proc/sys/vm/swappiness
检查项2:检查到swap分区未禁用,推荐禁用,临时禁用命令:swapoff -a
#说明:重要参数,关闭后可有效避免查询抖动问题。

########################### 内核参数检查 ##########################
检查项1:推荐调整overcommit_memory=1,以允许内核分配所有的物理内存来保障程序稳定性,临时调整命令:echo 1 | sudo tee /proc/sys/vm/overcommit_memory
检查项2:推荐调整max_map_count=262144,来调大进程可拥有的内存映射区域的最大数量以保障程序稳定性,临时调整命令:echo 262144 | sudo tee /proc/sys/vm/max_map_count
#说明:重要参数,可有效避免环境原因引起的BE异常退出。

######################## 最大打开文件数检查 ########################
句柄数限制过小可能导致服务异常退出,完整调整命令:ulimit -n 655350 && echo -e '* soft nofile 655350\n* hard nofile 655350' >> /etc/security/limits.conf
#说明:重要参数,过小BE可能会无法正常运行。若之前未手动修改过配置文件,可直接执行提示中的完整调整命令。

######################## 最大打开进程数检查 ########################
进程数限制过小可能导致服务异常退出,完整调整命令:ulimit -u 655350 && echo -e '* soft nproc 655350\n* hard nproc 655350' >> /etc/security/limits.conf && sed -i 's/4096/655350/' /etc/security/limits.d/20-nproc.conf
#说明:重要参数,过小BE可能会无法正常运行。若之前未手动修改过配置文件,可直接执行提示中的完整调整命令。

########################### FE端口检查 ###########################
FE需用的默认端口被占用,请检查或在部署时调整端口,检查命令:ss -antpl | grep -E '8030|9010|9020|9030'
#说明:FE需用的端口有四个,若当前服务器混布了其他服务(例如yarn.resourcemanager),就可能会冲突,此时就需要调整yaml配置中的端口。

########################### BE端口检查 ###########################
BE需用的默认端口被占用,请检查或在部署时调整端口,检查命令:ss -antpl | grep -E '9060|9050|8040|8060|9070'
#说明:BE需用的端口有四个,若当前服务器混布了其他服务(例如yarn.nodemanager),就可能会冲突,此时就需要调整yaml配置中的端口。

######################### Broker端口检查 #########################
Broker需用的默认端口被占用,请检查或在部署时调整端口,检查命令:ss -antpl | grep '8000'
#说明:Broker需用的仅为8000端口,若和服务器中已有服务冲突,就需要调整yaml配置中的端口。

########################### 防火墙检查 ###########################
系统防火墙为启用状态,为保证集群内部通信,建议关闭防火墙或开放端口,完整关闭命令:systemctl stop firewalld && systemctl disable firewalld
#说明:多台服务器之间相互通信需要开发上述端口,生产环境通常有其他防护措施,建议直接关闭系统防火墙并禁用开机自启。

########################## TCP参数检查 ###########################
推荐调整tcp_abort_on_overflow参数值为1,临时调整命令:echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
#说明:重要参数,可避免tcp引起的查询或写入报错。

######################### Somaxconn检查 #########################
推荐调整somaxconn参数值为1024,临时调整命令:echo 1024 | sudo tee /proc/sys/net/core/somaxconn
#说明:重要参数,可避免队列过小引起的查询或写入报错。

########################## SELinux检查 ###########################
建议关闭SELinux,临时关闭命令:setenforce 0
#说明:重要参数,SELinux安全机制较复杂,无特殊需求都建议关闭。

########################## Hugepage检查 ##########################
检查项1:推荐禁用透明大页,临时禁用命令:echo never > /sys/kernel/mm/transparent_hugepage/enabled
检查项2:推荐禁用碎片整理,临时禁用命令:echo never > /sys/kernel/mm/transparent_hugepage/defrag
#说明:重要参数,透明大页参数或对集群性能产生较大影响。

########################## 时钟同步检查 ##########################
未检测到ntp命令,StarRocks各FE节点间的时钟差大于5秒将无法启动,建议在部署前使用ntp对各节点进行时钟同步
#说明:ntpd服务存在仅是集群时钟同步的"必要条件",这里的判断结果可能并不准确。建议在部署前对服务器进行规范的校时或同步操作。

############################ 时区检查 ############################
检测到操作系统未使用Asia/Shanghai时区,不恰当的时区设置可能影响集群数据导入导出,调整命令:timedatectl set-timezone Asia/Shanghai && clock -w
#说明:操作系统的时区设置可能会影响StarRocks导入后DATE类型数据值,建议提前调整规避。

########################## 磁盘容量检查 ##########################
检测到存在磁盘剩余容量不足20%的情况,请确认磁盘空间充足后再进行集群部署,检查命令:df -h
#说明:部署、升级、降级操作均需要消耗磁盘空间,此外StarRocks默认的磁盘高水位为85%,风险水位为95%,触发阈值后会禁用部分功能,因此若磁盘剩余空间不足需及时更换或扩容磁盘。

########################## 内存大小检查 ##########################
服务器内存较小,为保证集群性能和稳定性,生产环境的建议内存为32G+
#说明:StarRocks计算过程为全内存模式,不支持落盘,内存过小时无法良好体验其极速性能。

######################### Netstat命令检查 ########################
未找到netstat命令,StarGo当前需依赖netstat检测通信,否则无法正常使用。安装命令:yum -y install net-tools
#说明:netstat命令是StarGo工具所在节点需要用到的,并不是StarRocks依赖的命令。考虑运维时也会频繁用到,建议每台服务器都进行安装。

3.3 SSH免密

StarGo 是通过 SSH 的方式进行文件分发和命令执行的,因此即便单机下是"本机到本机",仍然需要进行免密的配置(同理,若是部署多台服务器的集群,我们也需要打通 stargo 所在节点到"所有需要分发文件的节点"的 SSH 免密)

3.4 目录创建

在部署前我们需要进行简单的目录规划,StarGo 需要我们手动创建好"外层"的文件夹,并保证文件夹为空(主要是要求其中不能有与即将部署的服务名相同的目录,以避免误覆盖写掉之前的集群)。例如,我们将程序部署在 /opt/module/starrocks 目录下,将数据保存在 /data/starrocks 目录中,那么我们就需要手动创建这两个目录:

三台机器都要操作
[root@hadoop101 stargo-v2.3] mkdir /opt/module/starrocks
[root@hadoop101 stargo-v2.3] mkdir /data/starrocks

3.5 编写yaml文件

部署程序会需要我们配置程序的部署目录、数据目录、IP、端口、参数等等,stargo 通过解析我们编写的 YAML 文件来获取这些信息。

[root@hadoop101 stargo-v2.3] vim deploy-demo.yaml
global:
    user: root
    ssh_port: 22

fe_servers:
  - host: 192.21.243.157
    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: 192.21.243.157
    role: FOLLOWER
    config:
      sys_log_level: "INFO"
  - host: 192.21.243.14
    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: 192.21.243.14
    role: FOLLOWER
    config:
      sys_log_level: "INFO"
 - host: 192.21.243.19
    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: 192.21.243.19
    role: FOLLOWER
    config:
      sys_log_level: "INFO"
be_servers:
  - host: 192.21.243.157
    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: 192.21.243.157
    config:
      enable_new_load_on_memory_limit_exceeded: true
      mem_limit: 90%
  - host: 192.21.243.14
    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: 192.21.243.14
    config:
      enable_new_load_on_memory_limit_exceeded: true
      mem_limit: 90%
  - host: 192.21.243.19
    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: 192.21.243.19
    config:
      enable_new_load_on_memory_limit_exceeded: true
      mem_limit: 90%

3.6 指定安装包和路径

StarGo 当前需要使用本地的 StarRocks 安装包(即 StarRocks 安装包需要放在 StarGo 程序所在的服务器上),我们通过 repo.yaml 文件来配置对应的路径与包名,例如本次我们使用 StarRocks-3.5.4 版本,安装包路径在 /opt/software下:

[root@hadoop101 stargo-v2.3] vim repo.yaml 
#该配置文件配置部署、升级/降级或扩容时需用的StarRocks二进制包路径及包名:
sr_path: /op/software/
sr_name: StarRocks-3.0.9.tar.gz
#sr_name: StarRocks-3.1.2.tar.gz

3.7 执行部署命令

StarGo 部署的过程中不会访问外网,只会使用我们配置的安装包离线部署,我们指定集群名称为 sr-c1,版本为我们指定的3.5.4,配置文件为上文的deploy-demo.yaml:

[root@hadoop101 stargo-v2.3] ./stargo cluster deploy sr-c1 v3.0.9 deploy-demo.yaml 

执行 deploy 命令后,StarGo 会先进行目录、端口、系统参数等的检查,若服务器配置较差,这一步耗时会略长(在stargo 2.3版本,这里添加了一个跳过检查的选项,若确认服务器配置已满足要求,当测试环境检测特别慢时可以按照提示跳过环境检查)。StarGo 会将所有操作的日志打印在控制台上,部署过程中不需要我们进行手动操作,等待部署完成后检查服务,确认 FE、BE、Broker 的进程均存在即可。

############################################# START BE CLUSTER #############################################
############################################# START BE CLUSTER #############################################
[2025-08-27 16:07:12.531741    INFO] Starting BE node [BeHost = 172.21.243.157 HeartbeatServicePort = 9051]
[2025-08-27 16:07:35.064657    INFO] The BE node start succefully [host = 172.21.243.157, heartbeatServicePort = 9051]
[2025-08-27 16:07:35.064786    INFO] Starting BE node [BeHost = 172.21.243.14 HeartbeatServicePort = 9051]
[2025-08-27 16:07:56.585712    INFO] The BE node start succefully [host = 172.21.243.14, heartbeatServicePort = 9051]
[2025-08-27 16:07:56.585778    INFO] Starting BE node [BeHost = 172.21.243.19 HeartbeatServicePort = 9051]
[2025-08-27 16:08:19.980106    INFO] The BE node start succefully [host = 172.21.243.19, heartbeatServicePort = 9051]
[2025-08-27 16:08:19.980208  OUTPUT] List all BE status:
                                        beHost = 172.21.243.157      beHeartbeatServicePort = 9051      beStatus = true
                                        beHost = 172.21.243.14       beHeartbeatServicePort = 9051      beStatus = true
                                        beHost = 172.21.243.19       beHeartbeatServicePort = 9051      beStatus = true

[2025-08-27 16:08:19.980269    INFO] Init Be cluster time cost = 1m7.551297363s

[2025-08-27 16:08:20.089451  OUTPUT] List all CN status:

[2025-08-27 16:08:20.089540    INFO] Init Cn cluster time cost = 109.240925ms

[2025-08-27 16:08:20.091459    INFO] not found broker config skip InitBrokerCluster.
[2025-08-27 16:08:20.091572    INFO] Init Broker cluster time cost = 109.502µs

[2025-08-27 16:08:20.091637    INFO] StarRocks cluster deployed successfully, total time cost = 21m29.041851101s
[root@hadoop101 stargo-v2.3]# ps -ef | egrep 'StarRocksFE|starrocks_be'
root     11857     1  5 16:05 ?        00:00:17 /opt/module/starrocks/fe/jdk/bin/java -Dlog4j2.formatMsgNoLookups=true -Xmx10240m -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/module/starrocks/fe/log/fe.gc.log.20250827-160540 -XX:+PrintConcurrentLocks -Djava.security.policy=/opt/module/starrocks/fe/conf/udf_security.policy com.starrocks.StarRocksFE
root     13601     1  1 16:07 ?        00:00:02 /opt/module/starrocks/be/lib/starrocks_be
root     14196  1113  0 16:10 pts/0    00:00:00 grep -E --color=auto StarRocksFE|starrocks_be

3.8 访问集群

[root@hadoop101 /] mysql -h127.0.0.1 -P9031 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.1.0 StarRocks version 3.0.9

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| _statistics_       |
| information_schema |
| sys                |
+--------------------+
3 rows in set (0.00 sec)

当修改了 StarRocks 集群的 root 密码,我们也需要修改 StarGo 的元文件,具体介绍及操作见配置集群密码。

4. YAML文件说明

在部署集群前,我们可参考 deploy-template.yaml 模板文件,按照规范的 YAML 语法来编辑目标集群的拓扑文件,StarGo 会解析该文件获取 StarRocks 集群部署时需要的 IP、端口、文件路径以及参数配置,各项参数的说明如下:

global:
    user: "root"  ## SSH使用的用户,需调整为当前Linux用户
    ssh_port: 22  ## SSH端口,通常无需调整,默认为22端口

##前置说明:该yaml中涉及的所有目录配置,其末尾带不带"/"都可以。
fe_servers:
  - host: 192.168.110.101  ## FE节点的IP,需调整为当前服务器需用的内网IP
    ssh_port: 22           ## SSH端口,通常默认即可
    java_heap_mem: 8192    ## 该项为可选配置,支持配置FE节点JVM的Xmx堆内存,默认为8192,单位为M,不支持手动配置单位。因过小的JVM容易引起稳定性问题,故当前设计为该值需配置为大于默认的8192才会生效。
    http_port: 8030        ## FE http_port,默认为8030端口,若不与其他服务冲突则无需调整。注意:集群中所有FE的http端口需要一致
    rpc_port: 9020         ## FE rpc_port,默认为9020,若不与其他服务冲突则无需调整
    query_port: 9030       ## FE query_port,默认为9030,若不与其他服务冲突则无需调整
    edit_log_port: 9010    ## FE edit_log_port,默认为9010,若不与其他服务冲突则无需调整
    deploy_dir: /opt/starrocks/fe        ## FE部署目录
    meta_dir: /data/starrocks/fe/meta    ## FE元数据目录
    log_dir: /data/starrocks/fe/log      ## FE主要日志目录(fe.log及fe.warn.log)
    priority_networks: 192.168.110.0/24  ## FE IP绑定,需使用CIDR写法来调整为当前服务器IP,例如192.168.110.0/24即表示192.168.110.1~192.168.110.254的IP区间。在服务器存在多网卡或虚拟网卡时,StarRocks需要通过该参数让FE识别到正确网段的IP。若不清楚CIDR的写法,也可直接在这里配置具体的IP,例如:192.168.110.101。无论这里使用哪种写法,StarRocks都不支持在部署完成后变更IP。
    role: FOLLOWER         ## 配置FE的角色,可选择配置FOLLOWER或OBSERVER,不配置该项时默认为FOLLOWER。StarRocks FE要求FOLLOWER角色的节点存活半数以上才能够选主,所以建议集群中FOLLOWER配置为奇数个。OBSERVER节点不会参与选主,其作用仅为拓展FE读的能力,所以对个数无要求,可以为0个或者任意个。
    config:                ## StarGo支持在部署时解析yaml中的参数直接写入StarRocks的配置文件
      sys_log_level: INFO
  - host: 192.168.110.102  ## 同上
    ssh_port: 22
    java_heap_mem: 8192
    http_port: 8030
    rpc_port: 9020
    query_port: 9030
    edit_log_port: 9010
    deploy_dir: /opt/starrocks/fe
    meta_dir: /data/starrocks/fe/meta
    log_dir: /data/starrocks/fe/log
    priority_networks: 192.168.110.0/24
    role: FOLLOWER
    config:
      sys_log_level: INFO
  - host: 192.168.110.103  ## 同上
    ssh_port: 22
    java_heap_mem: 8192
    http_port: 8030
    rpc_port: 9020
    query_port: 9030
    edit_log_port: 9010
    deploy_dir: /opt/starrocks/fe
    meta_dir: /data/starrocks/fe/meta
    log_dir: /data/starrocks/fe/log
    priority_networks: 192.168.110.0/24
    role: FOLLOWER
    config:
      sys_log_level: INFO

be_servers:
  - host: 192.168.110.101  ## BE节点的IP,需调整为当前服务器需用的内网IP
    ssh_port: 22           ## SSH端口,通常默认即可
    be_port: 9060                  ## BE be_port,默认为9060端口,若不与其他服务冲突则无需调整
    webserver_port: 8040           ## BE webserver_port,默认为8040端口,若不与其他服务冲突则无需调整。从StarRocks 3.0版本开始,该参数在be.conf中被修改为了be_http_port并在BE代码中做了兼容适配,我们使用be_http_port或继续使用webserver_port都可以正常识别,但若两个参数同时存在,会以be_http_port参数为准。stargo在2.2-patch1中对该变更进行了适配,不论在yaml中该处使用webserver_port还是be_http_port,最终在集群be.conf中都只保留使用webserver_port来保证兼容。
    heartbeat_service_port: 9050   ## BE heartbeat_service_port,默认为9050端口,若不与其他服务冲突则无需调整
    brpc_port: 8060                ## BE brpc_port,默认为8060端口,若不与其他服务冲突则无需调整
    deploy_dir : /opt/starrocks/be    ## BE程序的分发部署目录
    storage_dir: /data1/starrocks/be/storage,medium:SSD;/data2/starrocks/be/storage   ## BE数据存储目录。StarRocks无法自动识别存储介质类型,默认会将所有磁盘识别为HDD,若我们服务器中同时使用了HDD和SSD两种磁盘,就需要在该处按照规范的格式显式的对SSD盘进行配置。若服务器中只有HDD或只有SSD,我们则无需额外配置介质,直接配置路径即可。在我们使用全SSD时,虽然StarRocks默认显示的存储类型仍是HDD,但由于固态硬盘带来的性能提升是物理层面的,并不会影响使用,所以我们同样可以直接指定路径
    log_dir: /data/starrocks/be/log      ## BE日志目录(be.INFO与be.WARNING)
    priority_networks: 192.168.110.0/24  ## BE IP绑定,需使用CIDR写法来调整为当前服务器IP,参数说明参考上文FE部分
    config:                              ## StarGo支持在部署时解析yaml中的参数直接写入StarRocks的配置文件
      mem_limit: 80%  
  - host: 192.168.110.102  ## 同上
    ssh_port: 22
    be_port: 9060
    webserver_port: 8040
    heartbeat_service_port: 9050
    brpc_port: 8060
    deploy_dir : /opt/starrocks/be
    storage_dir: /data/starrocks/be/storage  ## 注意参考上文描述的格式要求填写
    log_dir: /data/starrocks/be/log
    priority_networks: 192.168.110.0/24
    config:
      mem_limit: 80%
  - host: 192.168.110.103  ## 同上
    ssh_port: 22
    be_port: 9060
    webserver_port: 8040
    heartbeat_service_port: 9050
    brpc_port: 8060
    deploy_dir : /opt/starrocks/be
    storage_dir: /data/starrocks/be/storage,medium:HDD  ## 注意参考上文描述的格式要求填写
    log_dir: /data/starrocks/be/log
    priority_networks: 192.168.110.0/24
    config:
      mem_limit: 80%

##[可选]若不需要部署CN,可删除下方内容。CN节点(Compute Node)是从BE中剥离出的无状态计算节点,本身不存储数据,可以为集群提供额外的计算资源。CN可认为是不存储数据的BE,除不需要配置数据存储目录,其他配置整体与BE相同。CN不能与BE混布,主要用于K8s环境,通常不需要在物理环境中部署CN。
cn_servers:
  - host: 192.168.110.104
    ssh_port: 22
    thrift_port: 9060
    webserver_port: 8040
    heartbeat_service_port: 9050
    brpc_port: 8060
    deploy_dir : /opt/starrocks/cn
    log_dir: /data/starrocks/cn/log
    priority_networks: 192.168.110.104
    config:
      sys_log_level: INFO

##[可选]若不需要部署Broker,可删除下方内容。Broker封装了文件接口,主要用于和Hadoop及对象存储等的通信,默认的Broker名称均为:hdfs_broker。
##StarRocks 2.5+版本中,BE已经集成了文件接口,通常情况下不再需要部署Broker。
broker_servers:
  - host: 192.168.110.101  ## Broker节点的IP,需调整为当前服务器实际的内网IP
    ssh_port: 22           ## SSH端口,通常默认即可
    broker_port: 8000      ## broker_port,默认为8000端口,若不与其他服务冲突则无需调整
    deploy_dir : /opt/starrocks/apache_hdfs_broker    ## Broker程序的分发部署目录
    log_dir: /data/starrocks/apache_hdfs_broker/log   ## Broker日志目录
    config:                ## StarGo支持在部署时解析yaml中的参数直接写入StarRocks的配置文件
      sys_log_level: INFO
  - host: 192.168.110.102  ## 同上。补充说明:Broker节点通常与BE节点混布,不需要绑定IP,故没有也不需要配置priority_networks参数
    ssh_port: 22
    broker_port: 8000
    deploy_dir: /opt/starrocks/apache_hdfs_broker
    log_dir: /data/starrocks/apache_hdfs_broker/log
  - host: 192.168.110.103  ## 同上
    ssh_port: 22
    broker_port: 8000
    deploy_dir : /opt/starrocks/apache_hdfs_broker
    log_dir: /data/starrocks/apache_hdfs_broker/log

5. 集群管理

5.1 集群部署语法

./stargo cluster deploy <cluster_name> <version> <topology_file>
## cluster_name:自定义的集群名称,例如这里我们写为'sr-c1'
## version:部署的StarRocks版本号,规范写法为'v+版本号',例如'v3.0.1',其他格式将会报错
## topology_file:目标集群需使用的yaml文件名称,例如本次我们使用的'sr-c1.yaml'

示例
[root@hadoop101 stargo-v2.3] ./stargo cluster deploy sr-c1 v3.0.9 deploy-demo.yaml

5.2 集群列表查看

# 可查看当前 StarGo 管理的所有 StarRocks 集群的信息列表,语法为:
./stargo cluster list

示例
[root@hadoop101 stargo-v2.3] ./stargo cluster list
[2025-08-27 16:22:40.196505    INFO] List all clusters
ClusterName      Version     User        CreateDate                 MetaPath                                                      PrivateKey                                        
---------------  ----------  ----------  -------------------------  ------------------------------------------------------------  --------------------------------------------------
sr-c1            v3.0.9      root        2025-08-27 16:05:06        /root/.stargo/cluster/sr-c1                                   /root/.ssh/id_rsa                                 

5.3 查看集群信息

#上面 list 命令查出的 ClusterName 即为我们执行部署命令时指定的名称,根据集群名称我们可以查看对应集群的详细信息,其语法为:
./stargo cluster display <cluster_name>

示例
[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 16:24:57.563450    INFO] Display cluster [clusterName = sr-c1]
clusterName = sr-c1
clusterVerison = v3.0.9
[2025-08-27 16:24:57.912412    WARN] All FE nodes are down, please start FE node and display the cluster status again.
ID                          ROLE    HOST                  PORT             STAT        DEPLOYDIR                                           DATADIR                                           
--------------------------  ------  --------------------  ---------------  ----------  --------------------------------------------------  --------------------------------------------------
172.21.243.157:9011         FE      172.21.243.157        9011/9031        DOWN        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        DOWN        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.19:9011          FE      172.21.243.19         9011/9031        DOWN        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.157:9061         BE      172.21.243.157        9061/9051        DOWN        /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.14:9061          BE      172.21.243.14         9061/9051        DOWN        /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.19:9061          BE      172.21.243.19         9061/9051        DOWN        /opt/module/starrocks/be                            /data/starrocks/be/storage     

5.4 启动停止指定集群

./stargo cluster start|stop sr-c1

示例
[root@hadoop101 stargo-v2.3] ./stargo cluster start sr-c1
[2025-08-27 16:29:01.406857    INFO] Start cluster [clusterName = sr-c1]
[2025-08-27 16:29:01.407590    INFO] Starting FE node [FeHost = 172.21.243.157, EditLogPort = 9011]
[2025-08-27 16:29:32.476408    INFO] Starting FE node [FeHost = 172.21.243.14, EditLogPort = 9011]
[2025-08-27 16:29:43.610613    INFO] Starting FE node [FeHost = 172.21.243.19, EditLogPort = 9011]
[2025-08-27 16:29:54.742449    INFO] Starting BE node [BeHost = 172.21.243.157, HeartbeatServicePort = 9051]
[2025-08-27 16:30:05.962986    INFO] Starting BE node [BeHost = 172.21.243.14, HeartbeatServicePort = 9051]
[2025-08-27 16:30:17.356347    INFO] Starting BE node [BeHost = 172.21.243.19, HeartbeatServicePort = 9051]
[2025-08-27 16:30:28.753847  OUTPUT] Not found CN config skip StartCnCluster
[2025-08-27 16:30:28.753907  OUTPUT] Not found broker config skip StartBrokerCluster

5.5 启停集群某类服务

/stargo cluster start|stop|restart <cluster_name> --role FE|BE|CN|Broker
## 说明:每条命令中,--role后只能指定FE、BE、CN或Broker四类进程中的一个,不支持同时指定。

示例
[root@hadoop101 stargo-v2.3] ./stargo cluster stop sr-c1 --role BE
[2025-08-27 16:36:01.951230    INFO] Stop cluster [clusterName = sr-c1]
[2025-08-27 16:36:01.952430    INFO] Stopping BE cluster ...
[2025-08-27 16:36:01.952521  OUTPUT] Stop cluster sr-c1 BE node
[2025-08-27 16:36:01.952613    INFO] Waiting for stoping BE node [BeHost = 172.21.243.157]
[2025-08-27 16:36:03.476111    INFO] Waiting for stoping BE node [BeHost = 172.21.243.14]
[2025-08-27 16:36:05.023050    INFO] Waiting for stoping BE node [BeHost = 172.21.243.19]
[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 16:36:29.796756    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/L        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        UP          /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.157:9061         BE      172.21.243.157        9061/9051        DOWN        /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.14:9061          BE      172.21.243.14         9061/9051        DOWN        /opt/module/starrocks/be                            /data/starrocks/be/storage                        
172.21.243.19:9061          BE      172.21.243.19         9061/9051        DOWN        /opt/module/starrocks/be                            /data/starrocks/be/storage                        
[root@hadoop101 stargo-v2.3] ./stargo cluster start sr-c1 --role BE
[2025-08-27 16:36:42.372102    INFO] Start cluster [clusterName = sr-c1]
[2025-08-27 16:36:42.372728    INFO] Starting BE cluster ...
[2025-08-27 16:36:42.372777    INFO] Starting BE node [BeHost = 172.21.243.157, HeartbeatServicePort = 9051]
[2025-08-27 16:36:53.569145    INFO] Starting BE node [BeHost = 172.21.243.14, HeartbeatServicePort = 9051]
[2025-08-27 16:37:05.092176    INFO] Starting BE node [BeHost = 172.21.243.19, HeartbeatServicePort = 9051]
[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 16:37:41.556707    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/L        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        UP          /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.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      

5.6 启停指定实例服务

./stargo cluster start|stop|restart <cluster_name> --node <node_id>
## node_id:即上文通过display命令查到的ID列

示例
[root@hadoop101 stargo-v2.3] ./stargo cluster stop sr-c1 --node 172.21.243.157:9011
[2025-08-27 16:43:24.495760    INFO] Stop cluster [clusterName = sr-c1]
[2025-08-27 16:43:24.496418    INFO] Stopping FE node. [FeHost = 172.21.243.157]
[2025-08-27 16:43:24.496495    INFO] Waiting for stoping FE node [FeHost = 172.21.243.157]
[root@hadoop101 stargo-v2.3] ./stargo cluster display sr-c1
[2025-08-27 16:43:30.817960    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        DOWN        /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.14:9011          FE      172.21.243.14         9011/9031        UP          /opt/module/starrocks/fe                            /data/starrocks/fe/meta                           
172.21.243.19:9011          FE      172.21.243.19         9011/9031        UP/L        /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               

6. 配置集群密码

StarRocks在部署完成后,默认用户为 root,密码为空(这里的 root 是指 "StarRocks 数据库"的用户,而不是 Linux 系统的用户)。StarGo 通过类似 Java JDBC 的方式与集群通信,默认也是使用 StarRocks 的用户 root 和"空密码"来访问集群。在我们修改 StarRocks 集群的密码后我们也需要将修改后的密码手动配置在 StarGo 工作目录中集群对应的 yaml 拓扑文件中,否则 StarGo 将无法进行集群的管理。

例如我们修改 StarRocks 集群 root 用户的密码为 root,我们用 mysql-client 或可视化工具将 StarRocks 视为 MySQL 访问,IP 使用任意 FE 的 IP,端口为 9031,访问集群:

[root@hadoop101 /] mysql -h127.0.0.1 -P9031 -uroot


修改密码后退出:
mysql> set password = password('root');
mysql> exit

在部署时我们使用的 sr-c1.yaml 拓扑文件仅用于集群部署,在部署完成后该文件可删除,StarGo 会在"工作目录"为每个集群生成对应的拓扑文件 meta.yaml 用于集群管理,集群密码信息就是需要到该文件中配置。我们切换目录到当前 Linux 用户的家目录,以当前的 root 用户为例:

[root@hadoop101 /] cd /root/
[root@hadoop101 ~] ls -a | grep .sta
.stargo

可以看到有一个 .stargo 目录,该目录就是 StarGo 的本地工作目录,进入目录并查看:

[root@hadoop101 ~] cd .stargo/
[root@hadoop101 .stargo] ll

total 4
drwxr-xr-x 3 root root   19 Jan 14 19:31 cluster  ##该目录保存stargo管理的所有集群的yaml拓扑文件。其下层文件夹的名称即为各个集群的集群名称,其中保存集群对应的yaml文件。不可手动清理!!!
drwxr-xr-x 4 root root  106 Jan 14 15:02 download ##该目录保存从配置目录中获取的StarRocks安装包、JDK包及二者解压后的文件,需手动清理。当前这里实现不够友好,后续版本考虑优化。
drwxr-xr-x 2 root root 4096 Jan 14 15:08 tmp      ##该目录保存临时的配置文件,可手动清理。

切换至目标目录,为 meta.yaml 配置用户名和密码信息:

[root@hadoop101 .stargo] cd cluster/
[root@hadoop101 cluster] ls
sr-c1
[root@hadoop101 cluster] cd sr-c1/
[root@hadoop101 sr-c1] ls
meta.yaml
[root@hadoop101 sr-c1] vim meta.yaml


clusterinfo:
  user: root
  version: v2.5.6
  create_date: "2023-06-01 12:30:48"
  meta_path: /root/.stargo/cluster/sr-c1
  private_key: /root/.ssh/id_rsa
  sr_user: "root"       ##添加用户名root,该项只能配置为root,其他用户权限不足
  sr_password: "root"   ##添加密码,例如上文修改为的root
global:
  user: root
  ssh_port: 22
server_configs:
…………

保存退出后,就可继续使用 StarGo 进行集群的管理。


网站公告

今日签到

点亮在社区的每一天
去签到