gpt4 book ai didi

php - Amazon 横向扩展 Web 服务器的数据库服务器

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

我们有一个基于 PHP 的 Web 服务器,托管在 Amazon EC2 上的 AMI 上。此 Web 服务器使用在另一个 RDS Amazon 实例上运行的 MySQL 服务器。两种设置都完美运行。我们正在尝试通过将它们放在负载均衡器后面来扩展设置,并在负载上下波动时启动新实例。

我们能够启动新的 Web 服务器实例。所有这些网络服务器都连接到一个数据库,因此一切似乎都运行良好。然而在此过程中数据库服务器成为瓶颈。我们希望数据库服务器能够横向扩展。 Web 服务器和数据库服务器要成对扩展,显然数据库服务器要同步。目前尚不清楚如何实现这一点,任何帮助、引用或教程都会有很大帮助。

我在互联网上搜索并阅读了亚马逊文档,但全都是空白。

坦白说,我也不知道这是一个 SO 相关问题还是一个 SU 或 ServerFault 站点问题。如有其他情况,敬请谅解。

最佳答案

横向扩展数据库服务器比横向扩展 Web 服务器复杂得多。您将需要创建只读副本实例,RDS 使这变得相当容易。只读副本与主数据库实例保持同步。然而,顾名思义,只读副本是只读数据库实例。任何插入/更新/删除命令都需要返回到主数据库服务器。

这意味着您不能使用简单的负载平衡来分配负载。负载均衡器需要检查每个 SQL 请求并了解哪些命令可以发送到哪些服务器。亚马逊的弹性负载均衡器无法做到这一点。如果您搜索“MySQL 负载均衡器”,您可以找到大量关于设置 HAProxy 等软件以在 MySQL 实例集群上智能分配负载的文章和教程。

或者,您可以对应用程序进行编码,以了解不同的可用数据库服务器,并向主服务器发送更新,同时向只读副本服务器之一发送查询。在您的场景中,我可以看到这样的情况:每次启动 Web 服务器时,您还会启动该 Web 服务器用于查询的 MySQL 只读副本。

<小时/>

顺便说一句,由于您在 Amazon RDS 上使用 MySQL,因此您应该真正了解一下 Amazon 的 Aurora 数据库。它与 MySQL 兼容,因此您无需更改一行代码,并且它的性能通常比 MySQL 更好。如果您切换到 Aurora,您可能会发现您的数据库不再是瓶颈。

亚马逊也recently added load balancing支持奥罗拉。借助此新功能,您仍然拥有用于更新的主数据库,但现在您只需跟踪单个只读副本端点,该端点将在所有只读副本实例之间分配查询负载。

关于php - Amazon 横向扩展 Web 服务器的数据库服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39805549/

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