设为首页 收藏本站
查看: 364|回复: 0

[经验分享] CentOS: 将虚拟机迁移到 Azure (以阿里云为例)

[复制链接]

尚未签到

发表于 2017-11-15 22:13:19 | 显示全部楼层 |阅读模式
  Azure 虚拟机能很容易地导出 vhd 并迁移到各种环境中,包含本地及云端环境,或者迁移至其他区域。这为开发、测试、扩展带来了极大的便利。因此本文以阿里云为例,阐述的是如何将 CentOS 6.8 的虚拟机迁移到 Azure 环境,同时能保存虚拟机内的数据,不需重新部署应用的方法。

主要步骤
  迁移的主要步骤分为:准备环境,调整服务器配置,导出磁盘,上传磁盘,建立新的虚拟机。
  在这几个步骤中,调整服务器配置将对阿里云中的配置进行调整以符合 Azure 的需求,因此将会涉及一些影响在阿里云运行的调整。有几个推荐的做法:


  • 在调整前进行快照,操作错误时可进行回滚。
  • 如本地有 Hyper-V 机器,可先进行导出磁盘再进行调整服务器配置。
  因此,根据你的策略,流程可分为


  • 准备环境=>调整服务器配置=>导出磁盘=>上传磁盘=>建立新的虚拟机
  • 准备环境=>导出磁盘=>调整服务器配置=>上传磁盘=>建立新的虚拟机
  由于修改服务配置可能造成云端服务中断,而在本地则需要额外的资源及较长的操作时间,你可根据需要决定选择何种流程,以下我们将针对各步骤进行详细说明。

准备环境
  首先,推荐先对现有磁盘进行快照。
  接着,为了导出虚拟机的磁盘,我们需要挂载数据盘以存放导出的虚拟磁盘文件(.vhd),大小建议为需要备份的磁盘大小的两倍,详细方法请参考挂载数据盘,值得提醒的是,除了在阿里云控制台进行挂载,也需要在操作系统内进行配置。
  最后,为了准备上传磁盘的空间,需要在 Azure 上创建一个存储账户,值得注意的是这个存储账户必须与虚拟机是同一种类型,这边采用的是资源管理模式(Azure Resource Manager),进行存储账户创建,同时请创建一个容器(container),名为vhds。

调整服务器配置
  在此步骤中,我们将进行服务器的调整以兼容于 Azure 的环境。


  • 用具有管理员权限的账户登入阿里云的 Linux 虚拟机。
  •   修改 /etc/sysconfig/network:


    复制
    vi /etc/sysconfig/network

      修改为


    复制
    NETWORKING=yes
    HOSTNAME=localhost.localdomain
  •   修改 /etc/sysconfig/network-scripts/ifcfg-eth0:


    复制
    vi /etc/sysconfig/network-scripts/ifcfg-eth0

      修改为


    复制
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
  •   修改 /etc/sysconfig/network-scripts/ifcfg-eth1,将其禁用:


    复制
    vi /etc/sysconfig/network-scripts/ifcfg-eth0

      修改为


    复制
    DEVICE=eth1
    #ONBOOT=yes
    #BOOTPROTO=static
    #IPADDR=1.1.1.1
    #NETMASK=255.255.255.0
  •   修改 udev 规则,以避免产生以太网接口的静态规则。在 Azure 或 Hyper-V 中克隆虚拟机时,这些规则会引发问题。


    复制
    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
  •   修改服务启动的配置,禁用阿里云的服务。


    复制
    sudo chkconfig network on
    sudo chkconfig aegis off
    sudo chkconfig aliyun-util off
  •   更新镜像库


    复制
    wget -q https://aliyunmigration.blob.core.chinacloudapi.cn/packages/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo
  •   修改 /etc/yum.conf:


    复制
    vi /etc/yum.conf

      添加一行


    复制
    http_caching=packages
  •   清除 yum 元数据并进行更新:


    复制
    yum clean all
    sudo yum -y update
  •   安装 Azure Linux 代理和依赖项:


    复制
    sudo yum install python-pyasn1 WALinuxAgent
  •   在 grub 配置中修改内核引导行,以使其包含 Azure 的其他内核参数。 为此,请在文本编辑器 (vi) 中打开 /boot/grub/menu.lst,并确保默认内核包含以下参数。


    复制
    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
  •   编辑磁盘文件,将不需用到的磁盘禁用:


    复制
    vi /etc/fstab

      在本例中,将数据盘标注掉:


    复制
    #/dev/vdb1 /mnt ext3 defaults 0 0
  至此,你已完成 CentOS 6.8 上传至 Azure 磁盘前的准备。

导出磁盘
  在 Linux 中,我们所使用的工具是 dd,进行整个磁盘的备份,再备份完成后再用 qemu 工具,转成 vhd 的文件格式。
  首先,执行 dd 指令,这里我导出的磁盘为 /dev/vda,额外挂载作为备份的磁盘为 /mnt,导出的文件为 aliyuncentos68.raw。


复制
dd if=/dev/vda of=/mnt/aliyuncentos68.raw bs=100M

  等待 dd 完成后,安装 qemu 工具。


复制
sudo yum install qemu-kvm

  安装完成后,进行格式转换,其中 /mnt 为刚才的备份目录,aliyuncentos68.raw 为刚才的备份文件,aliyuncentos68.vhd 则为转换后的文件。


复制
cd /mnt
qemu-img convert -f raw -o subformat=fixed -O vpc aliyuncentos68.raw aliyuncentos68.vhd

  等待直至转换磁盘完成。

上传磁盘
  在此我们将运用 Azure CLI 将刚才导出的磁盘上传至先前创建的存储账户中。
  首先需要安装 NodeJS:


复制
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
sudo yum -y install nodejs

  接着安装 Azure CLI:


复制
npm install -g azure-cli

  然后需要刚才在 Azure 创建的存储账户信息及密钥组成连结字符串,如:


复制
DefaultEndpointsProtocol=https;BlobEndpoint=storagename.blob.core.chinacloudapi.cn;AccountName=storagename;AccountKey=storagekey

  接着执行指令进行上传:


复制
cd /mnt
azure storage blob upload -c 'DefaultEndpointsProtocol=https;BlobEndpoint=storagename.blob.core.chinacloudapi.cn;AccountName=storagename;AccountKey=storagekey' -t page --container vhds -f aliyuncentos68.vhd

建立新的虚拟机
  当上述步骤都已经完成,可以点选下面图标根据你上传的磁盘url创建机器。

  在栏位中依序填入 VM 创建的地点,刚才上传的系统磁盘 url,OS 类型(这边应该选 Linux),VM 的大小及 VM 的名称。
  接着点选创建,虚拟机将开始进行部署。过一段时间之后,便可以连结上你所迁移的机器了。
  立即访问http://market.azure.cn

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-407364-1-1.html 上篇帖子: centos 7 linux系统默认ftp安装配置和部署(详细讲解) 下篇帖子: CentOS安装sctp协议
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表