将文件和服务从一个aws实例实时复制到另一个aws实例

时间:2018-04-17 16:42:50

标签: amazon-ec2 backup

我有一个名为主要的aws ec2实例。我有另一个名为 secondary 的ec2实例。主实例IP链接到域,并包含所有托管代码和服务。我希望能够实时将所有数据(文件/ deamons /服务等)从主要数据复制到次要数据。

这可以通过AWS上的某些服务完成吗?或者如果我必须编写代码,我在看什么样的代码/ linux脚本等?

编辑

  1. 我希望辅助实例能够立即运行正在复制的系统。一旦检测到故障转移,我就会将链接到域的IP更改为此辅助计算机。

  2. 目前系统正在使用数据库存储数据,但我们会将其移至RDS实例

  3. 系统是linux机器

  4. 我查看了Load Balancer,Auto Scaling组和EFS,但他们没有解决我的目的。我看着Elastic Bean Stalk,但对于我想要实现的目标来说,这似乎有些过分。我也可能在这里错了。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

传统的高可用性设计是:

  • 存储在 Amazon RDS 中的数据,最好在发生故障时配置为多可用区
  • 存储在 Amazon S3
  • 中的对象
  • 应用程序至少有两个 Amazon EC2实例,分布在多个可用区 - 最好使用Auto Scaling创建
  • 实例前面的负载均衡器
  • Amazon Route 53 域名解析为Load Balancer

High-Availability architecture

这样,两个实例都在为流量提供服务(如果您愿意,可以使用两个较小的实例)。 Load Balancer执行连续的运行状况检查。如果实例未通过运行状况检查,则负载均衡器会停止向其发送流量,因此用户受到的影响最小。

如果配置了Auto Scaling,它可以自动替换不健康的实例。这可以通过提供完全配置的AMI,或通过提供在启动时安装和配置软件的用户数据脚本(或两者的组合)来完成。

执行软件更新时:

  • 更新Auto Scaling 启动配置,它定义了新实例的启动方式(例如,不同的用户数据或AMI)
  • 告诉Auto Scaling启动新实例,然后终止旧实例 - 这是滚动更新
  • 如果您无法进行滚动更新(由于代码更改),请部署第二个Auto Scaling组并对其进行测试。如果一切正常,请将Load Balancer指向新的Auto Scaling组,然后终止旧的(在几分钟后允许连接耗尽)。

这与Elastic Beanstalk提供的非常相似 - 它将为您创建Load Balancer和Auto Scaling组,并部署代码更新。

结果是一个高度可用的弹性架构,可以自动从故障中恢复。它还会强制您使用代码存储库而不是手动更新服务器,从而提高可靠性和可重复性。

请参阅:AWS Design for Web Application Hosting