Docker Compose搭建生产级三节点Doris集群:从配置到故障转移全解析

Docker部署Apache Doris集群:解决FE/BE节点注册失败与配置持久化难题 如果你在尝试用 Docker 部署 Apache Doris 时,发现 FE 和 BE 节点总是无法正常启动,或者启动后无法互相发现、注册失败,那么这篇文章就是为你准备的。这不是一篇简单的“Hello World”教程,而是一份基于真实踩坑经验的深度复盘。很多教程只告诉你 docker run 的命令,却对容器网络、配置文件映射、节点通信这些决定成败的细节一笔带过,导致你照着做却卡在“集群搭建”这一步。 Apache Doris 作为一个高性能的实时分析数据库,其 Docker 化部署本应大幅简化环境配置。 阅读详情

开门见山说结论: Doris这种OLAP组件,完全可以用Docker-Compose跑出生产级效果 ,关键是架构设计、配置文件细节和故障转移机制要理解到位。这篇文章我以三节点物理机/虚拟机为例,从目录规划、fe.conf/be.conf逐项拆解,到三节点FE集群初始化、BE注册,再到手动杀容器验证FE自动选主和BE数据自愈,完整走一遍。适合正在调研Doris容器化部署、或者已经被坑过想找一份可靠方案的读者。

先说下为什么用Compose而不是裸机或者K8s:Doris的元数据管理依赖FE之间的通信,配置相对集中,用Compose可以把配置文件、数据目录、启动参数全部固化在声明式文件里,换一台机器也能快速复现;而K8s虽然扩展性强,但引入额外复杂度,运维团队不熟悉的话反而容易出问题。三节点规模用Compose是性价比很高的选择。

1. 部署前的架构设计与规划

1.1 三节点上怎么分配角色

生产级Doris集群最小可靠形态是三节点,每台机器建议同时部署 一个FE和一个BE 。FE负责元数据管理、SQL解析与查询规划,BE负责数据存储和查询执行。这样的好处是:FE组成奇数节点(1个master + 2个follower),满足选主投票机制,避免脑裂风险;BE在同一批机器上,三副本数据可以均匀分布,任何一个节点宕机都不影响数据可用性。

节点角色分配表:

节点 IP规划示例 FE角色 BE角色
node1 192.168.1.10 master(初始主节点) BE节点1
node2 192.168.1.11 follower BE节点2
node3 192.168.1.12 follower BE节点3

这里说个容易被忽视的点: FE的奇数节点不是随便凑的 。Doris FE集群基于BDB JE(Berkeley DB Java Edition)实现元数据复制,master故障后会由存活的follower投票选出新master。如果FE是2个,一旦一个挂了,剩下一个无法形成法定多数,集群就只会处于只读状态。所以要么1个FE自嗨,要么3个起步,这是硬性约束。

1.2 镜像版本选择与容器启动方式

镜像建议直接用Apache Doris官方镜像。Doris 2.1.x是目前的稳定版本线,镜像在Docker Hub上有apache/doris仓库,分别提供FE镜像和BE镜像。我写这篇文章时用的标签是 apache/doris:2.1.5-fe 和 apache/doris:2.1.5-be ,生产环境尽量锁定具体版本号,不要用latest,避免某次拉取拉到行为不一致的新镜像。

启动方式这里我采用 覆盖默认entrypoint、手动执行启动脚本 的方案。为什么不直接用镜像默认入口?因为Doris集群初始化有严格的顺序要求:第一个FE要以master模式启动,后续FE要通过 --helper 参数去克隆元数据加入集群,BE要在FE就绪后才能注册。如果完全依赖镜像入口的自动启动,你很难控制这个先后关系。手动启动看着麻烦,但对排障和集群成员控制最有掌控感。

1.3 宿主机目录与端口规划

生产环境必须把容器的元数据目录、数据目录、日志目录全部挂载到宿主机。Compose文件里我先约定好每台机器上的目录结构:

/opt/doris/
├── docker-compose.yml
├── fe/
│   ├── conf/fe.conf
│   ├── meta/          # FE元数据目录,重中之重
│   └── log/
└── be/
    ├── conf/be.conf
    ├── storage/       # BE数据根目录
    └── log/

端口规划方面,Doris默认端口分配:

组件 端口 用途
FE 8030 HTTP Web UI
FE 9030 MySQL协议查询端口
FE 9010 FE节点间edit log同步
FE 9020 FE内部RPC
BE 9050 BE心跳上报
BE 9060 BE Thrift服务
BE 8040 BE Web服务
BE 8060 BRPC服务

这三个节点如果部署在同一台机器上的不同容器里,端口会冲突,但我这里说的是三台独立节点,每台宿主机只跑一组FE+BE,端口可以完全复用默认值。如果基于单机模拟三节点,就得把容器端口逐一映射到不同的宿主机端口,等于是另一种玩法,后面我会单独说几句。

2. 配置文件逐项拆解:fe.conf 与 be.conf

2.1 fe.conf:每个参

Docker部署Apache Doris实战:从零搭建实时分析集群 在实际的数据仓库和实时分析项目中,Apache Doris 凭借其高性能、易用性和兼容 MySQL 协议的特性,成为了许多团队处理海量数据的核心组件。然而,从源码编译部署到生产环境稳定运行,中间涉及操作系统依赖、网络配置、资源分配等一系列复杂步骤,对于希望快速验证或搭建开发测试环境的开发者来说,门槛依然不低。Docker 容器化技术为这一过程提供了标准化的解决方案,它能将 Doris 及其运行环境打包,实现一键部署和跨平台运行,极大地简化了环境搭建的复杂度。 本文旨在为数据分析工程师、后端开发者和运维人员提 阅读详情

相关推荐

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 853

在docker中搭建redis哨兵环境

哨兵可以监控主节点和从节点的状态,并在主节点失效时自动进行故障转移。本文详细介绍了如何在docker中配置主节点、从节点和哨兵节点,并提供了详细的步骤和示例。出现该问题的原因是redis sentinel(哨兵)会更改节点和哨兵的conf文件,这涉及文件权限问题。最简单的一种处理方案:挂载文件时,选择挂载conf文件所在的目录,而不直接挂载conf文件。:哨兵在报告主节点和从节点的地址时,会使用主机名而不是 IP 地址。你应该能看到主节点和从节点的信息,确认哨兵已经正确监控主从节点。

斌斌(Java) 1555

Docker搭建Redis集群实战:主从、哨兵与Cluster全面指南

在微服务和容器化架构日益普及的今天,Redis作为高性能缓存与存储组件,其集群部署方式直接关系到系统的可用性与扩展性。从最基础的主从复制,到具备自动故障转移能力的哨兵模式,再到支持数据分片与水平扩展的官方Cluster架构,每一种方案都解决着不同场景下的核心痛点。Docker容器化技术则通过统一的镜像与网络配置,极大简化了Redis集群的搭建流程,让环境一致性和版本锁定成为可能。本文从Redis集群的三种模式原理出发,结合Docker容器网络特点,详细讲解如何规划固定IP、配置主从与哨兵、部署Cluster

weixin_27303545的博客 308

Redis哨兵模式实战:3台服务器搭建高可用集群(含Docker部署指南)

本文详细介绍了如何利用3台服务器搭建高可用的Redis哨兵模式集群,并提供了完整的Docker部署指南。通过实战演示,涵盖主从复制配置、哨兵集群部署、自动故障转移验证以及生产环境优化建议,帮助开发者快速构建稳定可靠的缓存服务。

lg888的博客 991

RocketMQ 5.3.1 集成 Spring Boot 3.4.3 就这么简单

RocketMQ 是一个分布式消息中间件,支持发布/订阅模型,具有高吞吐量、高可用性和事务消息等特性。它广泛应用于日志处理、订单系统和异步任务等场景。Spring Boot 3.4.3 集成 RocketMQ 5.3.1 的过程异常简单,仅需少量配置即可实现消息的生产和消费。本文从环境搭建到代码实现,覆盖了核心步骤。

lssffy的博客 1376

Spyglass功耗分析:从RTL到优化的全流程实践

本文详细介绍了在RTL设计阶段使用Spyglass进行早期功耗分析的全流程实践。通过一个真实项目案例,阐述了早期功耗分析的必要性,并手把手指导了从文件准备、GUI操作到报告解读与优化的完整步骤。文章重点说明了如何利用Spyglass实现功耗分析的“左移”,在编码阶段识别和修复功耗热点,从而避免后期高昂的修改成本,是低功耗芯片设计的关键技能。

purple的博客 1113

pix4d安装步骤

pix4d三维模型软件的安装步骤

Little_Bee_27000的博客 1万+

物体检测之非极大值抑制:NMS、softNMS、softerNMS、IoU-Net

当前的物体检测算法为了保证召回率,对于同一个真实物体往往会有多个的候选框输出。由于多余的候选框会影响检测精度,因此需要利用NMS过滤掉重叠的候选框,得到最佳的预测输出。当前有如下几种较为常见的NMS方法, 1.基本NMS 非极大值抑制, 顾名思义就是抑制不是极大值的边框,这里的抑制通常是直接去掉冗余的边框。 这个过程涉及以下两个量化指标: 1.预测得分:NMS假设一个边框的预测得分越高,这个框...

LeoLee 1935

matlab球面投影(二)

matlab球面投影,想做一个全景相机,不知道,要做成啥样,于是在MATLAB先仿真一下,看下是个啥样子 百度别人做的,复制下面的代码到MATLAB的命令串口下,,网上找了张全景图,可以是bmp,jpg,改程序就可以了 回车运行就可以看到结果。 复制下面代码时,下面的中文注释记得删除,MATLAB是会报错的, close all; clear all; clc [x,y,z]=sphere(50); A=imread('a.JPG'); //名字是自己命名的,记得改 B=warp(x,y,-z,

rjszcb的博客 3152

密码学:一文看懂Base64算法

Base64常常在我们开发中出现,我们可能只知道它是一串乱码(看不懂的符号),知道有时候知道我们需要把一些数据进行base64编码,有时候需要进行Base64解码。但是却不知道它的作用是什么?它存在的意义是什么?还有它是如何生成的?如何编码和解码?上述的疑问相信在你读完本篇文章之后烟消云散。下面开始正文。Base64是什么?它和加密解密操作有什么关系吗?没错,这就是经过Base64编码后的字符串。对它解码后,我们获得以下内容点个关注,是对我持续创作的最大的鼓励!

Shujie 1万+

3. Matérn协方差模型与随机偏微分方程

对应的高斯马尔可夫随机场 (GMRF)可以通过使用某种随机偏微分方程(SPDE)明确构造,当由高斯白噪声驱动时,随机偏微分方程的解是具有 Matérn 协方差函数的高斯场(GF)

weixin_40614311的博客 1735

GMSL转eDP芯片MAX9686X(ADI)

MAX96860/MAX96862/MAX96864解串器可以把单路或双路GMSL转换成eDP V1.4a,支持820MHzPCLK的无压缩的24bpp(每个像素的位数)视频,或660MHz的30bpp视频。芯片的GMSL支持NRZ编码的6Gbps/187Mbps的GMSL2,PAM4编码的12Gbps/187Mbps的GMSL3。同时支持单线(COAX模式)双向全双工传输控制数据和video数据。支持DSC压缩的芯片,最大支持像素时钟1080MHz@24bpp或者864MHz@30bpp,传输方式包括同轴

qflook的博客 2821

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: TypeScript Agent技能库工程化实践:Nx+ESM+semantic-release
下一篇: 电力系统稳定运行的三大生命线指标解析
要上进的柯同学
博客等级 码龄9年 47粉丝 1万+原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值