端到端跨云服务器解决方案介绍

  对于众多企业来说,云的优势越来越明显,比如通过从不同的地域位置运行工作负载来拓展灾难恢复(DR)选择,或者是希望增加工作负载,又或者出于投入成本方面的考虑,甚至是传统供应商的凌然不愉快的租赁和繁琐升级。这些都可以是你向云看齐的原因,不过,在具体的实施过程中,一个较为重要的问题就是数据的迁移。

  互操作性是云计算中的一个重要话题,特别是涉及混合云计算时。互操作性中关键部分是应用程序迁移,或将应用程序在私有云与公共云之间或公共云之间迁移的能力。

  虽然市场上有着数以百计的云计算解决方案供应商,但是作为用户的我们应当如何雾里看花找到真正满足需求的云计算产品与供应商?对云计算供应商进行分类对于更好地了解诸如应用程序迁移、自动化与监控等关键领域的领先厂商似乎是并无裨益的。

  云计算应用程序迁移工具对于创建混合云计算是不可或缺的。自动化工具可便于实现配置、减少错误和降低成本,且其效果也非常明显。虽然云计算监控工具可确保性能和安全性,但是这类工具并没有引起足够的重视。下面我们用自己的方式来解决一些行业问题。

  下面开始详细介绍操作步骤:

1. 环境

阿里云:
  ubuntu18.04 64位
  oss 和 虚拟机为同一 region

2. 自定义镜像并导出到oss
  导出自定义镜像到oss (导出功能需要申请)
  提前创建好 oss bucket

3. 下载解压并上传至Amazon Web Service S3
  ●找一台 EC2 作为中间机
  ●下载镜像压缩文件并解压(可以用阿里云 ossutil )
  ●安装wget http://gosspublic.alicdn.com/ossutil/1.6.7/ossutil64
  ●修改文件执行权限chmod 755 ossutil64
  ●生成配置文件
  执行./ossutil64 config
  请输入endpoint:http://oss-cn-shenzhen.aliyuncs.com 请输入accessKeyID:yourAccessKeyID 请输入accessKeySecret:yourAccessKeySecret 请输入stsToken: endpoint:填写Bucket所在地域的域名信息 https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.2.17.1d9b448aXJ5qow#concept-zt4-cvy-5db accessKeyID: accessKeySecret: https://help.aliyun.com/document_detail/53045.html?spm=a2c4g.11186623.2.18.1d9b448aXJ5qow#task-1715673 stsToken:非必配项,若采用STS临时授权方式访问OSS需要配置该项,否则置空即可
  ● 下载文件并解压
  ./ossutil64 cp oss://goclouds/ubuntu180464_m-m5e2hcc7vx20iix1gyle_system.raw.tar.gz ./
  tar zxvf ubuntu180464_m-m5e2hcc7vx20iix1gyle_system.raw.tar.gz
  ●上传至S3(先配置AK,SK或者Role)
  aws s3 cp ubuntu180464_m-m5e2hcc7vx20iix1gyle_system.raw s3://wyf-migration

4. 配置角色导入镜像
  创建角色
 aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json

    # trust-policy.json
    {
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}
  附加策略
    aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document
    file://role-policy.json
    
    # role-policy.json
    
    {
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws-cn:s3:::wyf-migration",
            "arn:aws-cn:s3:::wyf-migration/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:PutObject",
            "s3:GetBucketAcl"
         ],
         "Resource":[
            "arn:aws-cn:s3:::wyf-migration",
            "arn:aws-cn:s3:::wyf-migration/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource":"*"
      }
   ]
}
  导入镜像
    aws ec2 import-image --description "ubuntu raw" --license-type BYOL --disk-containers file://containers.json
    
    # containers.json
    
    [
        {
    "Description": "My Server RAW",
    "Format": "raw",
    "UserBucket": {
        "S3Bucket": "wyf-migration",
        "S3Key": "ubuntu180464_m-m5e2hcc7vx20iix1gyle_system.raw"
        }
    }]

  - 查看进度
    aws ec2 describe-import-image-tasks --import-task-ids import-ami-00b996859b9f8a6a9
    # import-ami-00b996859b9f8a6a9 为上一步生成的ID值
    - 最终完成
    {
    "ImportImageTasks": [
        {
            "Status": "completed",
            "LicenseType": "BYOL",
            "Description": "ubuntu180464 raw",
            "ImageId": "ami-0e4e9edc90897b5f2",
            "Platform": "Linux",
            "Architecture": "x86_64",
            "SnapshotDetails": [
                {
                    "Status": "completed",
                    "DeviceName": "/dev/sda1",
                    "Description": "My Server RAW",
                    "Format": "RAW",
                    "DiskImageSize": 21474836480.0,
                    "UserBucket": {
                        "S3Bucket": "wyf-migration",
                        "S3Key": "ubuntu180464_m-m5e2hcc7vx20iix1gyle_system.raw"
                    },
                    "SnapshotId": "snap-01d2d5216dd65799a"
                }
            ],
            "ImportTaskId": "import-ami-00b996859b9f8a6a9"
        }
    ]
}
  5. 根据 ami-0e4e9edc90897b5f2 找到生成的 AMI并启动实例

  希望此分享能为您带来帮助,如您有任何疑问,请联系我们!

  我们今天的分享就到这里,感谢大家的观看,请留意yeseesoft官网,我们下一次分享再见。