前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AMI:轻松搞定服务器迁移

AMI:轻松搞定服务器迁移

作者头像
叔牙
发布2024-05-22 11:30:38
990
发布2024-05-22 11:30:38
举报

一、背景概述

在业务稳定的情况下,服务负载的变更基本都在同一个账号同一个大区进行,但是所谓“拥抱变化,拥抱变更”,有时候是主动的,也有时候是被动的,如果原来的aws账号由于某些原因通知要被风控了,或者由于成本问题需要更换号商,也可能由于业务本身的发展原因,导致需要在新的区域部署类似的服务体系,那么无论是哪一种原因,给我们带来的结果都是需要整站迁移。

而整站迁移,最简单粗暴的做法就是按照当前的服务模型,到新的账号或者新的大区,按照一比一的比例手动搭建一套一模一样的体系,不过这样做会带来比较大的人力成本和操作复杂度。

  • 人力成本,频繁的去操作同样的事情
  • 复杂度,每台机器都要安装最基本的运行环境
  • 安全与内网通信,需要重新设置安全策略,vpc内资源之间内网互通
  • 工具服务重新打包配置,一些工具服务没有可执行二进制文件,需要重新去git站点拉取源码编译部署等

当然,成熟完善的云服务平台,一定会拥有相关的能力和工具来解决这些流水线式的重复工作问题。以aws的ami(Amazon Machine Image)镜像为例,提供了相应的镜像共享和复制等相关能力,来解决站点迁移的问题。本篇文章我们来介绍下基于ami来实现服务器迁移。

二、创建镜像

在实例列表页和实例详情页都可以创建镜像。

列表页创建镜像:

详情页创建镜像:

创建完成后会在ami目录出现对应的镜像数据。

三、镜像迁移

1.镜像共享

镜像共享限制不同账号同大区之间共享,在创建好的镜像详情添加目标账号的共享账户:

共享成功后,在目标账号的相同大区AMI目录,选择我的AMI并勾选与我共享,可以看到共享给当前账号的镜像。

2.镜像复制

镜像复制只能在同账号不同大区之间复制。

在AMI菜单选择待复制的镜像,然后点击复制AMI,选择目标大区进行复制。

复制成功后,在目标大区的ami目录会出现对应的ami文件。

3.基于s3存储与还原

使用s3存储和还原,需要在本地或者中间机器安装awscli命令,安装参考:https://docs.aws.amazon.com/cli/v1/userguide/install-macos.html

想要基于awscli命令转储到s3,还需要有操作权限用户的accessKey和secretKey,所以需要创建一个访问策略并附加到一个用户,然后生成访问秘钥。

创建访问策略:

代码语言:javascript
复制
{
    "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转储文件:

代码语言:javascript
复制
aws ec2 create-store-image-task \
    --image-id ami-xxxxx \
    --bucket ec2-img-bucket
{
    "ObjectKey": "ami-xxxxx.bin"
}

执行成功后,s3对应目录产生了镜像文件。

然后将镜像从源账号或者源大区的s3下载下来,上传到目标账号或者大区的s3文件目录。

恢复镜像:

代码语言:javascript
复制
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启动实例操作入口不一样,但是操作流程相似,接下来简单介绍一下。

1.基于共享ami启动

在ami目录选择对应的共享镜像,然后使用ami启动实例。

然后按照要求填入服务器名称,选择实例类型,以及磁盘等配置信息启动即可。

2.基于复制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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PersistentCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景概述
  • 二、创建镜像
  • 三、镜像迁移
    • 1.镜像共享
      • 2.镜像复制
        • 3.基于s3存储与还原
        • 四、基于AMI启动实例
          • 1.基于共享ami启动
            • 2.基于复制ami启动
            • 参考
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档