• 阿里云至 Windows Azure 的 Linux 虚拟机迁移


    在Windows Azure中,用户可以对部署在Azure中的虚拟机的映像、磁盘以及快照进行生成和下载。用户可以方便地将Azure中的虚拟机实例迁移到本地、私有云甚至其他公有云平台进行测试、扩展或者再部署。但是,除Azure外,大部分公有云供应商并不提供虚拟机映像的下载服务。用户如要迁移自己的应用,必须重新配置虚拟机环境。为了解决这个问题,本文以阿里云迁移至Azure为例,提供了一种无须重新部署、利用Linux dd命令直接拷贝阿里云中的虚拟机映像、并上传至Azure的方法。

    • 本文以 Ubuntu 14.04 为例,其他Linux版本可参考以上链接。
    • 本文所有操作均在源虚拟机命令行窗口中执行,无需切换至Linux图形界面、Windows系统或依靠Hyper-V等第三方工具。

    1.  Azure环境准备

    1)  将阿里云映像中的现有源仓库替换为 Azure 源仓库。

    # cp /etc/apt/sources.list/etc/apt/sources.list.bak

    # sed -i s/mirrors.aliyun.com/azure.archive.ubuntu.com/g/etc/apt/sources.list

    # sed -i /aliyuncs/d /etc/apt/sources.list

    2)   将操作系统内核更新为最新版本。

    # apt-get update

    # apt-get install hv-kvp-daemon-init

    # apt-get dist-upgrade

    # reboot

    3)   修改 Grub 的内核启动项,使其包含 Azure 的附加内核参数。

    编辑“/etc/default/grub”,将GRUB_CMDLINE_LINUX_DEFAULT参数行替换成如下:

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300"

    并且运行:

    # update-grub

    4)   安装 Azure Linux Agent。(此操作将会移除NetworkManager和NetworkManager-gnome程序包)

    # apt-get update

    # apt-get install walinuxagent

    5)   将网络配置从“静态”修改为“DHCP”,并将其他网络配置行注释掉(请参见以下屏幕截图)。

    编辑“/etc/network/interfaces”:

    修改前:


    修改后:


    6)   添加有效的 DNS 服务器。

    编辑“/etc/resolv.conf”,添加如下DNS服务器:

    nameserver 8.8.8.8 #Google

    nameserver 223.5.5.5 #Ali

    7)   将附加盘信息从文件系统表中移除。

    编辑“/etc/fstab”:

    修改前:


    修改后:


    8)   移除该 VM上的用户配置信息,并清除历史记录。

    # waagent -force -deprovision

    # export HISTSIZE=0

    2.  生成 VM 映像

    1)   添加一个独立云磁盘到阿里虚拟机上,用来存储生成的虚拟机映像文件,并且挂载该磁盘至虚拟机(参考)。(该独立云磁盘容量至少应为系统盘的两倍)

    2)   利用dd命令备份系统磁盘至独立云磁盘。

    # dd if=/dev/xvda of=/mnt/ImageName.raw bs=100M

    3)   安装 qemu-utils 工具以转换映像文件格式。

    # apt-get install qemu-utils

    4)   将生成的映像文件从 *.raw 转换为 *.vhd。

    # cd /mnt

    # qemu-img convert -f raw -o subformat=fixed -O vpc ImageName.raw ImageName.vhd

    至此,映像文件已经准备完毕。下面将在Azure上创建存储账号,用来存储准备好的映像文件。注:所有运行在Azure上的虚拟机,它们的映像、磁盘和快照都存储在Azure存储账号中,方便用户直接操作和管理。

    3.  新建Azure存储账号

    • 用户可以使用Azure Powershell、调用API或者直接在管理门户网站上创建存储账号、新建虚拟机或者管理Azure其它服务(参考:Azure文档中心)。本文使用Azure Linux命令行工具,使用户快速、方便地进行存储账号和虚拟机的创建和配置。
    • 在使用Azure服务前,请确保您拥有有效的Azure订阅。用户可以通过Azure中国官网:http://www.windowsazure.cn/ 获取Azure订阅。

    1)   安装 Azure Linux命令行工具:

    # apt-get update

    # apt-get install nodejs

    # apt-get install npm

    # ln -s /usr/bin/nodejs /usr/bin/node

    # npm install azure-cli -g

    2)   连接到Azure订阅:

    # azure login -u<azureusername> -p <auzrepassword> -e<environment>

    例:# azure login -u myname@myorg.partner.onmschina.cn -p mypasswd -e AzureChinaCloud

    若您使用Azure中国版服务,Azure订阅用户名<azureusername>的格式为:*@*.partner.onmschina.cn,且必须指定参数-e<environment>为‘AzureChinaCloud’;若您使用Azure国际版服务,可根据该参考创建组织账号,相应的<azureusername>的格式为:*@*.onmicrosoft.com ,参数-e可省略。

    3)   新建Azure存储账号:

    # azure storage account create <storageaccountname> -l <location>

    例:# azure storage account create myaccount -l "ChinaEast"

    -l参数指定存储账号所在地域,用户可以使用如下命令查看可用地域:

    # azure vm location list

    中国至今(2015年1月)拥有两个地域: China East和China North,分别位于上海和北京。

    注意:存储账号和虚拟机必须部署在同一地域,请根据业务需求选择账号所在位置。

    4)   获取存储账号秘钥:

    # azure storage account connectionstring show --blob-endpoint <blobEndpoint> <storageaccountname>

    例:# azure storage account connectionstring show --blob-endpoint myaccount.blob.core.chinacloudapi.cn myaccount

    该命令返回如下结果,其中高亮 部分将作为下一步操作中的<connectionstring>:


    5)   新建存储容器:

    存储容器相当于文件系统中的文件夹,可以对在其内的blob文件进行统一权限管理。默认情况下,建立的容器为私有容器。

    #azure storage container create <containername> -c <connectionstring>

    例:#azure storage container create mycontainer -c 'DefaultEndpointsProtocol=https;BlobEndpoint=teststorageaccount.blob.core.chinacloudapi.cn;AccountName=teststorageaccount;AccountKey=xMPA3UJD56VqhtmEdnWZ4vLHmJQzaQJfTGUj7R+eMwEGMkBmbEPiUF4qJIL3QqIuWy/t7qeb6RZm72NsBzKiKA=='

    4.  上传映像至Azure

    1)   将生成的映像文件上传到 Azure Storage。

    # cd /mnt

    # azure storage blob upload -c <connectionstring> -f ImageName.vhd --container <containername> --blob ImageName.vhd --blobtype page

    5. 新建Azure虚拟机

    1)   将上传的映像文件新建成虚拟机镜像:

    # azure vm image create <imagename> --blob-url <url> --os linux

    例:# azure vm image create myimage --blob-url https://myaccount.blob.core.chinacloudapi.cn/mycontainer/ImageName.vhd --os linux

    2)   新建一个Azure虚拟机实例:

    # azure vm create <dnsname> <imagename> -u <vmusername> -p <vmpassword> -l <location>

    例:# azure vm create mylinuxvm.chinacloudapp.cn myimage -u vmuser -p mypassword  -l "China East"

    至此,您已成功将阿里云上的Linux虚拟机迁移至Azure中。通过默认SSH端口:22和DNS地址:*.chinacloudapp.cn,即可远程对创建的Azure虚拟机进行管理和操作。并且,您还能利用迁移的映像文件创建多个虚拟机实例,来保证应用的可用性和可靠性。

    
  • 相关阅读:
    课后作业5
    类与对象动手动脑
    动手动脑
    找“水王”
    NABCD
    第七周学习进度
    web网页四则运算
    二维数组最大联通子数组求和
    第六周学习进度
    环状数组最大子数组求和
  • 原文地址:https://www.cnblogs.com/new0801/p/6176163.html
Copyright © 2020-2023  润新知