【问题标题】:Scalable server hosting可扩展的服务器托管
【发布时间】:2019-04-10 21:41:18
【问题描述】:

我现在有一个简单的服务器(一些 xeon cpu 托管在某处),运行 apache/php/mysql(没有 docker,但它有可能),我期待一些繁忙的流量,我需要我的服务器来处理它。

目前服务器一次可以处理大约 100 个用户,我可能需要它来处理几千个用户。

将我的应用迁移到一些可扩展的主机上最简单、最快速的解决方案是什么?

我没有使用 AWS 或类似的经验。

我正在阅读有关 AWS 和类似内容的信息,但我很困惑,不知道应该选择什么。

【问题讨论】:

    标签: amazon-web-services server cloud web-hosting


    【解决方案1】:

    基本选择是:

    • 垂直缩放使用更大的计算机。但是,您最终会遇到限制,并且您将遇到单点故障(一台服务器!),
    • 横向扩展通过添加更多服务器并在服务器之间分散流量。这具有处理故障的额外优势,因为如果一台服务器出现故障,其他服务器可以继续提供流量。

    在云中进行水平扩展的一个好处是能够根据工作负载添加/删除服务器。当事情忙时,添加更多服务器。当事情平静下来时,移除服务器。这还可以让您在安静时降低成本(当您拥有自己的设备时,这在本地是不可能的)。

    该架构涉及在负载均衡器后面放置多个服务器:

    • 流量进入 负载平衡器
    • 负载均衡器将请求发送到服务器(通常基于对每个服务器“忙碌”程度的某种衡量)
    • 服务器处理请求并发送响应回负载均衡器
    • 负载均衡器将响应发送给原始请求者

    AWS 有多个可用的负载均衡器,它们会因需要而异。如果您只是将流量发送到安装在所有服务器上的单个应用程序,则 网络负载均衡器 就足够了。对于应用程序的不同部分位于不同服务器上的情况(例如移动界面与 Web 界面),您可以使用 Application Load Balancer

    AWS 还通过提供 Amazon EC2 Auto Scaling 服务来协助横向扩展。这允许您指定要启动的服务器的详细信息(磁盘映像、实例类型、网络设置),然后 Auto Scaling 可以在需要时自动启动新服务器并终止那些不是必需的。 (请注意,它们启动和终止,而不是启动和停止。)

    您可以进一步定义扩展策略,通过测量 CPU 利用率等指标告诉 Auto Scaling何时启动/终止实例。这样,服务器的数量可以大致匹配流量。

    应该提到,如果您有一个数据库,它应该单独存储到应用程序服务器中,这样它就不会被终止。您可以使用 Amazon Relational Database Service (RDS) 为您运行数据库,也可以在单独的 Amazon EC2 实例上运行数据库。

    如果您想了解有关上述任何技术的更多信息,YouTube 上的大量讲座或博客文章可以解释和展示它们的用途。

    【讨论】:

      最近更新 更多