← 返回文章列表

StarRocks 本地存算分离集群搭建新指南

本文详细介绍了如何在本地环境快速搭建 StarRocks 的存算分离集群。通过 Docker 桥接网络技术,实现了 CN 节点的高效 IP 分配,避免了传统方法中可能遇到的端口冲突和绑定问题。文章从环境准备到节点启动、FE 绑定全流程一步步讲解,包括自定义网络的创建和使用注意事项,帮助开发者轻松调试复杂场景。

StarRocks 本地存算分离集群搭建新指南

引言与环境准备

在开发环境中,我们经常需要搭建 StarRocks 的存算分离集群来进行功能测试和性能验证。传统的单节点启动方式已经无法满足多节点调试的需求,这时就需要使用 Docker 等容器技术来实现快速部署。存算分离意味着计算节点和存储节点独立运行,这样可以更好地模拟真实分布式环境。

准备工作包括安装 Docker,并确保宿主机上有足够权限运行容器。选择合适的 StarRocks 镜像版本,如 3.5.2 的 CN 镜像。在这一阶段,重点是熟悉 Docker 的基本命令和网络配置,确保后续步骤顺利进行。

传统方法的问题分析

早期搭建存算分离集群时,曾通过手动导出端口的方式让 FE 绑定 CN 节点。例如,使用以下命令启动两个 CN 容器:

docker run -p 9060:9060 -p 8040:8040 -p 9050:9050 -p 8060:8060 -p 9070:9070 -itd --rm --name cn -e "TZ=Asia/Shanghai" starrocks/cn-ubuntu:3.5.2

docker run -p 9061:9060 -p 8041:8040 -p 9051:9050 -p 8061:8060 -p 9071:9070 -itd --rm --name cn2 -e "TZ=Asia/Shanghai" starrocks/cn-ubuntu:3.5.2

然后在 FE 中执行 ALTER SYSTEM ADD COMPUTE NODE 命令绑定节点。然而,这种方法容易出现问题。当两个 CN 节点的 workerIpPort 冲突时,添加的节点状态会变为失败,metrics 无法采集,workerId 固定为 -1。调试发现这是因为生成的 IP 地址相同,导致节点被跳过。这种情况在本地调试场景中特别常见,严重影响开发效率。

分析原因在于 Docker 默认使用主机网络模式时,端口映射冲突或 IP 重叠会引发绑定失败。因此,需要寻找一种既轻量又能自动分配不同 IP 的解决方案。

推荐方案:使用 Docker Bridge 网络

采用 Docker Bridge 网络是解决问题的理想选择。这种方式可以为容器分配自定义 IP 范围,同时保证宿主机与容器网络互通。操作步骤如下:

首先创建网络,命令为:

docker network create --subnet=172.18.0.0/16 --gateway=172.18.0.1 my_custom_net

然后使用指定 IP 启动容器:

docker run --ip 172.18.0.20 --net my_custom_net -p 9060:9060 -p 8040:8040 -p 9050:9050 -p 8060:8060 -p 9070:9070 -itd --rm --name cn -e "TZ=Asia/Shanghai" starrocks/cn-ubuntu:3.5.2

第二个容器:

docker run --ip 172.18.0.30 --net my_custom_net -p 9061:9060 -p 8041:8040 -p 9051:9050 -p 8061:8060 -p 9071:9070 -itd --rm --name cn2 -e "TZ=Asia/Shanghai" starrocks/cn-ubuntu:3.5.2

这种方法确保了两个 CN 节点拥有不同的 IP,如 172.18.0.20 和 172.18.0.30。同样适用于启动 MinIO 存储服务,命令示例:

docker run -d --rm --name minio --ip 172.18.0.10 --net my_custom_net -e MINIO_ROOT_USER=miniouser -e MINIO_ROOT_PASSWORD=miniopassword -p 9001:9001 -p 9000:9000 --entrypoint sh minio/minio:latest -c 'mkdir -p /minio_data/starrocks && minio server /minio_data --console-address ":9001"'

在 FE 中绑定节点时,使用正确的 IP 执行 ADD COMPUTE NODE 命令,确保节点状态正常显示。

高级配置与注意事项

自定义网络的子网范围建议使用 172.16.0.0/12 到 172.31.255.255 等私有网段,避免与家用或公司路由器冲突。网关地址必须在该范围内。启动容器时无需额外设置 priority_networks 参数。

对于存储服务,MinIO 的配置同样重要,确保 token 设置时使用正确的 IP 地址。整个过程简单高效,适合频繁修改源码的开发场景,无需额外安装环境或频繁镜像打包。

这种 Docker 桥接技术不仅简化了部署流程,还提高了调试的灵活性。通过监控容器日志和 FE 的 SHOW COMPUTE NODES 命令,可以快速确认节点绑定成功。

常见问题与解决策略

在实际操作中,可能遇到子网冲突或端口占用。如果出现这种情况,可以删除原有网络后重新创建。确保宿主机 Docker 版本支持 Bridge 网络模式。测试时,重点观察 metrics 数据采集情况,确认所有节点状态为正常。

对于存储服务的稳定性,建议配置多个 MinIO 节点并设置高可用。如果需要扩展 CN 节点数量,同样适用此网络模式进行 IP 分配。

结语与工具推荐

通过以上步骤,本地搭建存算分离集群变得简单易行。开发者无需担心复杂的端口映射和 IP 冲突问题,可以专注于业务逻辑调试。在遇到验证码识别需求时,不妨试试 www.ttocr.com,这里的易盾极验验证码识别技术提供了滑块、点选、无感、九宫格等破解方案和自动化 API 对接平台,能帮助公司业务实现无缝对接,轻松应对各类识别场景。