CentOS: 将虚拟机迁移到 Azure (以阿里云为例)
Azure 虚拟机能很容易地导出 vhd 并迁移到各种环境中,包含本地及云端环境,或者迁移至其他区域。这为开发、测试、扩展带来了极大的便利。因此本文以阿里云为例,阐述的是如何将 CentOS 6.8 的虚拟机迁移到 Azure 环境,同时能保存虚拟机内的数据,不需重新部署应用的方法。
主要步骤
迁移的主要步骤分为:准备环境,调整服务器配置,导出磁盘,上传磁盘,建立新的虚拟机。
在这几个步骤中,调整服务器配置将对阿里云中的配置进行调整以符合 Azure 的需求,因此将会涉及一些影响在阿里云运行的调整。有几个推荐的做法:
因此,根据你的策略,流程可分为
- 准备环境=>调整服务器配置=>导出磁盘=>上传磁盘=>建立新的虚拟机
- 准备环境=>导出磁盘=>调整服务器配置=>上传磁盘=>建立新的虚拟机
由于修改服务配置可能造成云端服务中断,而在本地则需要额外的资源及较长的操作时间,你可根据需要决定选择何种流程,以下我们将针对各步骤进行详细说明。
准备环境
首先,推荐先对现有磁盘进行快照。
接着,为了导出虚拟机的磁盘,我们需要挂载数据盘以存放导出的虚拟磁盘文件(.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
CentOS: 将虚拟机迁移到 Azure (以阿里云为例)的更多相关文章
- Windows Server: 将虚拟机迁移到 Azure (以阿里云为例)
Azure 虚拟机能很容易地导出 vhd 并迁移到各种环境中,包含本地及云端环境,或者迁移至其他区域.这为开发.测试.扩展带来了极大的便利.本文以阿里云为例,阐述如何将Windows Server 的 ...
- 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器
阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 我在阿里云购买的服务器配置 CPU:1核 内存:2G 系统盘:40G 公共镜像:CentOS 6.5 64位 公网带宽:1Mbps ...
- 修改CentOS的yum源,改为阿里云的镜像
修改CentOS的yum源,改为阿里云的镜像 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.b ...
- 云计算之路-Azure vs 阿里云:从负载均衡中摘/挂虚拟机
@小尾鱼 在 试用Azure:上不了高速的跑车,无法跨Cloud Service的DNS服务器一文的评论中提了一个很好的问题: 问个问题,使用了负载均衡以后,程序发布的时候博客园是怎么避免用户访问到正 ...
- centos 6.6编译安装nginx--来自阿里云帮助文档
刚开始接触运维工作, 需要安装nginx,就在网上找了各种的方法, 结果都是大家抄来抄去,都不好用. 由于公司用的是阿里云的服务器, 所以在阿里云上找到了安装nginx的方法,现在摘抄下来,供大家借鉴 ...
- 更改CentOS 6.3 yum源为国内 阿里云源
将CentOS的 yum源 更换为 阿里云源 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.b ...
- 项目总结11:Centos部署JDK+Tomcat+MySQL文档(阿里云-网易云-华为云)
(如果不是root登陆,则输入:sudo su - 切换成root) 1.JDK安装 1-1-yum update (升级所有包同时也升级软件和系统内核) --安装中会有提示输入y就好(两个y,中 ...
- 将Centos 的默认yum源改为阿里云的yum源后出现的问题
阿里各版本yum源如下: Centos5:http://mirrors.aliyun.com/repo/Centos-5.repo Centos6:http://mirrors.aliyun.com/ ...
- 修改centos的源, 使其能访问阿里云服务器
1. 从拷贝以下文件到/etc/yum.repos.d/ 下; Centos-7.repo # CentOS-Base.repo # # The mirror system uses the conn ...
随机推荐
- 2019.04.17 读书笔记 checked与unchecked
在普通的编程中,我们是很容易去分析数据的大小,然后给出合理的类型,但是在很多数据库的累计中,缺存在很多隐患,特别是研发时,数据量小,求和也不会溢出,当程序运行几年后,再来一次大求和,隐形的BUG就出来 ...
- JS及Dom练习 | 页面滚动文字
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- webstorm-主题和配色
webstorm-主题和配色 2016年01月31日 19:40:54 walkersc 阅读数:73670更多 个人分类: javascript URL:http://blog.csdn.net ...
- HtmlUnit 开发网络爬虫
网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源HtmlUnit包,几行代码就OK啦! 通常在一个页面中会包含别的Url,在别的Url当中又会包含更多的Url. ...
- Android控件之ListView的使用
ListView是Android当中一个非常常用的数据显示控件. 第一种可以使用List<HashMap<String , Object>>,作为适配器的数据源来显示要显示的数 ...
- WEB前端笔记
HTML+CSS部分 IE6使用PNG的透明问题 解决关键字 DD_belatedPNG_0.0.8a.js Google或百度一下,下载之 <!--[if lte IE 6]> < ...
- js创建类(封装)
js如何创建类(封装) 学过其他面向对象语言的JavaScripter,可能都应用过类,如:class{},等定义的一系列方法, 但是初学者看是学习js的时候,经常会看到这样一句话,那就是Ja ...
- 项目管理系列--从零开始Code Review[转]
从零开始Code Review 这篇帖子不是通篇介绍Code Review的方法论, 而是前大段记录了我们团队怎么从没有这个习惯到每天都进行review的过程, 后小段给出了我的一些建议. 希望能对诸 ...
- C#基础笔记 转自wojiushigelg
笔记如下: 概念:.net与c# .net/dontnet:一般指.net framework框架,一种平台,一种技术 c#(charp):一种编程语言,可以开发基于.net的应用. *java既是一 ...
- ios audio不能自动播放
今天做了一个简单的落地页项目,就是类似于手机微信上经常看到的滑动效果.因为公司要求需要自己开发,所以我就用swiper+swiper.animate开发,开发速度很快,只不过最后音乐哪里出现了一点小b ...