在业务稳定的情况下,服务负载的变更基本都在同一个账号同一个大区进行,但是所谓“拥抱变化,拥抱变更”,有时候是主动的,也有时候是被动的,如果原来的aws账号由于某些原因通知要被风控了,或者由于成本问题需要更换号商,也可能由于业务本身的发展原因,导致需要在新的区域部署类似的服务体系,那么无论是哪一种原因,给我们带来的结果都是需要整站迁移。
而整站迁移,最简单粗暴的做法就是按照当前的服务模型,到新的账号或者新的大区,按照一比一的比例手动搭建一套一模一样的体系,不过这样做会带来比较大的人力成本和操作复杂度。
当然,成熟完善的云服务平台,一定会拥有相关的能力和工具来解决这些流水线式的重复工作问题。以aws的ami(Amazon Machine Image)镜像为例,提供了相应的镜像共享和复制等相关能力,来解决站点迁移的问题。本篇文章我们来介绍下基于ami来实现服务器迁移。
在实例列表页和实例详情页都可以创建镜像。
列表页创建镜像:
详情页创建镜像:
创建完成后会在ami目录出现对应的镜像数据。
镜像共享限制不同账号同大区之间共享,在创建好的镜像详情添加目标账号的共享账户:
共享成功后,在目标账号的相同大区AMI目录,选择我的AMI并勾选与我共享,可以看到共享给当前账号的镜像。
镜像复制只能在同账号不同大区之间复制。
在AMI菜单选择待复制的镜像,然后点击复制AMI,选择目标大区进行复制。
复制成功后,在目标大区的ami目录会出现对应的ami文件。
使用s3存储和还原,需要在本地或者中间机器安装awscli命令,安装参考:https://docs.aws.amazon.com/cli/v1/userguide/install-macos.html
想要基于awscli命令转储到s3,还需要有操作权限用户的accessKey和secretKey,所以需要创建一个访问策略并附加到一个用户,然后生成访问秘钥。
创建访问策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectTagging",
"s3:AbortMultipartUpload",
"ebs:CompleteSnapshot",
"ebs:GetSnapshotBlock",
"ebs:ListChangedBlocks",
"ebs:ListSnapshotBlocks",
"ebs:PutSnapshotBlock",
"ebs:StartSnapshot",
"ec2:CreateStoreImageTask",
"ec2:DescribeStoreImageTasks",
"ec2:CreateRestoreImageTask",
"ec2:GetEbsEncryptionByDefault",
"ec2:DescribeTags",
"ec2:CreateTags"
],
"Resource": "*"
}
]
}
创建用户并附加策略:
然后给用户创建访问秘钥并下载复制。然后使用前边安装的awscli配置大区和访问秘钥信息,然后就可以使用命令转储和恢复ami镜像了。
创建镜像s3转储文件:
aws ec2 create-store-image-task \
--image-id ami-xxxxx \
--bucket ec2-img-bucket
{
"ObjectKey": "ami-xxxxx.bin"
}
执行成功后,s3对应目录产生了镜像文件。
然后将镜像从源账号或者源大区的s3下载下来,上传到目标账号或者大区的s3文件目录。
恢复镜像:
aws ec2 create-restore-image-task \
--object-key ami-xxxxx.bin \
--bucket ec2-img-bucket1 \
--name "ami-xxxxx"
{
"ImageId": "ami-xxxxx"
}
命令执行成功后,会在目标账号对应大区的ami菜单出现对应的ami镜像。
基于共享镜像和复制镜像ami启动实例操作入口不一样,但是操作流程相似,接下来简单介绍一下。
在ami目录选择对应的共享镜像,然后使用ami启动实例。
然后按照要求填入服务器名称,选择实例类型,以及磁盘等配置信息启动即可。
在目标账号和对应大区进入ami菜单,选择对应的镜像,从ami启动实例。
接着和前边一样,填入实例名称并选择服务器类型、规格就能启动了。
这样,基于ami启动的实例,拥有和生成ami的服务器拥有相同的环境、配置和其其他工具能力,只需要修改服务相关的配置就能启动服务了。
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ami-store-restore.html#store-ami
https://docs.aws.amazon.com/cli/v1/userguide/install-macos.html
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!