CentOS: 將虛擬機(jī)遷移到 Azure (以阿里云為例)

Azure 虛擬機(jī)能很容易地導(dǎo)出 vhd 并遷移到各種環(huán)境中,包含本地及云端環(huán)境,或者遷移至其他區(qū)域。這為開(kāi)發(fā)、測(cè)試、擴(kuò)展帶來(lái)了極大的便利。因此本文以阿里云為例,闡述的是如何將 CentOS 6.8 的虛擬機(jī)遷移到 Azure 環(huán)境,同時(shí)能保存虛擬機(jī)內(nèi)的數(shù)據(jù),不需重新部署應(yīng)用的方法。

主要步驟

遷移的主要步驟分為:準(zhǔn)備環(huán)境調(diào)整服務(wù)器配置,導(dǎo)出磁盤,上傳磁盤,建立新的虛擬機(jī)。

在這幾個(gè)步驟中,調(diào)整服務(wù)器配置將對(duì)阿里云中的配置進(jìn)行調(diào)整以符合 Azure 的需求,因此將會(huì)涉及一些影響在阿里云運(yùn)行的調(diào)整。有幾個(gè)推薦的做法:

在調(diào)整前進(jìn)行快照,操作錯(cuò)誤時(shí)可進(jìn)行回滾。

如本地有 Hyper-V 機(jī)器,可先進(jìn)行導(dǎo)出磁盤再進(jìn)行調(diào)整服務(wù)器配置

因此,根據(jù)你的策略,流程可分為

準(zhǔn)備環(huán)境=>調(diào)整服務(wù)器配置=>導(dǎo)出磁盤=>上傳磁盤=>建立新的虛擬機(jī)

準(zhǔn)備環(huán)境=>導(dǎo)出磁盤=>調(diào)整服務(wù)器配置=>上傳磁盤=>建立新的虛擬機(jī)

由于修改服務(wù)配置可能造成云端服務(wù)中斷,而在本地則需要額外的資源及較長(zhǎng)的操作時(shí)間,你可根據(jù)需要決定選擇何種流程,以下我們將針對(duì)各步驟進(jìn)行詳細(xì)說(shuō)明。

準(zhǔn)備環(huán)境

首先,推薦先對(duì)現(xiàn)有磁盤進(jìn)行快照

接著,為了導(dǎo)出虛擬機(jī)的磁盤,我們需要掛載數(shù)據(jù)盤以存放導(dǎo)出的虛擬磁盤文件(.vhd),大小建議為需要備份的磁盤大小的兩倍,詳細(xì)方法請(qǐng)參考掛載數(shù)據(jù)盤,值得提醒的是,除了在阿里云控制臺(tái)進(jìn)行掛載,也需要在操作系統(tǒng)內(nèi)進(jìn)行配置。

最后,為了準(zhǔn)備上傳磁盤的空間,需要在 Azure 上創(chuàng)建一個(gè)存儲(chǔ)賬戶,值得注意的是這個(gè)存儲(chǔ)賬戶必須與虛擬機(jī)是同一種類型,這邊采用的是資源管理模式(Azure Resource Manager),進(jìn)行存儲(chǔ)賬戶創(chuàng)建,同時(shí)請(qǐng)創(chuàng)建一個(gè)容器(container),名為vhds。

調(diào)整服務(wù)器配置

在此步驟中,我們將進(jìn)行服務(wù)器的調(diào)整以兼容于 Azure 的環(huán)境。

用具有管理員權(quán)限的賬戶登入阿里云的 Linux 虛擬機(jī)。

修改/etc/sysconfig/network:

復(fù)制

vi /etc/sysconfig/network

修改為

復(fù)制

NETWORKING=yes

HOSTNAME=localhost.localdomain

修改/etc/sysconfig/network-scripts/ifcfg-eth0:

復(fù)制

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

修改為

復(fù)制

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=dhcp

TYPE=Ethernet

USERCTL=no

PEERDNS=yes

IPV6INIT=no

修改/etc/sysconfig/network-scripts/ifcfg-eth1,將其禁用:

復(fù)制

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

修改為

復(fù)制

DEVICE=eth1

#ONBOOT=yes

#BOOTPROTO=static

#IPADDR=1.1.1.1

#NETMASK=255.255.255.0

修改 udev 規(guī)則,以避免產(chǎn)生以太網(wǎng)接口的靜態(tài)規(guī)則。在 Azure 或 Hyper-V 中克隆虛擬機(jī)時(shí),這些規(guī)則會(huì)引發(fā)問(wèn)題。

復(fù)制

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

修改服務(wù)啟動(dòng)的配置,禁用阿里云的服務(wù)。

復(fù)制

sudo chkconfig network on

sudo chkconfig aegis off

sudo chkconfig aliyun-util off

更新鏡像庫(kù)

復(fù)制

wget -q https://aliyunmigration.blob.core.chinacloudapi.cn/packages/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo

修改/etc/yum.conf:

復(fù)制

vi /etc/yum.conf

添加一行

復(fù)制

http_caching=packages

清除 yum 元數(shù)據(jù)并進(jìn)行更新:

復(fù)制

yum clean all

sudo yum -y update

安裝 Azure Linux 代理和依賴項(xiàng):

復(fù)制

sudo yum install python-pyasn1 WALinuxAgent

在 grub 配置中修改內(nèi)核引導(dǎo)行,以使其包含 Azure 的其他內(nèi)核參數(shù)。 為此,請(qǐng)?jiān)谖谋揪庉嬈?(vi) 中打開(kāi)/boot/grub/menu.lst,并確保默認(rèn)內(nèi)核包含以下參數(shù)。

復(fù)制

console=ttyS0 earlyprintk=ttyS0 rootdelay=300

編輯磁盤文件,將不需用到的磁盤禁用:

復(fù)制

vi /etc/fstab

在本例中,將數(shù)據(jù)盤標(biāo)注掉:

復(fù)制

#/dev/vdb1 /mnt ext3 defaults 0 0

至此,你已完成 CentOS 6.8 上傳至 Azure 磁盤前的準(zhǔn)備。

導(dǎo)出磁盤

在 Linux 中,我們所使用的工具是dd,進(jìn)行整個(gè)磁盤的備份,再備份完成后再用qemu工具,轉(zhuǎn)成 vhd 的文件格式。

首先,執(zhí)行 dd 指令,這里我導(dǎo)出的磁盤為 /dev/vda,額外掛載作為備份的磁盤為 /mnt,導(dǎo)出的文件為 aliyuncentos68.raw。

復(fù)制

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

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

復(fù)制

sudo yum install qemu-kvm

安裝完成后,進(jìn)行格式轉(zhuǎn)換,其中 /mnt 為剛才的備份目錄,aliyuncentos68.raw 為剛才的備份文件,aliyuncentos68.vhd 則為轉(zhuǎn)換后的文件。

復(fù)制

cd /mnt

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

等待直至轉(zhuǎn)換磁盤完成。

上傳磁盤

在此我們將運(yùn)用 Azure CLI 將剛才導(dǎo)出的磁盤上傳至先前創(chuàng)建的存儲(chǔ)賬戶中。

首先需要安裝 NodeJS:

復(fù)制

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -

sudo yum -y install nodejs

接著安裝 Azure CLI:

復(fù)制

npm install -g azure-cli

然后需要?jiǎng)偛旁?Azure 創(chuàng)建的存儲(chǔ)賬戶信息及密鑰組成連結(jié)字符串,如:

復(fù)制

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

接著執(zhí)行指令進(jìn)行上傳:

復(fù)制

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

建立新的虛擬機(jī)

當(dāng)上述步驟都已經(jīng)完成,可以點(diǎn)選下面圖標(biāo)根據(jù)你上傳的磁盤url創(chuàng)建機(jī)器。

在欄位中依序填入 VM 創(chuàng)建的地點(diǎn),剛才上傳的系統(tǒng)磁盤 url,OS 類型(這邊應(yīng)該選 Linux),VM 的大小及 VM 的名稱。

接著點(diǎn)選創(chuàng)建,虛擬機(jī)將開(kāi)始進(jìn)行部署。過(guò)一段時(shí)間之后,便可以連結(jié)上你所遷移的機(jī)器了。

立即訪問(wèn)http://market.azure.cn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容