多租户配置
介绍
多租户(Multi-tenancy)是分布式追踪系统中的一个重要概念,它允许同一个Jaeger实例为多个独立的团队或项目(称为"租户")提供服务,同时保持各自数据的隔离性。对于初学者来说,可以将其想象为一栋公寓大楼:每个租户拥有自己的独立空间,共享相同的基础设施(如水电),但彼此的数据和资源互不干扰。
在Jaeger中实现多租户通常需要以下组件协同工作:
- 租户标识(如HTTP请求头)
- 存储后端支持(如Elasticsearch索引或Cassandra键空间)
- 查询服务的路由逻辑
何时需要多租户?
- 多个团队共享同一个Jaeger实例
- 需要满足不同部门的数据隔离需求
- 实现基于项目的访问控制
基础配置
1. 基于HTTP头的租户识别
Jaeger可以通过检查传入请求的HTTP头来确定租户。最常见的做法是使用 X-Scope-OrgId
头:
# jaeger-collector 配置示例
query:
multi-tenancy:
enabled: true
header: "X-Scope-OrgId"
2. 存储后端配置
不同的存储后端需要不同的多租户配置方式:
Elasticsearch 方案
storage:
type: elasticsearch
elasticsearch:
index-prefix: "jaeger-tenant-"
multi-tenancy:
enabled: true
这会为每个租户创建独立的索引,例如:
jaeger-tenant-teamA-*
jaeger-tenant-teamB-*