Jaeger 部署与配置
Jaeger 是 CNCF 毕业的可观测性项目,专注于链路追踪数据的收集、存储和可视化。Jaeger 支持多种部署模式,从轻量级的 All-in-One 模式到生产级的高可用模式,团队可以根据规模选择合适的部署方案。
部署模式的选择取决于两个因素:Trace 吞吐量(每秒产生的 Span 数量)和查询并发(同时查询的终端用户数量)。
部署模式对比
All-in-One 模式
All-in-One 模式将所有组件(Agent、Collector、Query、UI)打包为一个进程,使用内存存储。适用于本地开发、演示、小规模测试环境。
All-in-One 模式的数据存储在内存中,容器重启后数据丢失,适合对数据持久化没有要求的场景。
Production 模式部署
Production 模式采用组件分离部署:
Jaeger Agent:每台应用服务器部署一个 Agent,通过 UDP 接收应用上报的 Span 数据,转发给 Collector。Agent 采用无状态设计,可以随时重启。
Jaeger Collector:部署多个 Collector 实例,前置负载均衡。Collector 负责接收来自 Agent 的数据,验证格式后写入后端存储(Elasticsearch 或 Cassandra)。
Jaeger Query + UI:查询层部署 2-3 个实例,通过 Ingress 对外暴露。UI 层是无状态的,可以水平扩展。
高可用配置
大规模生产环境需要关注高可用和数据安全:
多副本存储:Elasticsearch 集群至少 3 个节点,配置至少 2 个副本,确保任意单节点故障不影响服务。
Collector 容错:部署多个 Collector 实例,Agent 通过 DNS 负载均衡上报数据。Collector 故障时,Agent 会缓存 Span 数据,等待恢复后重传。
数据保留策略:配置合理的数据保留周期(如 7-14 天),定期归档历史数据到对象存储,降低存储成本。