我在 Kubernetes 中设置了 3 个 Rest-Proxy(Kafka-rest) 实例。
https://docs.confluent.io/current/kafka-rest/docs/index.html
https://github.com/confluentinc/kafka-rest
我在部署之上添加了一个 NetScaler Ingress。
我在 Citrix NetScaler 文档中看到 NetScaler 为会话粘性提供了持久性配置。
在 Kafka-Rest 文档中提到:
REST 代理集群和负载平衡 - REST 代理旨在支持多个实例一起运行以分散负载,并且只要实例配置正确,就可以安全地运行在各种负载平衡机制(例如循环 DNS、发现服务、负载平衡器)之后.
和
尽管代理没有任何持久状态,但它是有状态的,因为消费者实例与特定的代理实例相关联。
但是,我已经尝试了配置中所有可能的组合。但是我在 Rest-Proxy 中的一些数据消费请求仍然失败。
我收到 HTTP 404 错误。
有人可以指导我,Rest-Proxy 需要什么样的会话粘性以及如何在 kubernetes 的 NetScaler 中实现它。
更新:
我还找到了这个文本,它指出我们应该使用创建消费者休息调用返回的“base_uri” 。现在我的问题是,我们是否应该在剩余的调用中明确使用它来消耗数据而不是负载均衡器 URL,或者是否应该在负载均衡器中配置粘性以考虑返回的 URL 并相应地发送以下请求(如果这是甚至可能)
如果您运行多个代理实例,您应该提供一些负载平衡机制。最简单的方法使用循环 DNS 或发现服务在启动时为每个应用程序进程选择一个实例,将所有流量发送到该实例。您也可以使用 HTTP 负载均衡器,但各个实例仍必须是可寻址的,以支持返回的绝对 URL,以便在消费者读取和偏移提交操作中使用。