AWS ELB粘性会话可以用于后端请求吗?

时间:2016-03-19 05:37:35

标签: amazon-elb sticky-session

我目前在AWS上托管我的Web应用程序,我使用两个ELB实例,一个用于平衡前端请求到应用服务器,另一个用于平衡后端请求从应用服务器到API服务器,像这样(抱歉蹩脚的ascii图):

           /-->APP1--\    /-->API1
User-->ELB1           ELB2
           \-->APP2--/    \-->API2

换句话说,APP服务器发出的API请求在两个后端API服务器之间均衡负载均衡。

但是,因为我在API服务器上缓存响应,并使用API​​服务器之间未共享的缓存失效机制,我希望用户的会话被卡住到一个后端API服务器。

我已经将用户的会话粘在一个APP服务器上,使用正常的ELB负载均衡器生成的cookie粘性,但有没有办法让后端ELB卡在会话中?当然,这些请求并非来自浏览器,因此没有什么可以管理cookie,而ELB似乎只能管理cookie的粘性。我可以模仿后端请求的必要cookie吗?

2 个答案:

答案 0 :(得分:1)

要关闭这个问题,是的,只需捕获“Set-Cookie”即可轻松实现这一目标。来自ELB的响应头,然后在后续请求中将cookie传回。但是,请参阅下面的警告。

答案 1 :(得分:0)

我不相信可以在App服务器和API服务器之间实现粘性,而不会造成一大堆凌乱的工作。我可能是错的,而且我非常愿意纠正,但我不相信有一个简单的解决方案,除非您用于App Server逻辑的语言可以提供。

无论如何,这里最好的解决方案是将您的应用服务器和缓存分离。在由不同服务器提供服务的API服务器之间共享单个缓存会更有意义。这将增加您的基础架构的容错能力,并在缓存中为您提供质量更好的数据(特别是在您扩展时)。您可以使用ElastiCache服务为您执行此操作,避免任何繁重的工作。