使用 sidecar 代理运行分布式 Tempo
您可以通过 sidecar 代理路由 Pod 间的 gRPC 流量,以满足自定义安全、路由或日志记录等要求。常见示例包括 Envoy、Nginx、Traefik 或 Istio 和 Linkerd 等服务网格。
Tempo Pod 如何通信
Tempo Pod 使用 gRPC 进行通信。
分发器(distributor)和写入器(ingester)等不同组件通过一个共享环查找彼此,该共享环包含 Pod 列表、它们的角色及其地址。Pod 在启动时将其地址和监听端口发布到环中,并在退出时注销自己。
整体网络如下所示
可以通过访问分发器上的 /ingester/ring
URL 来查看写入器的低级环数据。它看起来像这样
默认情况下,gRPC 流量使用端口 9095,但可以通过为每个需要的 Pod 自定义 grpc_listen_port
来更改此设置。
server:
grpc_listen_port: 12345
环内容反映了新的端口
使用代理运行 Tempo
某些安装要求 Pod 间的 gRPC 流量通过 sidecar 代理运行。使用代理运行 Tempo 需要为每个 Pod 设置两个端口:一个用于 Tempo 进程,一个用于 sidecar。此外,环内容必须反映代理的端口,以便来自其他 Pod 的流量通过代理。
整体网络如下所示
这不能通过像上一个示例中那样设置相同的 grpc_listen_port
来实现。相反,我们需要写入器监听端口 A,但广播自身使用端口 B。这通过自定义写入器的 lifecycler 端口来实现
ingester:
lifecycler:
port: 12345
现在,写入器正在监听端口 9095 上的常规流量,但分发器将把流量路由到其端口 12345。
Metrics-generator 代理
您可以在 metrics-generator 中自定义 lifecycler 端口。要为 metrics-generator 设置实例端口,请使用此配置
metrics_generator:
ring:
instance_port: 12345
将 12345
替换为正确的端口号。