首页 / 资讯中心 / 文章详情

【Docker下部署高可用】StarRocks 存算一体架构高可用部署要点

【Docker下部署高可用】StarRocks 存算一体架构高可用部署要点 ★ FEATURED ARTICLE
文章目录一、部署前核心前提存算一体专属校验1. 环境与网络准备FQDN主机名部署模式ip部署模式2、部署规划存算一体关键二、FE 高可用集群配置存算一体与存算分离通用但需适配 BE 副本1. FE 配置文件关键参数所有 FE 节点统一2. FE 集群启动与验证分步骤执行步骤1启动Leader FE节点首个FE默认成Leader步骤2添加Follower FE节点与helper同步元数据步骤3检查FE集群状态三、BE 节点高可用配置存算一体核心1. BE 配置文件关键参数所有 BE 节点统一2. BE 节点启动与添加到集群步骤 1启动单个 BE 节点步骤 2将 BE 节点添加到集群支持批量添加步骤 3检查 BE 集群状态四、注意事项与排查1、存算一体部署关键注意事项2、存算一体故障排查核心方向五、存算一体部署后必做操作参考存算一体架构中BE 节点同时承担数据存储与计算任务高可用部署需围绕FE 集群冗余避免元数据与控制层单点故障和BE 节点多副本确保数据存储与计算高可用两大核心以下是针对性部署要点梳理一、部署前核心前提存算一体专属校验1. 环境与网络准备必看文档提前参考「部署前提条件」和「检查环境配置」确保 FE/BE 节点满足系统要求如 CentOS 7/Ubuntu 18.04、内核参数优化、关闭 Swap 等。网络互通FE 节点关键端口http_port8030、rpc_port9020、query_port9030、edit_log_port9010、BE 节点关键端口be_port9060、be_http_port8040、heartbeat_service_port9050、brpc_port8060需打通无防火墙/安全组拦截。FQDN 配置推荐生产若用主机名访问所有节点/etc/hosts需配置FE/BE 节点的主机名与 IP 映射例192.168.1.10 fe-leader避免依赖外部 DNS 解析失败。FQDN主机名部署模式FQDN 即完全限定域名简单说就是能唯一标识节点的“主机名”比如fe-leader或be-node-1在 StarRocks 部署中核心作用是用固定主机名替代易变的 IP 地址让节点间稳定通信避免 IP 变更后重新调整集群配置。配置 FQDN 最常用的方式是在集群所有节点的/etc/hosts文件里添加“节点 IP 主机名”的映射比如192.168.1.10 fe-leader且所有节点的映射内容必须完全一致。配置后可通过ping 主机名验证能通就说明生效。在 StarRocks 部署时用 FQDN 也很简单FE 首次启动需加--host_type FQDN参数BE 直接启动即可后续添加节点比如加 Follower FE 或 BESQL 里用主机名替代 IP比如ALTER SYSTEM ADD BACKEND be-node-1:9050无需配置priority_networks操作更简洁且适配生产环境 IP 变动场景。ip部署模式FE/BE 都要在各自配置文件fe.conf/be.conf里加priority_networks绑定宿主机实际 IP避免 Docker 选错 IP。启动 不用加 FQDN 参数加节点Follower FE/BE时SQL 里写宿主机实际 IP。宿主机 IP 不能随便改改了要重配priority_networks还要在 FE 用 SQL 更旧 IP否则节点连不上。2、部署规划存算一体关键FE 元数据路径独立于部署文件路径例部署文件在/starrocks/fe元数据路径设为/starrocks/fe_meta确保磁盘有 100GB 空间元数据增长需预留且权限为755chmod 755 meta_dir。BE 数据路径必须独立于部署文件路径例部署文件在/starrocks/be数据路径设为/starrocks/be_data推荐用 SSD 或高 IO 机械盘存算一体依赖 BE 存储性能单节点数据盘空间建议 1TB权限同样为755。二、FE 高可用集群配置存算一体与存算分离通用但需适配 BE 副本FE 是集群“控制中心”存算一体架构下需部署至少 3 个 Follower FE 节点1 Leader 2 Follower确保元数据不丢失、SQL 解析/规划不中断核心要点如下1. FE 配置文件关键参数所有 FE 节点统一修改fe/conf/fe.conf重点配置以下参数其他默认参数可参考「FE 配置项」文档元数据路径meta_dir fe_meta_dir必须与部署路径分离。端口配置http_port 8030所有 FE 节点此端口必须相同客户端/BE 访问 FE 的 HTTP 端口若冲突需改为其他可用端口如 8031。rpc_port 9020、query_port 9030、edit_log_port 9010可自定义但需确保节点间无冲突例不同 FE 节点rpc_port可不同但同一节点内端口唯一。IP/FQDN 绑定用 IP 访问添加priority_networks x.x.x.x/xCIDR 格式例192.168.1.10/24通过ifconfig或ip addr查看节点实际 IP确保每个 FE 有唯一 IP 标识。用 FQDN 访问无需配置priority_networks但需确保/etc/hosts已配置主机名映射。JDK 指定若节点安装多 JDK例系统自带 JDK 8 手动装 JDK 11需添加JAVA_HOME path_to_jdk例/usr/local/jdk11避免与环境变量JAVA_HOME冲突。BE 副本数适配若测试场景仅部署 1 个 BE 节点需添加default_replication_num 1默认值为 31 个 BE 无法满足 3 副本存储会导致数据写入失败生产环境 3 BE 节点无需修改。2. FE 集群启动与验证分步骤执行步骤1启动Leader FE节点首个FE默认成Leader先创建元数据路径mkdir -p fe_meta_dir例mkdir -p /starrocks/fe_meta。启动命令直接执行./fe/bin/start_fe.sh --daemon--daemon表后台运行无需加FQDN相关参数。验证启动执行cat fe/log/fe.log | grep thrift出现类似“thrift server started with port 9020”的日志说明启动成功。步骤2添加Follower FE节点与helper同步元数据需部署2个Follower FE流程如下在Leader FE上添加Follower用MySQL客户端连Leader FEmysql -h leader_fe_ip -P9030 -uroot初始密码为空9030是默认query_port。执行SQL加FollowerALTER SYSTEM ADD FOLLOWER follower_fe_ip:90109010是默认edit_log_port单次只能加1个需重复加第2个。配置并启动新的Follower FE重复创建元数据路径、修改fe.conf和Leader FE一致重点配meta_dir、http_port、priority_networks绑定自身IP。首次启动指定helper节点./fe/bin/start_fe.sh --helper leader_fe_ip:9010 --daemon。验证启动同样执行cat fe/log/fe.log | grep thrift出现thrift启动日志即成功。注意helper节点本质是StarRocks新FE节点尤其是Follower/Observer的“元数据同步源”新节点启动时通过它获取集群现有元数据比如集群拓扑、表结构等才能正常加入集群。核心作用就一个帮新FE节点“快速接入集群”。因为新FE刚启动时没有任何元数据无法直接和集群通信必须通过helper节点同步完整元数据才能成为集群的有效节点。实际用的时候要注意两点一是helper节点必须是集群中已正常运行的FE通常选LeaderFE也可选已存活的Follower二是新FE首次启动时必须通过--helper helper节点IP:edit_log_port参数指定它后续重启新FE就不用再指定了。步骤3检查FE集群状态在MySQL客户端执行SHOW PROC /frontends\G需满足3个FE节点的Alive字段均为true。1个节点Role是LEADER另外2个是FOLLOWER。所有节点IsHelper字段为true。三、BE 节点高可用配置存算一体核心存算一体中 BE 是“数据存储与计算节点”需通过3 节点冗余和数据多副本默认 3 副本实现高可用某 BE 节点故障时其他节点可接管数据存储与计算任务核心要点如下1. BE 配置文件关键参数所有 BE 节点统一修改be/conf/be.conf重点配置以下参数数据路径storage_root_path be_data_dir替换为提前创建的数据路径例/starrocks/be_data必须独立于部署路径且确保磁盘空间充足生产建议单节点 1TB。端口配置be_port 9060FE 与 BE 通信的 RPC 端口、be_http_port 8040BE 的 HTTP 端口、heartbeat_service_port 9050BE 与 FE 心跳端口、brpc_port 8060BE 间通信端口。若端口冲突需修改为其他可用端口例be_port 9061但需记录修改后的端口后续添加 BE 时需用到。IP/FQDN 绑定与 FE 一致IP 访问需添加priority_networks x.x.x.x/x例192.168.1.20/24FQDN 访问无需配置但需/etc/hosts映射。JDK 指定若多 JDK 环境添加JAVA_HOME path_to_jdk与 FE 用同一 JDK 版本最佳避免兼容性问题。2. BE 节点启动与添加到集群步骤 1启动单个 BE 节点先创建数据路径mkdir -p be_data_dir例mkdir -p /starrocks/be_data。启动命令./be/bin/start_be.sh --daemonBE 启动无需指定--host_typeFQDN 场景只需/etc/hosts配置正确。验证启动成功执行cat be/log/be.INFO | grep heartbeat若出现类似“I0520 11:00:00.456 ... heartbeat has started listening port on 9050”说明 BE 启动成功。步骤 2将 BE 节点添加到集群支持批量添加在 MySQL 客户端已连接 Leader FE执行 SQLALTER SYSTEM ADD BACKEND be1_ip/fqdn:heartbeat_service_port, be2_ip/fqdn:heartbeat_service_port, be3_ip/fqdn:heartbeat_service_port。例ALTER SYSTEM ADD BACKEND 192.168.1.20:9050, 192.168.1.21:9050, 192.168.1.22:9050heartbeat_service_port默认 9050若修改需替换。优势可通过一条 SQL 添加多个 BE 节点无需逐个执行。步骤 3检查 BE 集群状态在 MySQL 客户端执行SHOW PROC /backends\G需满足以下条件所有 BE 节点的Alive字段为true节点存活能与 FE 正常心跳。SystemDecommissioned和ClusterDecommissioned字段均为false节点未被下线可正常存储数据。TabletNum字段后续会随数据写入增加初始为 0 正常DataUsedCapacity会逐步增长。四、注意事项与排查1、存算一体部署关键注意事项BE 节点数量与副本数匹配生产环境必须部署3 BE 节点确保数据默认 3 副本存储某节点故障另外 2 个节点仍有完整数据。测试场景若仅 1 个 BE 节点需在 FE 配置文件中设置default_replication_num 1否则数据无法写入FE 会因“找不到足够 BE 存储副本”拒绝写入。端口冲突与路径权限问题端口冲突排查若 FE/BE 启动失败先执行netstat -tulpn | grep 端口号例netstat -tulpn | grep 9010确认端口是否被占用占用则修改配置文件。路径权限排查若日志报“Permission denied”执行chmod 755 -R meta_dir/data_dir例chmod 755 -R /starrocks/fe_meta确保 StarRocks 进程有读写权限。节点重启与集群停止顺序启动顺序先启动所有 FE 节点 → 再启动所有 BE 节点FE 未启动时BE 无法注册到集群。停止顺序先停止所有 BE 节点 → 再停止所有 FE 节点避免 FE 未同步 BE 元数据导致异常。停止命令FE./fe/bin/stop_fe.shBE./be/bin/stop_be.sh故障修复后的数据一致性FE 故障若 Leader FE 挂掉Follower 会自动选举新 Leader需 3 个 FE 节点中至少 2 个存活修复后重启原 Leader会自动以 Follower 身份加入集群。BE 故障若某 BE 节点挂掉FE 会标记其为Alive false待节点修复重启后会自动重新注册到集群并同步缺失的数据基于副本机制数据不会丢失。2、存算一体故障排查核心方向FE 启动失败查看警告日志cat fe/log/fe.warn.log常见问题元数据路径已存在旧数据删除原meta_dirrm -rf fe_meta_dir重新创建路径后启动。helper节点配置错误Follower 启动时--helper参数的 IP/端口错误需确认 Leader FE 的priority_networks和edit_log_port。BE 启动失败查看警告日志cat be/log/be.WARNING常见问题数据路径已存在旧数据删除原storage_root_pathrm -rf be_data_dir重新创建路径后启动。磁盘满执行df -h查看数据盘空间清理无用文件后重启。BE 节点Alive false检查网络在 FE 节点执行telnet be_ip heartbeat_service_port例telnet 192.168.1.20 9050若无法连接需排查防火墙/安全组。检查 BE 进程在 BE 节点执行ps -ef | grep starrocks_be若进程不存在重启 BE 节点./be/bin/start_be.sh --daemon。五、存算一体部署后必做操作参考修改初始密码默认 root 密码为空执行SET PASSWORD FOR root% PASSWORD(new_password);例SET PASSWORD FOR root% PASSWORD(StarRocks123!);避免安全风险。创建业务用户避免直接使用 root 操作执行CREATE USER biz_user% IDENTIFIED BY biz_password;并授予权限例GRANT SELECT, INSERT ON *.* TO biz_user%;。验证数据写入创建测试表并插入数据确认 BE 节点正常存储例CREATEDATABASEtest_db;USEtest_db;CREATETABLEtest_table(idINT,name STRING)ENGINEOLAPDUPLICATEKEY(id)DISTRIBUTEDBYHASH(id)BUCKETS10PROPERTIES(replication_num3);-- 副本数与 BE 节点数匹配INSERTINTOtest_tableVALUES(1,test);SELECT*FROMtest_table;-- 能查询到数据说明部署成功
阅读完成 · 觉得有帮助?
咨询建站