gpt4 book ai didi

mysql - 我需要哪种 MySQL 配置来实现 Web 应用程序的简单负载平衡?

转载 作者:行者123 更新时间:2023-11-29 11:26:07 25 4
gpt4 key购买 nike

我们正在构建一个小型广告平台,将在多个客户网站上使用。我们希望设置多个服务器和负载平衡(使用 Amazon Elastic Load Balancer)以帮助防止停机。

我们的基本功能包括渲染广告 HTML、记录点击信息(IP、用户代理、位置等)、以点击 ID 作为跟踪变量(?click_id=XX)重定向流量以及基本数据分析客户。两次不同的点击不会产生相同的点击 ID,这一点非常重要。

我了解负载平衡的基础知识,但我不确定如何设置 MySQL 服务器。

似乎有很多选择:主-主、主-从、集群、分片。

我正在尝试找出最适合我们的方法。我们正在寻找的最重要的方面是:

  1. 正常运行时间 - 如果一台服务器出现故障,另一台服务器会自动恢复运行。
  2. 负载共享 - 分散 CPU 和 RAM 使用量。

从我读到的内容来看,听起来我最好的选择可能是一个拥有 2 个或更多奴隶的主人。主服务器不负责任何 HTTP 流量,该流量仅发送至从服务器。因此,主服务器仅负责数据库写入。

这会减慢我们的点击脚本吗?由于我们必须在重定向之前先插入以获取点击 ID,因此从站必须联系主站,然后返回数据。现在我们的点击脚本快如闪电,我希望保持这种状态。

还有,如果Master挂掉了怎么办?在主站重新上线之前,从站是否能够充当主站?

最佳答案

如果您使用 Amazon 的托管数据库服务,RDS ,这将减轻管理数据库的很多痛苦。

您可以选择multi-AZ option在您的主数据库实例上,以在另一个可用区中提供冗余、同步复制的从属数据库。如果实例或整个可用区发生故障,Amazon 会自动将指向主实例的 A 记录翻转到备份可用区中的从实例。在普通 MySQL 或 MariaDB 上,此过程可能需要几分钟,在此期间您的应用程序将无法写入数据库。

您还可以配置最多 5 个 read replicas对于将从主服务器异步复制的 MySQL 或 MariaDB 实例。然后您可以使用 Elastic Load Balancer (或其他 TCP load balancer,例如 HAProxy 或 MariaDB 的 MaxScale,以获得更多 MySQL 感知选项)在只读副本之间分配流量。默认情况下,每个只读副本都将拥有主数据集的完整副本,但如果您愿意,可以尝试手动将数据分片。不过,您的应用程序或负载均衡器中必须有一些更复杂的逻辑才能确定在哪里可以找到数据集的相关分片。

您可以选择将只读副本提升为独立主服务器,这将中断到主服务器的复制,并为您提供一个独立集群,然后可以根据您之前的设置重新配置该集群(或者如果您愿意,只需使用不同的设置)您在升级时拥有的数据集)。不过,这听起来不像是您需要在这里做的事情。

另一个选择是使用 Amazon 自己的 MySQL,Aurora ,在 RDS 上。 Aurora 与 MySQL 完全兼容,因此您可以使用应用程序已使用的任何 MySQL 驱动程序与其通信。 Aurora 将允许最多 15 个只读副本和完全透明的负载平衡。您只需为应用程序提供 Aurora 集群终端节点,然后任何写入操作都将在主服务器上进行,任何读取操作都将在集群中拥有的多个只读副本之间进行平衡。在我有限的测试中,Aurora 实例之间的故障转移也几乎是即时的,因此可以最大限度地减少发生故障时的停机时间。

关于mysql - 我需要哪种 MySQL 配置来实现 Web 应用程序的简单负载平衡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38169207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com