【问题标题】:Clarification of nginx and load balancing needed需要澄清 nginx 和负载平衡
【发布时间】:2015-07-04 18:42:39
【问题描述】:

我现在正在阅读 Instagram 的设计,我发现他们的负载平衡系统有这样的描述。

对 Instagram 服务器的每个请求都经过负载平衡机;我们曾经在它们之间运行 2 台 nginx 机器和 DNS Round-Robin。这种方法的缺点是 DNS 更新需要时间,以防其中一台机器需要退役。最近,我们开始使用 Amazon 的 Elastic Load Balancer,它后面有 3 个 NGINX 实例,可以换入和换出(如果它们未能通过健康检查,则会自动退出轮换)。我们还在 ELB 级别终止 SSL,这减少了 nginx 上的 CPU 负载。我们使用 Amazon 的 Route53 进行 DNS,他们最近在 AWS 控制台中添加了一个非常好的 GUI 工具。

问题是。我是对的,现在他们有一个 DNS 服务器,它使用 RR 来决定哪个 nginx 服务器发送请求。并且每个 nginx 服务器轮流将请求重新发送到集群?

第二个问题是。 nginx和负载均衡器有什么区别。为什么我们不能使用 nginx?

【问题讨论】:

    标签: nginx load-balancing


    【解决方案1】:

    对于您的第一个问题,我相信答案似乎是 Instagram 现在使用 Route53 将 DNS 映射到 Elastic Load Balancer,它做了两件事:它将流量相当均匀地路由到三个 NGINX 负载均衡器,并为所有流量。 NGINX 服务器然后充当负载平衡器,以在堆栈中更进一步的内容/应用程序服务器。使用 ELB 而不是循环 DNS 意味着他们可以添加/删除/更新附加到 ELB 的实例,而无需担心 DNS 更新或 TTL。

    至于第二个问题,您可以像使用 HAproxy 或其他服务一样轻松地使用 NGINX 来做负载均衡。我确信 Instagram 选择 NGINX 的部分吸引力在于其令人难以置信的速度,并且它是异步的和“事件驱动的”,而不是像 Apache2 那样的线程。如果设置得当,这可能意味着在重负载下减少头痛。

    【讨论】:

    • 我不明白他们为什么在 ELB 后面使用 3 个 Nginx 负载均衡器。 ELB 不是已经是负载均衡器了吗?为什么他们不干脆去掉 Nginx 实例,只在应用服务器前使用 ELB?
    • @Khang 这是一个很好的问题——当我阅读 Instagram 工程博客的引文时,他们使用了两层负载平衡器:ELB 主要用于处理 SSL 并进行一些原始平衡,然后是NGINX 层以一种他们可以更精确地管理或根据需要切换的方式进行更多的流量分配。 ELB 是一项相当不透明的服务,您无法真正调高或调低容量(尽管有一些技巧可以解决这个问题)。
    • 感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2020-12-29
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多