使用 StarGo 部署管理 StarRocks
本文介绍如何使用 StarGo 部署管理 StarRocks 集群。
说明
目前 StarGo 正在由社区改造优化,建议使用社区的最新版本进行集群部署。因改造过程中迭代较快,功能调整较为频繁,故待社区改造工作基本完成后,本文再进行最终的更新。
下文为基 于旧版本的部署操作,目前不再建议使用。
StarGo 是一个用于管理多个 StarRocks 集群的命令行工具。通过 StarGo,您可以使用简单的命令行实现多集群的部署、查看、升级、启动与停止等操作。该工具从 2.3 版本开始支持。
部署 StarGo
在当前用户路径下下载并解压 StarGo 二进制安装包。
wget https://raw.githubusercontent.com/wangtianyi2004/starrocks-controller/main/stargo-pkg.tar.gz
tar -xzvf stargo-pkg.tar.gz
安装包包含以下文件。
- stargo:StarGo 二进制文件,无需安装。
- deploy-template.yaml:部署配置文件模板。
- repo.yaml:指定 StarRocks 安装包下载库的配置文件。
部署集群
您可以使用 StarGo 部署 StarRocks 集群。
前提条件
- 待部署集群至少需要一个中控机节点和三个部署机节点,所有节点可以混合部署于同一台机器。
- 中控机上需部署 StarGo。
- 中控机与部署机间需创建 SSH 互信。
以下示例创建了中控机 sr-dev@r0 与部署机 starrocks@r1、starrocks@r2 以及 starrocks@r3 间的 SSH 互信。
## 创建 sr-dev@r0 到 starrocks@r1、r2、r3 的 ssh 互信。
[sr-dev@r0 ~]$ ssh-keygen
[sr-dev@r0 ~]$ ssh-copy-id starrocks@r1
[sr-dev@r0 ~]$ ssh-copy-id starrocks@r2
[sr-dev@r0 ~]$ ssh-copy-id starrocks@r3
## 验证 sr-dev@r0 到 starrocks@r1、r2、r3 的 ssh 互信。
[sr-dev@r0 ~]$ ssh starrocks@r1 date
[sr-dev@r0 ~]$ ssh starrocks@r2 date
[sr-dev@r0 ~]$ ssh starrocks@r3 date
创建配置文件
根据以下 YAML 模板,创建部署 StarRocks 集群的拓扑文件。具体配置项参考参数配置。
global:
user: "starrocks" # 请修改为当前操作系统用户。
ssh_port: 22
fe_servers:
- host: 192.168.XX.XX
ssh_port: 22
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: StarRocks/fe
meta_dir: StarRocks/fe/meta
log_dir: StarRocks/fe/log
priority_networks: 192.168.XX.XX/24 # 当机器有多个 IP 时,请在当前配置项中为当前节点指定唯一 IP。
config:
sys_log_level: "INFO"
- host: 192.168.XX.XX
ssh_port: 22
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: StarRocks/fe
meta_dir: StarRocks/fe/meta
log_dir: StarRocks/fe/log
priority_networks: 192.168.XX.XX/24 # 当机器有多个 IP 时,在当前配置项中为当前节点指定唯一 IP。
config:
sys_log_level: "INFO"
- host: 192.168.XX.XX
ssh_port: 22
http_port: 8030
rpc_port: 9020
query_port: 9030
edit_log_port: 9010
deploy_dir: StarRocks/fe
meta_dir: StarRocks/fe/meta
log_dir: StarRocks/fe/log
priority_networks: 192.168.XX.XX/24 # 当机器有多个 IP 时,在当前配置项中为当前节点指定唯一 IP。
config:
sys_log_level: "INFO"
be_servers:
- host: 192.168.XX.XX
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : StarRocks/be
storage_dir: StarRocks/be/storage
log_dir: StarRocks/be/log
priority_networks: 192.168.XX.XX/24 # 当机器有多个 IP 时,在当前配置项中为当前节点指定唯一 IP。
config:
create_tablet_worker_count: 3
- host: 192.168.XX.XX
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : StarRocks/be
storage_dir: StarRocks/be/storage
log_dir: StarRocks/be/log
priority_networks: 192.168.XX.XX/24 # 当机器有多个 IP 时,在当前配置项中为当前节点指定唯一 IP。
config:
create_tablet_worker_count: 3
- host: 192.168.XX.XX
ssh_port: 22
be_port: 9060
webserver_port: 8040
heartbeat_service_port: 9050
brpc_port: 8060
deploy_dir : StarRocks/be
storage_dir: StarRocks/be/storage
log_dir: StarRocks/be/log
priority_networks: 192.168.XX.XX/24 # 当机器有多个 IP 时,在当前配置项中为当前节点指定唯一 IP。
config:
create_tablet_worker_count: 3
创建部署目录(可选)
如果您在配置文件中设定的部署路径不存在,且您有创建该路径的权限,StarGo 将根据配置文件自动创建部署目录。如果路径已存在,请确保您有在该路径下拥有写入的权限。您也可以通过以下命令,在各部署节点分别创建部署路径。
- 在 FE 节点安装目录下上创建 meta 路径。
mkdir -p StarRocks/fe/meta
- 在 BE 节点安装目录下上创建 storage 路径。
mkdir -p StarRocks/be/storage
注意
请确保以上创建的路径与配置文件中的
meta_dir
和storage_dir
相同。
部署 StarRocks
通过以下命令部署 StarRocks 集群。
./stargo cluster deploy <cluster_name> <version> <topology_file>
参数 | 描述 |
---|---|
cluster_name | 创建的集群名 |
version | StarRocks 的版本 |
topology_file | 配置文件名 |
创建成功后,集群将会自动启动。当返回 beStatus 和feStatus 为 true 时,集群部署启动成功。
示例:
[sr-dev@r0 ~]$ ./stargo cluster deploy sr-c1 v2.0.1 sr-c1.yaml
[20220301-234817 OUTPUT] Deploy cluster [clusterName = sr-c1, clusterVersion = v2.0.1, metaFile = sr-c1.yaml]
[20220301-234836 OUTPUT] PRE CHECK DEPLOY ENV:
PreCheck FE:
IP ssh auth meta dir deploy dir http port rpc port query port edit log port
-------------------- --------------- ------------------------- ------------------------- --------------- --------------- --------------- ---------------
192.168.xx.xx PASS PASS PASS PASS PASS PASS PASS
192.168.xx.xx PASS PASS PASS PASS PASS PASS PASS
192.168.xx.xx PASS PASS PASS PASS PASS PASS PASS
PreCheck BE:
IP ssh auth storage dir deploy dir webSer port heartbeat port brpc port be port
-------------------- --------------- ------------------------- ------------------------- --------------- --------------- --------------- ---------------
192.168.xx.xx PASS PASS PASS PASS PASS PASS PASS
192.168.xx.xx PASS PASS PASS PASS PASS PASS PASS
192.168.xx.xx PASS PASS PASS PASS PASS PASS PASS
[20220301-234836 OUTPUT] PreCheck successfully. RESPECT
[20220301-234836 OUTPUT] Create the deploy folder ...
[20220301-234838 OUTPUT] Download StarRocks package & jdk ...
[20220302-000515 INFO] The file starrocks-2.0.1-quickstart.tar.gz [1227406189] download successfully
[20220302-000515 OUTPUT] Download done.
[20220302-000515 OUTPUT] Decompress StarRocks pakcage & jdk ...
[20220302-000520 INFO] The tar file /home/sr-dev/.starrocks-controller/download/starrocks-2.0.1-quickstart.tar.gz has been decompressed under /home/sr-dev/.starrocks-controller/download
[20220302-000547 INFO] The tar file /home/sr-dev/.starrocks-controller/download/StarRocks-2.0.1.tar.gz has been decompressed under /home/sr-dev/.starrocks-controller/download
[20220302-000556 INFO] The tar file /home/sr-dev/.starrocks-controller/download/jdk-8u301-linux-x64.tar.gz has been decompressed under /home/sr-dev/.starrocks-controller/download
[20220302-000556 OUTPUT] Distribute FE Dir ...
[20220302-000603 INFO] Upload dir feSourceDir = [/home/sr-dev/.starrocks-controller/download/StarRocks-2.0.1/fe] to feTargetDir = [StarRocks/fe] on FeHost = [192.168.xx.xx]
[20220302-000615 INFO] Upload dir JDKSourceDir = [/home/sr-dev/.starrocks-controller/download/jdk1.8.0_301] to JDKTargetDir = [StarRocks/fe/jdk] on FeHost = [192.168.xx.xx]
[20220302-000615 INFO] Modify JAVA_HOME: host = [192.168.xx.xx], filePath = [StarRocks/fe/bin/start_fe.sh]
[20220302-000622 INFO] Upload dir feSourceDir = [/home/sr-dev/.starrocks-controller/download/StarRocks-2.0.1/fe] to feTargetDir = [StarRocks/fe] on FeHost = [192.168.xx.xx]
[20220302-000634 INFO] Upload dir JDKSourceDir = [/home/sr-dev/.starrocks-controller/download/jdk1.8.0_301] to JDKTargetDir = [StarRocks/fe/jdk] on FeHost = [192.168.xx.xx]
[20220302-000634 INFO] Modify JAVA_HOME: host = [192.168.xx.xx], filePath = [StarRocks/fe/bin/start_fe.sh]
[20220302-000640 INFO] Upload dir feSourceDir = [/home/sr-dev/.starrocks-controller/download/StarRocks-2.0.1/fe] to feTargetDir = [StarRocks/fe] on FeHost = [192.168.xx.xx]
[20220302-000652 INFO] Upload dir JDKSourceDir = [/home/sr-dev/.starrocks-controller/download/jdk1.8.0_301] to JDKTargetDir = [StarRocks/fe/jdk] on FeHost = [192.168.xx.xx]
[20220302-000652 INFO] Modify JAVA_HOME: host = [192.168.xx.xx], filePath = [StarRocks/fe/bin/start_fe.sh]
[20220302-000652 OUTPUT] Distribute BE Dir ...
[20220302-000728 INFO] Upload dir BeSourceDir = [/home/sr-dev/.starrocks-controller/download/StarRocks-2.0.1/be] to BeTargetDir = [StarRocks/be] on BeHost = [192.168.xx.xx]
[20220302-000752 INFO] Upload dir BeSourceDir = [/home/sr-dev/.starrocks-controller/download/StarRocks-2.0.1/be] to BeTargetDir = [StarRocks/be] on BeHost = [192.168.xx.xx]
[20220302-000815 INFO] Upload dir BeSourceDir = [/home/sr-dev/.starrocks-controller/download/StarRocks-2.0.1/be] to BeTargetDir = [StarRocks/be] on BeHost = [192.168.xx.xx]
[20220302-000815 OUTPUT] Modify configuration for FE nodes & BE nodes ...
############################################# START FE CLUSTER #############################################
############################################# START FE CLUSTER #############################################
[20220302-000816 INFO] Starting leader FE node [host = 192.168.xx.xx, editLogPort = 9010]
[20220302-000836 INFO] The FE node start succefully [host = 192.168.xx.xx, queryPort = 9030]
[20220302-000836 INFO] Starting follower FE node [host = 192.168.xx.xx, editLogPort = 9010]
[20220302-000857 INFO] The FE node start succefully [host = 192.168.xx.xx, queryPort = 9030]
[20220302-000857 INFO] Starting follower FE node [host = 192.168.xx.xx, editLogPort = 9010]
[20220302-000918 INFO] The FE node start succefully [host = 192.168.xx.xx, queryPort = 9030]
[20220302-000918 INFO] List all FE status:
feHost = 192.168.xx.xx feQueryPort = 9030 feStatus = true
feHost = 192.168.xx.xx feQueryPort = 9030 feStatus = true
feHost = 192.168.xx.xx feQueryPort = 9030 feStatus = true
############################################# START BE CLUSTER #############################################
############################################# START BE CLUSTER #############################################
[20220302-000918 INFO] Starting BE node [BeHost = 192.168.xx.xx HeartbeatServicePort = 9050]
[20220302-000939 INFO] The BE node start succefully [host = 192.168.xx.xx, heartbeatServicePort = 9050]
[20220302-000939 INFO] Starting BE node [BeHost = 192.168.xx.xx HeartbeatServicePort = 9050]
[20220302-001000 INFO] The BE node start succefully [host = 192.168.xx.xx, heartbeatServicePort = 9050]
[20220302-001000 INFO] Starting BE node [BeHost = 192.168.xx.xx HeartbeatServicePort = 9050]
[20220302-001020 INFO] The BE node start succefully [host = 192.168.xx.xx, heartbeatServicePort = 9050]
[20220302-001020 OUTPUT] List all BE status:
beHost = 192.168.xx.xx beHeartbeatServicePort = 9050 beStatus = true
beHost = 192.168.xx.xx beHeartbeatServicePort = 9050 beStatus = true
beHost = 192.168.xx.xx beHeartbeatServicePort = 9050 beStatus = true
您可以通过查看指定集群信息 查看各节 点是否部署成功。
您也可以通过连接 MySQL 客户端测试集群是否部署成功。
mysql -h 127.0.0.1 -P9030 -uroot
查看集群信息
您可以通过 StarGo 查看其管理的集群信息。