4. Jaeger 架构与部署:组件与部署模式

Jaeger 是 CNCF 毕业的分布式追踪系统,其架构围绕“采集—处理—存储—查询”四个环节设计。理解 Jaeger 的组件构成与部署模式,是值班台环境配置移植适配的基础。本节将拆解 Jaeger 的核心组件,并对比单机部署与高可用部署的差异。

4.1 Jaeger 核心组件

Jaeger 由五个主要组件构成,每个组件承担明确的职责。下表列出各组件的功能、通信方式与关键配置项。

组件 角色 通信协议 关键配置项
Agent 客户端侧守护进程,接收应用发出的 Span,批量转发给 Collector gRPC / Thrift (UDP) --reporter.grpc.host-port
Collector 接收 Agent 或直接来自应用的 Span,校验、采样、写入存储后端 gRPC / HTTP --collector.zipkin.host-port
Query 提供 API 接口,从存储中检索 Trace 并返回给 UI HTTP / gRPC --query.storage.type
UI Web 前端,展示 Trace 搜索、Span 详情、服务依赖图 HTTP (浏览器 → Query) --query.port
Ingester (可选)从 Kafka 消费 Span 数据,批量写入存储,解耦 Collector 与存储 Kafka --ingester.kafka.brokers
值班台适配要点: Agent 通常以 Sidecar 模式部署在应用 Pod 内,Collector 与 Query 作为独立服务部署。在移植适配时,需重点确认 Agent 与 Collector 之间的网络连通性,以及 Collector 写入存储(Elasticsearch / Cassandra)的认证与索引配置。

4.2 Jaeger 架构组件关系图

下图展示 Jaeger 各组件的协作流程:应用通过 Agent 上报 Span,Collector 接收后写入存储,Query 从存储读取数据并通过 UI 呈现。

Jaeger 组件协作流程 应用 Agent Collector 存储后端 Query UI 说明: Agent 以 Sidecar 模式部署,与应用同 Pod;Collector 无状态可水平扩展; Query 与 UI 通常合并部署,对外暴露 HTTP 端口供浏览器访问。

4.3 单机部署模式

单机部署适用于开发测试环境或值班台小规模验证场景。所有组件运行在单一进程或同一主机内,存储使用内存或本地文件。

  • 部署方式: 使用 jaeger-all-in-one 二进制,内置 Agent、Collector、Query、UI 及内存存储。
  • 启动命令:
jaeger-all-in-one \
  --collector.zipkin.host-port=:9411 \
  --query.port=16686
  • 适用场景: 功能验证、单机调试、值班台环境快速搭建。
  • 限制: 内存存储重启后数据丢失;无高可用;无法支撑生产级吞吐。
值班台移植适配建议: 单机部署用于验证 Agent 上报链路与 UI 查询功能。确认应用端 Jaeger SDK 配置的 Agent 地址指向 all-in-one 的端口(默认 6831/14250),即可快速完成端到端连通性测试。

4.4 高可用部署模式

生产环境必须采用高可用部署,消除单点故障并支持水平扩展。核心思路是将 Collector 与 Query 无状态化,存储后端使用 Elasticsearch 或 Cassandra 集群。

4.4.1 高可用架构要点

组件 高可用策略 扩展方式
Agent 每个应用 Pod 部署一个,故障不影响其他 Agent 随应用自动扩缩
Collector 多副本 + 负载均衡(K8s Service / Nginx) 水平扩展副本数
Query 多副本 + 负载均衡,共享同一存储 水平扩展副本数
存储 Elasticsearch 集群 / Cassandra 集群 分片 + 副本
Ingester (可选)多副本消费 Kafka 分区 水平扩展副本数

4.4.2 高可用部署架构图

下图展示生产级高可用部署的组件拓扑,包含负载均衡、Kafka 缓冲层与存储集群。

Jaeger 高可用部署架构 应用 Pod (Agent Sidecar) 应用 Pod (Agent Sidecar) LB / K8s Service Collector-1 Collector-2 Collector-N Kafka 集群 Ingester ES / Cassandra Query-1 Query-2 UI Kafka 作为缓冲层,防止 Collector 写入峰值压垮存储;Ingester 可选,直接写入存储也可行。

4.5 部署模式对比

对比维度 单机部署 (all-in-one) 高可用部署
组件数量 1 个进程 多组件多副本
存储 内存(重启丢失) ES / Cassandra 集群
扩展性 不可扩展 水平扩展
可用性 单点故障 无单点
适用环境 开发 / 测试 / 值班台验证 生产 / 预发布
配置复杂度 低 高(需配置存储、Kafka、LB)
值班台移植适配风险提示: 从单机迁移到高可用部署时,需同步修改 Agent 上报地址(从 all-in-one 端口改为 Collector 的 LB 地址),并确保存储索引模板与数据保留策略已提前配置。建议先在值班台环境使用 all-in-one 验证链路完整性,再逐步切换至高可用架构。