调整一致性哈希环
Tempo 使用 Cortex 的一致性哈希环(Consistent Hash Ring)实现。默认情况下,该环在所有 Tempo 组件之间通过 gossip 协议传播。但是,如果需要,也可以配置使用 Consul 或 Etcd。
Tempo 有四个一致性哈希环:distributor、ingester、metrics-generator 和 compactor。每个哈希环都有其独特的作用。
Distributor
参与者: Distributors
使用者: Distributors
除非您正在运行限制,否则此环不会影响 Tempo 的运行。
此环仅在全球速率限制启用时使用。distributors 使用此环来计算其他活跃的 distributors 数量。假定传入流量均匀分布到所有 distributors,并使用 (全局速率限制 / distributors 数量) 进行本地速率限制。
Ingester
参与者: Ingesters
使用者: Distributors, Queriers
此环由 distributors 用于将流量负载均衡到 ingesters。收到 spans 时,会对其 trace ID 进行哈希计算,然后根据环中的 token 所有权将其发送到相应的 ingesters。Queriers 也使用此环来查找 ingesters 以查询最近的追踪。
Metrics-generator
参与者: Metrics-generators
使用者: Distributors, Queriers
此环由 distributors 用于将流量负载均衡到 metrics-generators。收到 spans 时,会对其 trace ID 进行哈希计算,然后根据环中的 token 所有权将追踪发送到相应的 metrics-generators。Queriers 也使用此环从最近的追踪中生成 TraceQL 指标。
Compactor
参与者: Compactors
使用者: Compactors
此环由 compactors 用于分片压实(compaction)作业。作业被哈希到环中,拥有该作业的 compactor 是唯一被允许压实特定块集的组件,以防止压实过程中的竞争条件。
与哈希环交互
可以通过以下端点访问网页。这些页面显示所有环成员及其 tokens,并提供“遗忘”(Forget)某个环成员的功能。“遗忘”功能在环成员未正常关闭就离开环,从而导致其 tokens 仍留在环中时非常有用。
Distributor
可在以下组件上查看: Distributors
路径: /distributor/ring
不健康的 distributors 影响不大,但应该将其“遗忘”以降低维护环的成本。
Ingester
可在以下组件上查看: Distributors
路径: /ingester/ring
不健康的 ingesters 会导致写入失败。如果该 ingester 确实已离线,请立即将其“遗忘”。
Metrics-generators
可在以下组件上查看: Distributors
路径: /metrics-generator/ring
不健康的 metrics-generators 会导致写入失败。如果该 metrics-generator 确实已离线,请立即将其“遗忘”。
Compactor
可在以下组件上查看: Compactors
路径: /compactor/ring
不健康的 compactors 会导致块列表(blocklist)显著增长。如果该 compactor 确实已离线,请立即将其“遗忘”。
配置哈希环
环/生命周期管理器(Lifecycler)配置控制组件如何与环交互。有关更多详细信息,请参阅配置主题。