13.9.1 Envoy Sidecar如何在代理请求的过程中处理跟踪
-
用户在请求中注入跟踪相关的请求ID, Envoy Sidecar接入后发送至本地服务(local service),如右图中的App
- Envoy需要把TraceID发给本地服务
- 还可能会附加其它标头
首先客户端用户再请求中要注入与跟踪相关的请求ID,我们需要在客户端生成请求ID,上图中客户端生成X-B3-Traceid,使用的是B3的traceid格式,这时候envoy就需要把traceid发送给本地服务,App是我们被代理的,envoy是sidecar,前端不管它是什么组件,有可能是front envoy或者其它客户端,它生成了一个请求ID并发给envoy,envoy就需要把这个请求ID传送给其反向代理的本地的App,对于App本身而言它可能还会通过X-Forwarded-For来记录下来究竟前端是谁代理而来,envoy can add headers可以加一些其它的首部,包括X-Forwarded-For,还有X-Forwarded-Client-Cert等等。
-
本地服务有可能额外需要调用外部的其它服务,其请求通常由Envoy Sidecar上的Egress Listener代理
-
每个请求都需要其ID,为了保持跟踪,需要复制接收到的TraceID,并附加在请求中,以完成传播
-