如何使用PHP和MySQL为Amazon EC2网站设置基本Auto Scaling

D.T*_*ate 2 amazon-s3 amazon-ec2 amazon-ebs amazon-web-services amazon-elb

我有一个完全存储在Amazon EC2微实例上的基本PHP/MySQL网站.流量即将增加一段时间,我想实现基本的自动缩放主要是为了给我更多的CPU功率,因为​​这似乎是瓶颈.所以我知道的主要限制是:

  • 保留MySQL数据库数据
  • 保留网站文件(位于/ var/www/*)

任何人都可以指出最好的方法吗?

PS因为我的服务器设置并不复杂,所以如果必须的话,我愿意重建/重新上传所有这些...我只需要正确地使用Auto Scaling.

小智 6

我遇到了类似的问题,这就是我所做的.

准备App服务器以便自动扩展(能够同时在多个实例上运行):

  • 我把我的SQL数据库(MySQL和MSSQL)移到了RDS;
  • 我修改了我的程序,因此它不会写入本地卷/驱动器,而是将所有文件放在S3存储桶中;

我测试了这个实例,以确保我的app-server完全独立于我的数据库和其他写入存储.什么时候全部设定:

  • 将我的所有更改推送到存储库;
  • 安排了一个任务,该任务将在我的服务器启动时(以及每2小时后)git pull origin master从存储库执行一次(以确保新实例上的代码始终是最新的);
  • 创建了此实例的自定义AMI;
  • 创建了一个Load Balancer;
  • 创建了一个启动配置/自动缩放器组,它使用我创建的AMI;

现在自动缩放器已全部设置:

  • 我更改了指向我站点的DNS条目,使用指向Load-Balancer端点(DNS名称)的DNS CNAME,而不是最初与我的EC2实例关联的弹性IP(我们创建AMI并进行测试) );

请注意:请勿使用分配给Load Balancer的静态IP地址,因为它们会经常更改.您确实需要设置指向Load-Balancer端点的CNAME.

我需要做的一些维护:

  • 我将存储库的副本克隆到本地副本,在那里我进行测试和更新.当我需要在生产服务器上更改任何内容时,我只需将我的更改推送到存储库,我的生产服务器每2小时选择一次.
  • 从上次创建AMI时我的代码已经有太多更新,我重新创建AMI以减少从存储库中提取所需的时间.

顺便说一下,我正在使用T1.micro实例.这就是首先使用自动缩放的全部想法.我们不希望在我们的应用程序处于闲置状态时一直在中型服务器上花费.