【问题标题】:The right way to create multiple instances for Load Balancer (EC2)为负载均衡器 (EC2) 创建多个实例的正确方法
【发布时间】:2013-10-06 11:59:56
【问题描述】:

我使用 EC2 安装了 Wordpress。我通过创建图像 (AMI) 然后在负载均衡器上添加 Wordpress1 和 Wordpress2 来创建负载均衡器。但是我仍然遇到数据库错误并且必须重新启动实例。如果我想制作 4 个实例作为负载均衡器,步骤是否相同?因为我在启动 AMI 时看到了“实例数”选项。默认值为 1。我不确定是否应该输入 3 或 4 以一键创建多个实例。

另外,如果我更新 Wordpress1 实例,更新是否会显示域是否会加载 Wordpress2 实例?

【问题讨论】:

标签: wordpress amazon-web-services amazon-ec2 load-balancing


【解决方案1】:

如果你想启动多个实例和一个数据库等,你应该考虑使用 AWS CloudFormation。 CloudFormation 只是一个包含环境配置的大 json 字符串,包括服务器、自动缩放、访问、向负载均衡器注册等。

更多详情请见http://aws.amazon.com/en/cloudformation/。

已经有一个用于 wordpress 的示例模板,包括数据库和自动缩放组 (example wordpress template)

但是,就像提到的 datasage 一样,您需要对 wordpress 进行调整以使其在多服务器环境中工作。

多服务器环境的“问题”是,如果您上传文件或升级 wordpress,它只会发生在一台服务器上,并且可能随时终止。此外,升级可能包含数据库结构的更改,然后变得复杂。

如果您要在云中构建某些东西,则应始终牢记您构建的每项服务,在这种情况下,应允许前端网络服务器和数据库发生故障,而不会中断您的服务。

另一点是,您应该避免手工操作,自动化是关键。 需要手动将服务器链接到负载平衡器的环境在服务器不断终止、重新启动和交换的云中不是很有用。

对于您的网络服务器,您可以使用“自动缩放组”来获得此行为。 如果您正在使用自动缩放组并且服务器被终止或被认为不健康,则新的服务器将自动启动并在被认为健康时立即向负载均衡器注册。

对于您的数据库,亚马逊为 rds 多可用区环境提供自动故障转移。

在云中应用升级可能很棘手,并且有不同的方法可以做到这一点。例如,将共享 NFS 挂载与代码库、git 部署或您已经开始的方式一起使用:为每次升级创建一个新的 AMI,然后更换服务器。有很多选择,它们都有其优点和缺点。

据我了解您的用例,目前云可能不是正确的选择。

通常在云中托管小型企业比使用单个服务器要贵得多。如果您在晚上需要 20 台服务器,而其他时间只需要 2 或 3 台服务器,您只会省钱。当然还有很多需要考虑的点,但那就太多了。

【讨论】:

  • 我在 RDS 或 CLoudFormation 之间做出了选择。如果我选择了两者中的任何一个,我是否需要终止我在 EC2 上的 wordpress 实例?
  • 好吧,RDS 是来自亚马逊的数据库服务,所以在你的情况下,你的 rds 实例是一个 Maysql 服务器。 cloudFormation 是一个配置环境的工具。你说我想要 4 个这种大小的网络服务器,用这个 ami,它们应该连接到这个负载平衡器。您应该重新考虑当前的基础架构。问你自己一些问题。如果网络服务器死了会发生什么,如果数据库发生故障会发生什么等等。如果您决定重新安排您的基础设施,您将不得不终止您现有的实例。但是在云中终止一个实例应该是日常业务
  • 我想要发生的是,如果 Wordpress 将显示数据库错误,则实例将自动重启。因为即使使用 LoadBalancer,我仍然会收到数据库错误(可能是因为免费层的带宽)。我真的不知道如何避免出现数据库错误。
  • 什么样的数据库错误?它们什么时候出现,你能给我们举个例子吗?
  • 它以白色背景显示“建立数据库连接时出错”。每次重新启动都会修复它。我认为这与带宽有关。由于我只有很少的图像,因此我目前已将图像文件托管在 Dropbox 上。
【解决方案2】:

ec2 中的自动缩放是水平缩放。这意味着随着您的基础设施扩展,实例会被添加。这与为单个实例提供更多资源的垂直扩展形成对比。

为了有效地使用它,每个实例都不能存储其他实例可能需要的数据。最常见的要求是数据库需要存在于自动缩放实例之外的自己的实例上。您可以为此使用 RDS。

Wordpress 还将文件上传、插件和主题存储在 wordpress 安装中的 wp-content 文件夹中。默认情况下,如果您上传文件,它将存储在一个实例上,但不会存储在其他任何实例上。您可以将所有内容存储在由其中一个实例共享的 NFS 卷上,或者您可以尝试这样的插件:http://wordpress.org/plugins/wp2cloud-wordpress-to-cloud/

【讨论】:

  • 如果我使用插件,是否也需要使用RDS?还是只是S3?此外,我是否需要删除 LoadBalancer 并仅使用一个实例?抱歉,我对 AWS 很陌生,一个月前我刚刚阅读了有关 EC2 并决定将它用于我们的 wordpress 网站。
猜你喜欢
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多