我已在AWS堆栈上的rails应用程序上运行基于电子商务的ruby。我正在使用Elastic负载均衡器运行ubuntu 10.04 ec2实例,并且我在可用区1a和1b中都保持了相同数量的实例。但根据我的观察,ELB似乎正在将更多的流量推向1a而不是将其平分。虽然在1b中运行的实例的运行状况良好,但我也禁用了ELB上的粘性会话。我在两个可用区域上运行了2个大型和1个中型实例。
负载平均分配的原因是什么。
答案 0 :(得分:2)
根据我的经验,如果来自单个网络或IP地址的流量不成比例,就会发生这种情况。
ELB使用不同的平衡层。 DNS负载平衡会将其发送到两个区域之一的一组IP地址,软件负载均衡器将在区域中的实例之间分配流量。
如果您有来自同一网络的大量流量,很可能很多用户在您的负载均衡器上获得相同的DNS解析并最终位于同一区域。
答案 1 :(得分:0)
如果源流量来自单个网络/ IP范围或IP地址,ELB可能会不成比例地将流量负载平衡到后端。我已经在我的博客“Dissecting ELB”中讨论了这一点以及其他一些关于ELB的细节。我也注意到在一些流行的OSS LB实现中的这种行为,你可以将平衡算法作为“源”以及会话粘性组合。如果未在HTTP上发送会话ID,则它将基于“源”加载平衡。