当前位置: 首页 > news >正文

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

文章目录

  • 一、部署前核心前提(存算一体专属校验)
    • 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_port 8030、rpc_port 9020、query_port 9030、edit_log_port 9010)、BE 节点关键端口(be_port 9060、be_http_port 8040、heartbeat_service_port 9050、brpc_port 8060)需打通,无防火墙/安全组拦截。
  • FQDN 配置(推荐生产):若用主机名访问,所有节点 /etc/hosts 需配置 FE/BE 节点的主机名与 IP 映射(例:192.168.1.10 fe-leader),避免依赖外部 DNS 解析失败。

 

FQDN(主机名)部署模式

FQDN 即完全限定域名,简单说就是能唯一标识节点的“主机名”(比如 fe-leaderbe-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 或 BE),SQL 里用主机名替代 IP(比如 ALTER SYSTEM ADD BACKEND "be-node-1:9050"),无需配置 priority_networks,操作更简洁且适配生产环境 IP 变动场景。

 

ip部署模式

  1. FE/BE 都要在各自配置文件(fe.conf/be.conf)里加 priority_networks,绑定宿主机实际 IP,避免 Docker 选错 IP。
  2. 启动 不用加 FQDN 参数;加节点(Follower FE/BE)时,SQL 里写宿主机实际 IP。
  3. 宿主机 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 配置项」文档):

  1. 元数据路径meta_dir = <fe_meta_dir>,必须与部署路径分离。
  2. 端口配置
    • http_port = 8030:所有 FE 节点此端口 必须相同(客户端/BE 访问 FE 的 HTTP 端口),若冲突需改为其他可用端口(如 8031)。
    • rpc_port = 9020query_port = 9030edit_log_port = 9010:可自定义,但需确保节点间无冲突(例:不同 FE 节点 rpc_port 可不同,但同一节点内端口唯一)。
  3. IP/FQDN 绑定
    • 用 IP 访问:添加 priority_networks = x.x.x.x/x(CIDR 格式,例:192.168.1.10/24),通过 ifconfigip addr 查看节点实际 IP,确保每个 FE 有唯一 IP 标识。
    • 用 FQDN 访问:无需配置 priority_networks,但需确保 /etc/hosts 已配置主机名映射。
  4. JDK 指定:若节点安装多 JDK(例:系统自带 JDK 8 + 手动装 JDK 11),需添加 JAVA_HOME = <path_to_jdk>(例:/usr/local/jdk11),避免与环境变量 JAVA_HOME 冲突。
  5. BE 副本数适配:若测试场景仅部署 1 个 BE 节点,需添加 default_replication_num = 1(默认值为 3,1 个 BE 无法满足 3 副本存储,会导致数据写入失败);生产环境 3+ BE 节点无需修改。

 

2. FE 集群启动与验证(分步骤执行)

步骤1:启动Leader FE节点(首个FE默认成Leader)

  1. 先创建元数据路径:mkdir -p <fe_meta_dir>(例:mkdir -p /starrocks/fe_meta)。
  2. 启动命令:直接执行 ./fe/bin/start_fe.sh --daemon--daemon 表后台运行,无需加FQDN相关参数)。
  3. 验证启动:执行 cat fe/log/fe.log | grep thrift,出现类似“thrift server started with port 9020”的日志,说明启动成功。

 

步骤2:添加Follower FE节点与helper同步元数据

需部署2个Follower FE,流程如下:

  1. 在Leader FE上添加Follower
    • 用MySQL客户端连Leader FE:mysql -h <leader_fe_ip> -P9030 -uroot(初始密码为空,9030是默认query_port)。
    • 执行SQL加Follower:ALTER SYSTEM ADD FOLLOWER "<follower_fe_ip>:9010"(9010是默认edit_log_port,单次只能加1个,需重复加第2个)。
  2. 配置并启动新的Follower FE
    • 重复创建元数据路径、修改fe.conf(和Leader FE一致,重点配meta_dirhttp_portpriority_networks绑定自身IP)。
    • 首次启动指定helper节点:./fe/bin/start_fe.sh --helper <leader_fe_ip>:9010 --daemon
    • 验证启动:同样执行 cat fe/log/fe.log | grep thrift,出现thrift启动日志即成功。

注意:

  1. helper节点本质是StarRocks新FE节点(尤其是Follower/Observer)的“元数据同步源”,新节点启动时通过它获取集群现有元数据(比如集群拓扑、表结构等),才能正常加入集群。

  2. 核心作用就一个:帮新FE节点“快速接入集群”。因为新FE刚启动时没有任何元数据,无法直接和集群通信,必须通过helper节点同步完整元数据,才能成为集群的有效节点。

  3. 实际用的时候要注意两点:

    • 一是helper节点必须是集群中已正常运行的FE(通常选Leader
      FE,也可选已存活的Follower);
    • 二是新FE首次启动时,必须通过--helper <helper节点IP:edit_log_port>参数指定它,后续重启新FE就不用再指定了。

 

步骤3:检查FE集群状态

在MySQL客户端执行 SHOW PROC '/frontends'\G,需满足:

  • 3个FE节点的Alive字段均为true
  • 1个节点RoleLEADER,另外2个是FOLLOWER
  • 所有节点IsHelper字段为true

 

三、BE 节点高可用配置(存算一体核心)

存算一体中 BE 是“数据存储与计算节点”,需通过 3+ 节点冗余数据多副本(默认 3 副本) 实现高可用,某 BE 节点故障时,其他节点可接管数据存储与计算任务,核心要点如下:

1. BE 配置文件关键参数(所有 BE 节点统一)

修改 be/conf/be.conf,重点配置以下参数:

  1. 数据路径storage_root_path = <be_data_dir>(替换为提前创建的数据路径,例:/starrocks/be_data),必须独立于部署路径,且确保磁盘空间充足(生产建议单节点 1TB+)。
  2. 端口配置
    • be_port = 9060(FE 与 BE 通信的 RPC 端口)、
    • be_http_port = 8040(BE 的 HTTP 端口)、
    • heartbeat_service_port = 9050(BE 与 FE 心跳端口)、
    • brpc_port = 8060(BE 间通信端口)。
    • 若端口冲突,需修改为其他可用端口(例:be_port = 9061),但需记录修改后的端口,后续添加 BE 时需用到。
  3. IP/FQDN 绑定:与 FE 一致,IP 访问需添加 priority_networks = x.x.x.x/x(例:192.168.1.20/24),FQDN 访问无需配置(但需 /etc/hosts 映射)。
  4. 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 --daemon(BE 启动无需指定 --host_type,FQDN 场景只需 /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)执行 SQL:ALTER 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:9050"heartbeat_service_port 默认 9050,若修改需替换)。
  • 优势:可通过一条 SQL 添加多个 BE 节点,无需逐个执行。

 

步骤 3:检查 BE 集群状态

在 MySQL 客户端执行:SHOW PROC '/backends'\G,需满足以下条件:

  • 所有 BE 节点的 Alive 字段为 true(节点存活,能与 FE 正常心跳)。
  • SystemDecommissionedClusterDecommissioned 字段均为 false(节点未被下线,可正常存储数据)。
  • TabletNum 字段后续会随数据写入增加(初始为 0 正常),DataUsedCapacity 会逐步增长。

 

四、注意事项与排查

1、存算一体部署关键注意事项

  1. BE 节点数量与副本数匹配

    • 生产环境必须部署 3+ BE 节点,确保数据默认 3 副本存储(某节点故障,另外 2 个节点仍有完整数据)。
    • 测试场景若仅 1 个 BE 节点,需在 FE 配置文件中设置 default_replication_num = 1,否则数据无法写入(FE 会因“找不到足够 BE 存储副本”拒绝写入)。
  2. 端口冲突与路径权限问题

    • 端口冲突排查:若 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 进程有读写权限。
  3. 节点重启与集群停止顺序

    • 启动顺序:先启动所有 FE 节点 → 再启动所有 BE 节点(FE 未启动时,BE 无法注册到集群)。
    • 停止顺序:先停止所有 BE 节点 → 再停止所有 FE 节点(避免 FE 未同步 BE 元数据导致异常)。
    • 停止命令:
      • FE:./fe/bin/stop_fe.sh
      • BE:./be/bin/stop_be.sh
  4. 故障修复后的数据一致性

    • FE 故障:若 Leader FE 挂掉,Follower 会自动选举新 Leader(需 3 个 FE 节点中至少 2 个存活),修复后重启原 Leader,会自动以 Follower 身份加入集群。
    • BE 故障:若某 BE 节点挂掉,FE 会标记其为 Alive = false,待节点修复重启后,会自动重新注册到集群,并同步缺失的数据(基于副本机制,数据不会丢失)。

 

2、存算一体故障排查核心方向

  1. FE 启动失败

    • 查看警告日志:cat fe/log/fe.warn.log,常见问题:
      • 元数据路径已存在旧数据:删除原 meta_dirrm -rf <fe_meta_dir>),重新创建路径后启动。
      • helper 节点配置错误:Follower 启动时 --helper 参数的 IP/端口错误,需确认 Leader FE 的 priority_networksedit_log_port
  2. BE 启动失败

    • 查看警告日志:cat be/log/be.WARNING,常见问题:
      • 数据路径已存在旧数据:删除原 storage_root_pathrm -rf <be_data_dir>),重新创建路径后启动。
      • 磁盘满:执行 df -h 查看数据盘空间,清理无用文件后重启。
  3. 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)。

 

五、存算一体部署后必做操作(参考)

  1. 修改初始密码:默认 root 密码为空,执行 SET PASSWORD FOR 'root'@'%' = PASSWORD('new_password');(例:SET PASSWORD FOR 'root'@'%' = PASSWORD('StarRocks123!');),避免安全风险。
  2. 创建业务用户:避免直接使用 root 操作,执行 CREATE USER 'biz_user'@'%' IDENTIFIED BY 'biz_password';,并授予权限(例:GRANT SELECT, INSERT ON *.* TO 'biz_user'@'%';)。
  3. 验证数据写入:创建测试表并插入数据,确认 BE 节点正常存储(例:
    CREATE DATABASE test_db;
    USE test_db;
    CREATE TABLE test_table (id INT, name STRING) ENGINE=OLAP DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 10 PROPERTIES ("replication_num" = "3"); -- 副本数与 BE 节点数匹配
    INSERT INTO test_table VALUES (1, "test");
    SELECT * FROM test_table; -- 能查询到数据说明部署成功
    
http://www.dtcms.com/a/572922.html

相关文章:

  • 小型工厂怎么找外贸客户?
  • 【Android】正式打包发布
  • 寻找做网站的合作伙伴北京北京网址建设
  • PyTorch2 Python深度学习 - 模型保存与加载
  • 南京html5网站建设今天发生的重大新闻5条
  • 台州网站排名优化公司中国石油第一建设公司官网
  • JS原型和原型链
  • Rust 赋能图片批量处理:从 ImageKit 实现到行业前沿优化实践
  • ceph osd down排查
  • Android 14 系统启动流程深度解析:内置SD卡挂载流程
  • 【Qt】大数据量表格刷新优化--只刷新可见区域
  • 基于 React 的倒计时组件实现:暴露方法供父组件状态管理
  • 2.每日机器学习——张量(Tensors)
  • wordpress换php7出错内蒙古seo公司
  • 设计模式——桥接模式(bridge)
  • 阳光家园广州网站个人网站如何做即时支付
  • Arbess零基础学习 - 使用Arbess+GitLab实现.Net 项目构建/主机部署
  • 【数据结构】PriorityQueue优先队列:基于堆(heap)实现
  • PCB设计如何防止别人抄板?
  • macOS自定义安装PlatformIO Core
  • VSCode中Copilot的询问、编辑、代理有啥区别?
  • 二重积分器(Double Integrator)
  • APP与小程序分账系统是什么?资金管理新思路,合规高效分账
  • Hudi和Iceberg的Specification规范角度详细比较异同点
  • 临安网站建设杭州低价做网站
  • 肇庆市手机网站建设品牌专业做网站企业
  • 幂等性 VS 分布式锁:分布式系统一致性的两大护法 —— 从原理到实战的深度剖析
  • 初识DDD架构
  • 一次redis内存泄露故障分析
  • 计算机网络自顶向下方法32——网络层 网络层概述 转发和路由选择,数据平面和控制平面(传统方法,SDN方法) 网络服务模型