假设EC2上的一组Web服务器同时具有Elastic Load Balancing和Auto Loading(意味着实例基于需求启动和死亡),有人能告诉我用户的浏览器会话会发生什么吗? 负载平衡器是否足够聪明来跟踪会话? 或者至less足够聪明,可以将特定用户的请求始终发送给同一个实例? 还是我必须自己find并pipe理这个问题的解决scheme?
需要更多的信息,这取决于你如何实施你的会议。 尽pipe一些负载均衡器“足够聪明”,足以根据会话进行redirect,但依靠这一点意味着您的架构首先被打破。
理想情况下,您需要集中式或分布式会话存储。 好的select是像MySQL这样的中央数据库,或者像memcached一样分布的东西。 你可能想从数据库开始,如果你真的开始获得stream量,转到memcached。
你的应用程序使用什么框架或语言?
不,ELB不是基于会话的负载均衡器。 这是一个“不严格的循环赛”的负载均衡器,没有考虑到你的会话scheme。 这里调查了一些细节: http : //clouddevelopertips.blogspot.com/2009/07/elastic-in-elastic-load-balancing-elb.html
如果你想使用ELB,那么你需要确保你的会话scheme可以处理任何请求被路由到ELB池中的任何服务器的请求。
你有两个select。
你最好的select是按照aveo的说法。 使用集中式会话存储意味着他们可以击中任何一台服务器,并且仍然可以进行会话。 您可以启动并终止实例,而不用担心对用户的影响。
另一个select是使用ELB的粘性选项。 您可以创build会话cookie,负载均衡器会每次将会话cookie路由到同一个实例。 问题在于你不能自由地杀死实例,因为人们会失去他们的会话(如果有的话)。 这种方法唯一的优点是实现起来非常简单。 失去会话通常不会那么糟糕。 用户只需重新login即可。