处理负载均衡器

时间:2021-01-25 16:41:12

标签: amazon-web-services load-balancing amazon-elb aws-load-balancer aws-application-load-balancer

我有一个网站,它有主域和子域(我有不同国家的不同子域)例如:mysite.com(是主域)、country-a.m​​ysite.com(对于国家 A)、country- b.mysite.com(对于国家 B) 注意:每个国家都有独立的用户/数据并与单独的数据库链接。

现在我在一个 EC2 实例中管理它们。我在每个国家/地区都有子文件夹,并使用 Route53 将它们指向子域。而且它们运行良好。

但现在我希望它们可扩展,因为我期待更多的流量。这种情况的最佳做法是什么?

是否可以获取另一个 EC2 实例并克隆所有子文件夹并引入负载均衡器来处理这两个实例之间的流量?我的意思是,当来自 A 国和 B 国的用户访问负载均衡器时,负载均衡器会正确处理并将用户重定向到这两个实例中的正确子文件夹并管理流量?

如果是,我应该如何配置Route53?

负载平衡器如何处理用户会话?我的意思是,假设用户第一次点击负载均衡器时将用户定向到第一个实例,而当另一个请求来自同一用户时,则点击第二个实例。如果会话是在第一个实例上创建的,而此会话数据将在第二个实例中可用?

我还想知道如何在这些情况下管理源代码。我的意思是,如果我想更新代码,我是否必须分别在这两个实例中更新?或者有没有一种简单的方法可以将文件上传到其中一个实例,然后它会克隆到其他实例?

顺便说一句,我的网站使用 Laravel 框架和 Postgres 构建。

我是负载均衡器的新手,请帮助我找到完美的解决方案。

1 个答案:

答案 0 :(得分:1)

<块引用>

如果是,我应该如何配置Route53?

在 R53 中您不需要做任何事情。它的负载均衡器 (LB) 在​​您的实例之间分配流量,而不是 R53。 R53 只会将流量定向到 LB,没有别的。

<块引用>

负载平衡器如何处理用户会话?

它不处理它。您可以在目标组 (TG) 中启用 sticky sessions,以便 LB 尝试“维护状态信息,以便为客户提供持续体验”。

但是,更好的解决方案是让您的实例无状态。这意味着您的应用程序的所有会话/状态信息都保存在实例之外,例如在 DynamoDB、ElastiCache 或 S3 中。通过这种方式,您可以使您的应用程序具有可扩展性,并消除跟踪存储在各个实例上的会话数据的问题。

<块引用>

我还想知道如何在这些情况下管理源代码。我的意思是,如果我想更新代码,我必须在这两个实例中分别更新吗?

是的。您的实例应该是相同的。通常使用 CodeDeploy 来确保实例数量的平滑和可重复更新。