将文件和服务从一个 aws 实例实时复制到另一个
Copy files and services in real time from one aws instance to another
我有一个名为 primary 的 aws ec2 实例。我有另一个名为 secondary 的 ec2 实例。主实例 IP 链接到域,并包含所有托管代码和服务。我希望能够实时将所有数据(files/deamons/services 等)从主要数据复制到次要数据。
这可以通过 AWS 上的某些服务来完成吗?或者,如果我必须编写代码,我在看什么样的 code/linux 脚本等?
编辑
我希望辅助实例能够立即 运行 正在复制的系统。一旦检测到故障转移,我会将链接到域的 IP 更改为这台辅助机器。
目前系统使用数据库存储数据,但我们会将其移动到RDS实例
系统是linux机器
我查看了 Load Balancer、Auto Scaling 组和 EFS,但它们没有解决我的目的。我查看了 Elastic Bean Stalk,但对于我想要实现的目标来说,它似乎有些矫枉过正。我在这里也可能是错的。非常感谢任何帮助。
传统的高可用性设计是:
- 数据存储在Amazon RDS中,最好配置为多可用区以防出现故障
- 对象存储在 Amazon S3
- 应用程序至少有两个 Amazon EC2 实例,分布在多个可用区 — 最好使用 Auto Scaling
创建
- 一个负载均衡器在实例前面
- Amazon Route 53 域名解析到负载均衡器
这样,两个实例都在处理流量(如果您愿意,可以使用两个较小的实例)。负载均衡器执行持续的健康检查。如果实例未通过健康检查,负载均衡器将停止向其发送流量,因此用户受到的影响最小。
如果配置了Auto Scaling,它可以自动替换不健康的实例。这可以通过提供完全配置的 AMI 或通过提供在启动时安装和配置软件的用户数据脚本(或两者的组合)来完成。
执行软件更新时:
- 更新 Auto Scaling 启动配置,它定义了新实例应该如何启动(例如不同的用户数据或 AMI)
- 告诉 Auto Scaling 启动新实例,然后终止旧实例 — 这是滚动更新
- 如果您无法进行滚动更新(由于代码更改),请部署第二个 Auto Scaling 组并进行测试。如果一切正常,将负载均衡器指向新的 Auto Scaling 组,然后终止旧的(几分钟后允许连接耗尽)。
这与 Elastic Beanstalk 提供的非常相似 — 它将为您创建负载均衡器和 Auto Scaling 组,并部署代码更新。
结果是一个高度可用的、有弹性的架构,可以从故障中自动恢复。它还将迫使您使用代码存储库而不是手动更新服务器,从而提高可靠性和可重复性。
我有一个名为 primary 的 aws ec2 实例。我有另一个名为 secondary 的 ec2 实例。主实例 IP 链接到域,并包含所有托管代码和服务。我希望能够实时将所有数据(files/deamons/services 等)从主要数据复制到次要数据。
这可以通过 AWS 上的某些服务来完成吗?或者,如果我必须编写代码,我在看什么样的 code/linux 脚本等?
编辑
我希望辅助实例能够立即 运行 正在复制的系统。一旦检测到故障转移,我会将链接到域的 IP 更改为这台辅助机器。
目前系统使用数据库存储数据,但我们会将其移动到RDS实例
系统是linux机器
我查看了 Load Balancer、Auto Scaling 组和 EFS,但它们没有解决我的目的。我查看了 Elastic Bean Stalk,但对于我想要实现的目标来说,它似乎有些矫枉过正。我在这里也可能是错的。非常感谢任何帮助。
传统的高可用性设计是:
- 数据存储在Amazon RDS中,最好配置为多可用区以防出现故障
- 对象存储在 Amazon S3
- 应用程序至少有两个 Amazon EC2 实例,分布在多个可用区 — 最好使用 Auto Scaling 创建
- 一个负载均衡器在实例前面
- Amazon Route 53 域名解析到负载均衡器
这样,两个实例都在处理流量(如果您愿意,可以使用两个较小的实例)。负载均衡器执行持续的健康检查。如果实例未通过健康检查,负载均衡器将停止向其发送流量,因此用户受到的影响最小。
如果配置了Auto Scaling,它可以自动替换不健康的实例。这可以通过提供完全配置的 AMI 或通过提供在启动时安装和配置软件的用户数据脚本(或两者的组合)来完成。
执行软件更新时:
- 更新 Auto Scaling 启动配置,它定义了新实例应该如何启动(例如不同的用户数据或 AMI)
- 告诉 Auto Scaling 启动新实例,然后终止旧实例 — 这是滚动更新
- 如果您无法进行滚动更新(由于代码更改),请部署第二个 Auto Scaling 组并进行测试。如果一切正常,将负载均衡器指向新的 Auto Scaling 组,然后终止旧的(几分钟后允许连接耗尽)。
这与 Elastic Beanstalk 提供的非常相似 — 它将为您创建负载均衡器和 Auto Scaling 组,并部署代码更新。
结果是一个高度可用的、有弹性的架构,可以从故障中自动恢复。它还将迫使您使用代码存储库而不是手动更新服务器,从而提高可靠性和可重复性。