我有一个Docker容器,它是一个REST API网络服务器。我想在Docker Swarm中使用这个网络服务器。一些REST API调用用于异步模式。也就是说,第一次调用提供用于处理的数据,并返回请求标识符。第二个调用使用请求标识符来检查处理并在处理完成时获得结果。由于Docker Swarm中的任何Web服务器之间没有连接,我如何强制第二个REST API调用回到第一个REST API调用中使用的Docker实例?无论如何都要确保在Docker Swarm中对这两个REST API调用建立Web服务器关联吗?
答案 0 :(得分:1)
使用Docker Swarm模式和Ingress网络,连接使用循环负载平衡进行处理,这是不可配置的。如果连接保持打开状态(大多数Web浏览器都是这种情况),您会发现请求会返回到同一个实例。
您可以在应用程序前使用反向代理,该代理了解每个服务实例。 Docker在EE产品中使用了他们的HRM工具,而许多其他反向代理,如traefik,提供了类似的粘性会话选项。
如果可以的话,更好的设计是利用外部缓存来实现任何持久性,例如: Redis的。这样,您可以在不中断所有会话的情况下执行应用程序的滚动更新。