2

我创建了两个 Amazon EC2 实例。之后,我创建了一个弹性负载均衡器并在其中注册了两个实例。
现在我想知道的是,当我们使用负载均衡器的 DNS 名称时,负载均衡器将使用哪个实例?

4

3 回答 3

4

负载平衡的想法是在多台计算机或计算机集群、网络链接、中央处理器、磁盘驱动器或其他资源之间分配工作负载 [...]

虽然有许多可以想象的算法,但总体目标是实现最佳资源利用率、最大化吞吐量、最小化响应时间和避免过载,这通常意味着负载平衡资源之间的负载透明分布。因此,您通常不会知道(也不应该知道)哪个负载平衡资源服务于特定请求。

因此,Elastic Load Balancing (ELB) 会 自动将传入的应用程序流量分布在多个 Amazon EC2 实例之间

具体如何做到这一点是一个相当复杂的话题,主要是由于 ELB 路由文档不存在,因此需要组装一些部分来得出结论 - 请参阅我对相关问题Can Elastic Load Balancers 正确分布的回答流量到不同大小的实例进行详细分析,包括我知道的所有参考。

对于手头的问题,我认为这归结为 AWS 团队从 2009 年对ELB 策略的反应有些模糊:

ELB 松散地跟踪每个实例有多少未完成的请求(或 TCP 的连接)。 它不会监控每个实例的资源使用情况(例如 CPU 或内存)。ELB 目前将在它认为具有最少未完成请求的实例中进行循环。[强调我的]

于 2013-04-12T17:28:16.470 回答
1

当然,您可以确定您的请求发送到哪个服务器!

在每台服务器上,您将需要类似于 health_check.html 文件的文件(可以命名任何东西,有人建议使用 index.htm,但这是一个坏主意,完全是另一个讨论),以便负载均衡器可以调用它并确定多长时间它需要得到回应。

在服务器 #1 上,将以下内容放入 health_check.html 文件中:<HTML><BODY>1</BODY></HTML>

在服务器 #2 上将其放入 health_check.html 文件中:<HTML><BODY>2</BODY></HTML>

现在,当您导航到 www.YourDomain.com/health_check.html 时,您将确切知道您在哪个服务器上。

清除您的 cookie 并重新导航到相同的 URL 以查看您下一个获得的服务器。祝云开发者好运!

于 2013-08-29T20:55:56.207 回答
1

stf ,您无法知道,通过 EBS 分配哪些服务器负载,EBS 内部负责请求分配。

于 2013-04-12T10:40:11.243 回答