当业务需要跨可用区高可用时,可使用ESSD云盘实现。本文将通过手动部署或一键实验部署搭建资源,验证其在可用区故障下实现数据异步复制和业务快速恢复的能力。
计费说明
在部署实验任务时,会根据使用的阿里云资源(ECS实例、ESSD云盘等)进行计费。如果通过实验室一键部署,创建的实验任务本身不会收费。
实验室一键部署过程中使用到的阿里云资源仅支持按量付费。
部署测试环境
手动部署
-
自定义购买实例。需要购买2个不同可用区实例,主要参数示例如下:
实例类型
配置示例
容灾测试故障实例
付费类型:按量付费
地域:华东1(杭州)
可用区:可用区B
实例规格:ecs.g7.large
操作系统:Alibaba Cloud Linux3.2104 LTS 64位
系统盘:ESSD云盘 PL0 20 GiB
数据盘:ESSD云盘 PL0 20 GiB
容量测试恢复实例
付费类型:按量付费
地域:华东1(杭州)
可用区:可用区K
实例规格:ecs.g7.large
操作系统:Alibaba Cloud Linux3.2104 LTS 64位
系统盘:ESSD云盘 PL0 20 GiB
单独购买数据盘:ESSD云盘 PL0 20 GiB
云盘异步复制从盘必须与主盘完全一致,且为待挂载状态。
-
登录容灾测试故障实例。
-
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
-
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。
-
-
初始化数据盘。
-
执行以下指令创建文件系统。
sudo mkfs -t ext4 /dev/vdb -
执行以下指令创建挂载目录。
sudo mkdir /data -
执行以下指令挂载目录。
sudo mount /dev/vdb /data
-
通过实验室一键部署
实验室部署的一键搭建能力可用于快速验证和测试新特性,不适合直接应用到生产环境中。生产环境建议手动部署。
-
前往实验场景页面。
-
登录块存储EBS控制台。
首次登录EBS控制台时,请根据页面提示创建一个EBS服务关联角色。更多信息,请参见块存储EBS服务关联角色。
-
在左侧导航栏选择实验室 > 实验场景。
-
在顶部菜单栏左上角处,选择地域。
-
在EBS云盘容灾方案实践-异步复制实验场景模板中,单击一键创建实验任务。
-
-
设置实验场景的基础信息后,单击下一步。
参数
说明
实验场景
默认为EBS云盘容灾方案实践-异步复制
实验任务名称
已默认填写,可以根据需要修改。
描述(可选)
设置实验任务的描述信息。
高级配置(可选)
为实验任务设置标签和资源组信息。
-
在依赖检查界面,检查依赖情况,显示为未发现异常时,单击下一步。
-
在资源参数页面,确定或修改实验任务的参数后,单击下一步。
参数
说明
ecs实例规格
选择需要创建的ECS实例规格。示例选择
ecs.g7.large,2核8GiB实例规格。系统盘磁盘类型
仅支持cloud_essd
数据盘磁盘类型
仅支持cloud_essd
发生故障的可用区
选择容灾测试故障实例对应的可用区。示例选择
cn-hangzhou-b。故障恢复的可用区
选择容灾测试恢复实例对应的可用区。示例选择
cn-hangzhou-k。故障ECS实例密码
根据需要设置故障ECS实例密码。
重要请牢记设置的实例密码,以便后续远程连接ECS实例。
故障恢复ECS实例密码
根据需要设置故障恢复ECS实例密码。
重要请牢记设置的实例密码,以便后续远程连接ECS实例。
-
检查确认配置参数以及费用信息后,单击确认。在弹出的创建实验任务对话框中,单击确定。
创建任务成功后,系统会准备资源,并搭建好对应的实验场景,预计需要15分钟,请耐心等待。
实验任务依赖于ROS资源编排能力,一个实验任务对应于一个资源栈,最多允许创建200个实验任务。
-
当任务状态变为创建完成后,单击实验任务ID,进入任务详情页面。
-
登录容灾测试故障实例。
-
在基础信息的配置信息中,单击配置项FailureEcsLoginAddress对应的值。
-
输入设置的密码后,登录ECS实例。
若忘记密码,可返回任务详情页面,查看配置项FailureEcsInstancePassword对应的值获取。
-
初始化数据盘。
-
执行以下指令创建文件系统。
sudo mkfs -t ext4 /dev/vdb -
执行以下指令创建挂载目录。
sudo mkdir /data -
执行以下指令挂载目录。
sudo mount /dev/vdb /data
-
-
验证与清理
验证方案
-
在容灾测试故障实例中部署模拟业务。
-
部署微服务。
-
执行以下命令,安装服务依赖。
sudo pip3 install Flask -
执行以下命令,新建并编辑文件app.py。
sudo vim /data/app.py -
按
i键进入编辑模式,修改为以下内容后按Esc键退出编辑模式,输入:wq后按下回车键,保存并退出。代码为一个持续写入时间戳的Python应用。from flask import Flask import threading import time import os from datetime import datetime app = Flask(__name__) # 路径到文件 log_file_path = os.path.expanduser('/data/time.log') # 创建一个后台线程来写入当前时间 def log_time(): while True: current_time = datetime.now() # 获取当前的日期和时间 current_time_str = current_time.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] # 格式化为带毫秒的时间字符串 with open(log_file_path, 'a') as f: f.write(f"{current_time_str} \n") # 写入时间 time.sleep(0.01) @app.route('/') def hello_world(): return 'Hello, World!' @app.route('/read') def read_latest_line(): try: with open(log_file_path, 'r') as f: lines = f.readlines() # 返回最近的一行 return lines[-1] if lines else "Log file is empty." except FileNotFoundError: return "Log file not found." if __name__ == '__main__': # 启动写入时间的后台线程 threading.Thread(target=log_time, daemon=True).start() # 启动Flask应用 app.run(port=80, host='0.0.0.0') -
执行以下命令,后台运行Python文件,该应用会以10ms为间隔记录时间至/data/time.log中。
sudo nohup python /data/app.py &
-
-
-
创建云盘异步复制
若通过实验室部署测试环境,无需执行此步骤,将自动创建一个名为容灾测试的云盘异步复制对。
-
登录块存储EBS控制台。在左侧导航栏,选择。
-
选择生产站点,然后单击创建云盘异步复制。并依照界面提示完成创建。
参数
说明
地域和可用区
容灾测试故障云盘所属的地域和可用区。
云盘
选择容灾测试故障云盘。
服务关联角色
默认已创建。
灾备地域和可用区
容灾测试恢复云盘所属的地域和可用区。
目标云盘
选择容灾测试恢复云盘。
风险告知&合规承诺
阅读并勾选我已知晓相关风险,并且我同意以下合规承诺我已知晓该风险。
开启数据复制时间控制
保持默认关闭即可。
-
-
启动异步复制。
-
单击异步复制列表中目标复制对操作列的启动。
-
在启动复制对对话框中,启动异步复制。
-
单击创建快照:为目标云盘先创建快照,做好数据备份。
重要启动异步复制功能后,目标云盘原有数据将会被覆盖。因此建议在启动前为目标云盘创建快照,做好数据备份,以避免数据丢失。如果已提前创建了快照,则无需再次创建。
-
单击确定,系统将自动持续复制数据。
异步复制必须处于已创建、同步中、正常或已停止状态。
当异步复制状态变更为正常时,表示云盘异步复制功能已成功启动并完成了数据的初始同步,后续系统将按照固定的时间周期(15分钟),自动将主盘上的数据异步复制到从盘,实现云盘数据的异步容灾。
-
-
-
记录最近恢复点。
-
单击目标异步复制对进入复制对详情页。
-
切换至灾备站点后,记录最近恢复点,后续模拟可用区故障时需要对比确定恢复情况。
示例中,最近恢复点为2025-12-31 14:04:34。
-
-
模拟可用区故障。
通过停止容灾测试故障实例,模拟实例被误释放、机房断电或所在可用区故障等场景。
-
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
-
单击容灾测试故障实例ID进入实例详情页,单击全部操作展开所有操作面板,然后搜索并单击停止。
-
设置停止方式和模式后,单击确定。
设置
说明
停止方式
停止
强制停止可能丢失实例操作系统中未写入磁盘的数据。
停止模式
普通停机模式
-
-
故障切换。
-
返回目标异步复制对详情页,单击右上角故障切换。
-
阅读注意事项,并单击确定。
开启故障切换功能后,异步复制的状态会变更为故障切换完成。
-
-
在其他可用区恢复业务。
-
挂载容灾测试恢复云盘至容灾测试恢复实例上。
-
访问ECS控制台-块存储-云盘。在页面左侧顶部,选择目标资源所在的资源组和地域。
-
在目标ESSD云盘的操作列中,单击挂载。
-
目标实例选择容灾测试恢复实例,然后按照界面提示完成挂载操作。
-
-
远程连接容灾测试恢复实例。
-
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
-
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。
-
-
分别执行以下两条命令,创建并挂载文件系统。
sudo mkdir /data sudo mount /dev/vdb /data -
验证数据是否丢失。
查看日志记录,最新为2025-12-31 14:04:33.143,与记录的灾备站点的最近恢复点一致。
sudo tail -f /data/time.log[root@xxx ~]# tail -f /data/time.log 2025-12-31 14:04:33.062 2025-12-31 14:04:33.072 2025-12-31 14:04:33.083 2025-12-31 14:04:33.093 2025-12-31 14:04:33.103 2025-12-31 14:04:33.113 2025-12-31 14:04:33.123 2025-12-31 14:04:33.133 2025-12-31 14:04:33.143
-