【发布时间】:2017-03-20 09:04:29
【问题描述】:
如果我注册多个不同大小的EC2 实例,任何人都知道ELB 将如何分发请求。说一个m1.medium、一个m1.large和一个m1.xlarge。
如果我注册相同大小的EC2 实例会有所不同吗?如果是那怎么办?
【问题讨论】:
标签: amazon-ec2 amazon-elb
如果我注册多个不同大小的EC2 实例,任何人都知道ELB 将如何分发请求。说一个m1.medium、一个m1.large和一个m1.xlarge。
如果我注册相同大小的EC2 实例会有所不同吗?如果是那怎么办?
【问题讨论】:
标签: amazon-ec2 amazon-elb
这是一个相当复杂的话题,主要是由于 Amazon ELB 路由文档不存在,因此需要组装一些部分来得出结论 - 请参阅我对相关问题 Can Elastic Load Balancers correctly distribute traffic to different size instances 的回答以获取详细信息分析,包括我知道的所有参考资料。
对于手头的问题,我认为这可以归结为 AWS 团队从 2009 年对ELB Strategy 的回复有些模糊:
ELB 松散地跟踪有多少请求(或 TCP 的情况)在每个实例中都未完成。 它不监控 每个实例的资源使用情况(例如 CPU 或内存)。电子负载均衡器 目前将在它认为的那些实例中循环 具有最少的未完成请求。 [强调我的]
根据您的应用程序架构和请求种类,较大的Amazon EC2 instance types 可能能够更快地处理请求,因此未完成的请求更少并相应地接收更多流量,但无论哪种方式,ELB应该分配流量平均而言适当,即应该在某种程度上隐含地考虑不均匀的实例特征 - 虽然我自己没有尝试过,但我会推荐两者,Monitoring Your Load Balancer Using CloudWatch 以及监控您的各个 EC2 实例并关联结果以获得各自的最终对这样的设置有洞察力和信心。
【讨论】:
您好,我同意 Steffen Opel 的观点,最近我还遇到了一位 AWS 的解决方案架构师,他就弹性负载均衡提出了几个建议,以通过 ELB 实现更好的性能。
1) 确保在所有可用区上运行的实例数量相等。例如,对于 ap-southeast,我们必须使用可用区 1a 和 1b,因此请确保两个区域的 ELB 连接的实例数量相等。
2) 确保您的应用程序是无状态的,这是云强制执行并向开发人员建议的。
3)不要使用粘性会话。
5)将 TTL(生存时间)减少到最大可能水平,例如 10 秒或其他时间。
6) 不健康检查的 TTL 应该是最小的,这样 ELB 就不会保留不健康的实例。
7) 如果您要排除 ELB 的大量流量,请确保您对 ELB 本身进行负载测试,它的扩展速度不如您的 ec2 实例。
8) 如果您正在缓存,那么请思考一千次您从哪个点选择要缓存的数据。
以上所有提示只是为了帮助您做得更好。最好有相同大小的实例。
【讨论】: