1. 迁移前的评估与规划
(1)确认业务目标与RTO/RPO:明确允许的停机时间与数据丢失阈值;(2)清单化资产:列出EC2、EBS、AMI、RDS、Aurora、S3、EFS、ECR、Lambda、VPC、ELB、Route53、IAM及第三方依赖;(3)合规与成本评估:检查数据主权、KMS密钥、合规要求及预算;(4)选择迁移模型:冷迁移(停机后迁移)、热迁移(双写或阶段切换)或混合。
2. 目标环境准备(VPC 与网络)
(1)在ap-southeast-1创建VPC与子网,按可用区分布AZ:ap-southeast-1a/1b/1c;(2)规划CIDR避免与源网络冲突;(3)配置Route Tables、Internet Gateway、NAT Gateway;(4)创建Security Groups/NACL并与源环境安全组策略对齐;(5)准备VPC Endpoints(S3、DynamoDB等)以优化访问。
3. 身份与权限(IAM、KMS、Secrets)
(1)在目标区域或组织内创建相同权限的IAM Role/Policy或使用跨账户角色;(2)KMS:如果使用CMK,考虑多区域复制或在目标区创建新的CMK并更新资源加密配置;(3)Secrets Manager/SSM参数:导出并在目标区安全导入(注意密钥和访问策略)。
4. 镜像与块存储迁移(AMI / EBS)
(1)将AMI跨区域复制:aws ec2 copy-image --source-region us-east-1 --source-image-id ami-xxxx --region ap-southeast-1 --name "app-ami-sg";(2)对裸EBS快照做跨区复制:aws ec2 copy-snapshot --source-region us-east-1 --source-snapshot-id snap-xxxx --region ap-southeast-1;(3)复制完成后在目标区由AMI/快照恢复为EBS卷并启动EC2实例;(4)注意实例类型、ENI、弹性IP需重新绑定。
5. 数据库迁移(RDS / Aurora / DynamoDB)
(1)RDS:使用snapshot跨区复制或启用跨区Read Replica后切换为主库;命令示例:aws rds copy-db-snapshot --source-region us-east-1 --source-db-snapshot-identifier rds:db-xxxxxxxx --target-db-snapshot-identifier rds-sg-snap --region ap-southeast-1;(2)使用AWS DMS做在线迁移以满足低RTO/RPO;(3)DynamoDB:启用全局表或使用Export/Import;(4)验证字符集、扩展参数和参数组一致性。
6. 对象与容器镜像(S3、ECR、EFS)
(1)S3:若是长期复制,配置S3跨区域复制(CRR/ReplicateDelete等);临时迁移可用aws s3 sync s3://src-bucket s3://dst-bucket --source-region us-east-1 --region ap-southeast-1;(2)ECR:启用跨区域复制或手动docker pull/push:docker pull repo:tag && docker tag repo:tag ap-southeast-1.amazonaws.com/repo:tag && docker push ...;(3)EFS:使用数据迁移工具或NFS客户端复制数据并更新挂载目标。
7. 应用与配置迁移(Lambda、ECS、EKS、配置管理)
(1)Lambda:导出函数代码/层并在目标区重新部署,若使用Lambda@Edge/CloudFront注意区域限制;(2)ECS/EKS:更新任务定义/Helm Chart并部署到目标集群;EKS需准备节点组、IAM Role、存储类;(3)更新CI/CD管道(CodePipeline/CodeBuild/GitHub Actions)使其支持目标区;(4)保持配置一致:环境变量、连接字符串、外部服务地址。
8. DNS、负载均衡与切换策略
(1)准备目标区的ELB/ALB/NGINX并验证健康检查;(2)使用Route53实现DNS切换:先降低TTL(建议提前24-48小时设置),切换时提交ChangeRecordSet并监控;(3)若需零停机,使用蓝绿或金丝雀发布:在Route53上做权重分流逐步切换;(4)CloudFront:如使用,加速器可以继续指向新的Origin并无缝切换。
9. 测试、验证与回滚计划
(1)功能测试:接口、登录、写入、读取一致性;(2)性能测试:压测网络延迟、IOPS、数据库吞吐;(3)安全测试:端口、加密、访问控制;(4)回滚:保留源环境与快照、设置回滚步骤(DNS回退、实例重启),并演练一次回滚流程。
10. 常见问题:网络连通性(问)与解决(答)
问:迁移后应用无法与目标数据库连通,常见原因是什么?
答:常见原因包括Security Group未放通目标端口、NACL阻断、子网无路由到NAT/IGW、VPC内DNS无法解析或RDS参数组限制。排查步骤:1)在EC2上telnet/db client测试端口;2)检查SG与NACL规则;3)使用VPC Reachability Analyzer或ping/trace测试路径;4)查看RDS的公私有访问与参数设置。
11. 常见问题:权限与快照复制失败(问)与解决(答)
问:跨区复制AMI/快照时报权限错误或复制失败,怎么办?
答:确认执行复制的IAM主体有ec2:CopySnapshot/ec2:CopyImage权限;若跨账户复制需设置快照共享与适当KMS密钥策略(若加密快照,必须为目标区的CMK或允许跨区域使用);使用aws cli查看详细错误并调整IAM/KMS策略后重试。
12. 常见问题:DNS切换与会话保持(问)与解决(答)
问:DNS切换后用户偶尔访问到旧环境导致数据不一致,如何避免?
答:减少TTL提前生效、使用带权重的Route53切流逐步切换、在应用层实现会话同步(共享会话存储或粘性会话);若无法共享,采用应用层双写或在迁移窗口暂时禁止写入直到所有流量切换完成。
来源:迁移到新加坡aws机房的步骤与常见问题解决策略