【问题标题】:Amazon AWS how to configure servers to scale?亚马逊AWS如何配置服务器来扩展?
【发布时间】:2015-09-04 03:52:51
【问题描述】:

我对亚马逊相当陌生,而不是 Linux、路由、Web 服务/托管。所以请耐心等待我和我的新手 AWS 问题。

我工作的公司有一个团队正在构建一个他们不想在内部托管的应用程序,并且正在向 AWS 推送。我已经在 AWS 中使用并配置了几个托管服务器,但没有这么复杂。我了解 VPC 和 EC2 并具有 S3 的工作知识。

我在网上搜索过,但没有详细说明缩放部分的工作原理,而且我不是在谈论自动缩放。我很想知道实际的服务器配置是如何工作的。

例如,我们有一个 jar 文件和属性文件,需要将它们部署到服务器才能运行站点。问题是,我应该把这些文件放在哪里,这样如果我想扩展到另一个更大或更小的资源实例,它会使用那些相同的文件?我的研究似乎指向此设置的“EBS”和 S3,但我并不清楚如何......我想问题是,如何配置实例以读取站点文件?

我的问题是假设在任何给定点我都有一个实例正在运行并读取站点文件,如果我想使用更大的实例或更小的实例,我会关闭当前实例并启动一个新实例,当然,同时总是从同一个站点文件中读取..

我的方案可能不是创建可扩展架构的正确方法,所以如果您有更好的建议,我会全力以赴。这就是我理解 AWS 工作的可扩展性方面的方式。请记住,我使用的是向上或向下扩展的方法,而不是向外扩展,向外扩展意味着运行多个实例以平衡实例之间的计算并增加实例运行的成本。

将不胜感激!

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2


    【解决方案1】:

    只要您为服务器选择 EBS 驱动器,您就可以停止服务器、更改大小并重新启动它,而不会丢失驱动器上的任何数据。这将允许您向单个服务器添加更多 CPU/RAM。

    如果您想要一个更具可扩展性的架构,您应该将您的系统设计为在负载平衡器后面的多台服务器上运行良好。然后,您可以使用 Autoscaling Groups 或 Elastic Beanstalk 根据当前系统负载自动向池中添加和删除服务器。

    【讨论】:

    • 我正在尝试使用 Centos 7 从 aws 市场构建多个不同的可扩展服务器。第一个问题,我不知道这是否是一个问题,但 aws 图像不会让我快速启动 centos 7 图像的多个不同实例......二)如果我使用负载均衡器,不会这意味着我需要运行多个实例才能获得平衡,以便在两者之间进行平衡?三)当您说添加或删除服务器时,这是否意味着关闭和启动?我问,因为据我了解,如果我创建了实例但未运行,则不计费。
    • 您的快速启动问题听起来像是您可以在此站点上创建另一个问题的问题。负载均衡器不会强迫您拥有多个,您可以使用负载均衡器缩小到单个实例,但显然重点是能够扩展到多个服务器以将负载分布在它们之间。当我说添加/删除服务器时,我的意思是从 AMI 创建和删除新的服务器实例,尽管您可能有多个服务器要关闭和启动。不过,您仍需为关闭实例的存储使用付费。
    • 我发现了第一个问题,这不是问题,是我缺乏了解。现在,我创建了一个负载均衡器,但它并没有像我想象的那样工作。我删除了 4 个实例,我将解释我认为我正在构建的场景。我创建了 4 个实例,在资源中比前一个多一个,并且我删除了每个创建的所有卷。我还创建了一个实际卷,用于存储站点数据,当我需要在服务器之间“向上或向下”扩展时,该卷将被连接和分离。
    • 我创建了负载均衡器,我试图弄清楚它是如何工作的。它要求我向它添加一个服务器,所以我想,好的,它将创建我需要的所有实例,我需要做的就是将它指向正确的卷,然后平衡器将完成其余的工作......但是你的声明现在让我解释说负载均衡器要求我提供一个实例以从我自己物理创建的实例向上扩展。其中我不确定负载均衡器如何知道如何附加我仅为站点文件创建的卷。这就是为什么我删除了我最初创建的所有实例
    • EBS 卷一次不能被多个服务器使用。您可以为此目的使用 Elastic File System,但它目前处于测试阶段。负载均衡器不会自行创建实例或扩大/缩小规模。您将定义一个 Autoscaling Group,或使用 Elastic Beanstalk 作为扩展部分。负载均衡器只是在添加到其中的实例之间分配您的传入流量。您需要查看 AMI(亚马逊系统映像)的工作原理。我认为您应该在使用 AMI 时尝试使用 EBS 卷。
    【解决方案2】:

    AWS OpsWorks 将允许您使用 Chef recipes(用 Ruby 编写)在您的需求发生变化时将代码和资源部署到您的服务器。

    • 创建“堆栈”
    • 在您的“堆栈”中配置应用程序
    • 将实例放入您的应用程序 (EC2)
    • 部署

    另一种方法是使用 ECS (Elastic Container Service) 和 Docker 将您的 jar 文件放入适当大小的容器中。

    • 创建集群
    • 添加任务定义
    • 配置 Auto Scaling 组(实例类型、所需大小等)
    • 启动

    这两个选项都可以使用 Auto Scaling 组(在 EC2 中)进行配置,以根据需要快速调整资源量并以一致和自动化的方式部署您的代码。

    这就是它的要点,除此之外的任何内容都将是一个完整的教程,它将在很大程度上基于您的架构。我建议阅读一些指南,查阅文档并尝试一下。

    对于奖励积分,请查看 CloudFormation,这将允许您在代码中配置您的 AWS 资源/配置,因此您无需摆弄 UI 来进行调整或(重新)部署。

    【讨论】:

    • 我认为我正在寻找更详细的方法,尽管这是很好的信息。我正在尝试从 EC2 开始,以免使用其他 AWS 工具使我还不知道的事情变得过于复杂。如果你能给我更多关于配置的细节,那就太好了,使用 EC2...谢谢,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 2016-01-06
    • 2013-07-12
    • 2015-02-21
    • 2015-05-15
    • 1970-01-01
    相关资源
    最近更新 更多