我有一个 HAProxy 负载均衡器,我想用它来为请求标记一个唯一的 ID(X-Unique-ID 标头),以便我可以关联多个系统中的日志之间的事件。
HAProxy 具有使用指令执行此操作的功能unique-id-format
。文档解释说,这仅使用日志系统的语法,并继续建议您使用客户端和服务器 IP 地址、时间戳等内容来构建可能唯一的内容。
我想知道是否可以为每个请求生成一个随机(版本 4)UUID(或类似的东西),而不是生成一个包含潜在敏感客户端信息(如 IP 地址和请求时间)的 UUID。
答案1
从 HAProxy 2.0 开始,该uuid()
功能可用。
因此,这应该可以满足您的需要:
unique-id-format %[uuid()]
unique-id-header X-Unique-ID
使用unique-id-header
而不是 的一个优点http-request set-header
是您可以在defaults
部分中设置它。
答案2
在你的前端你可以使用如下命令:
http-request set-header TraceId %[rand,hex,bytes(8,8),lower]%[rand,hex,bytes(8,8),lower]%[rand,hex,bytes(8,8),lower]
rand:返回 0 到可能值之间的随机整数。如果未指定,则默认为 2^32(4294967295)