基于Openstack的虚拟机热迁移

本文介绍了如何在OpenStack环境中实现虚拟机热迁移,包括环境准备、添加块存储服务、安装nova-objectstore、配置NFS共享存储,以及解决迁移过程中遇到的CPU类型不匹配、名称解析错误等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

虚拟机的迁移在实际环境中经常用到,例如将虚拟机从A主机迁移到B上,然后对A进行维护后,再将虚拟机从B迁回A。因此,我就在实验室的环境下,进行这个实验。这里对迁移方式做一个简单的记录。

虚拟机迁移的种类有:冷迁移和热迁移。冷迁移顾名思义,就是在虚拟机迁移的时候,需要将虚拟机暂停一段时间,而热迁移则不需要。

热迁移的方式有:1.基于共享存储的迁移;2.基于块的迁移;3.基于volumes存储的迁移;

这里首先记录一下使用基于共享存储和kvm-libvirt的虚拟机热迁移方式。

文中描述的迁移方式没有涉及安全方面的考虑;在迁移过程中,仅对虚拟机做简单的操作;有错误的地方还请指出和见谅。

一、环境准备

在进行虚拟机迁移时,各节点需要提供以下的服务:
1.我的实验环境是三台ubuntu 14.04操作系统的机器;
2.controller节点需要提供的服务有:nova-api, nova-scheduler, nova-network, cinder-volume, and nova-objectstore;
3.其它节点需要提供的服务有:nova-compute;
4.各节点可通过网络连接。

二、向Openstack添加块存储服务(Block Storage service)

因为虚拟机迁移需要在controller节点上提供cinder-*的服务,所以需要先安装Block Storage service。之前配置openstack时,没有添加这项服务,就在这里添加并记录。安装过该服务的,可跳过此步骤,第三步也如此。

(1)在controller节点下进行如下操作

1.使用如下命令,安装必须的程序包。

apt-get install cinder-api cinder-scheduler
2.编辑/etc/cinder/cinder.conf文件,在该文件中添加如下的信息,[database]段需要自己添加,123456是cinder数据库的密码,视自己的情况而定。
[database]
connection = mysql://cinder:123456@controller/cinder
3.使用如下的命令,登入mysql,建立一个cinder数据库,并设置权限。
mysql -uroot -p123456
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '123456';
4.使用如下的命令在cinder数据库中建表。
sudo su -s /bin/sh -c "cinder-manage db sync" cinder

5.创建cinder用户

source admin-openrc.sh
keystone user-create --name=cinder --pass=123456 [email protected]
keystone user-role-add --user=cinder --tenant=service --role=admin
6.修改/etc/cinder/cinder.conf文件,添加如下的内容,其中123456是密码
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = 123456
在[default]部分,添加如下的内容
[DEFAULT]
rpc_backend = rabbit
rabbit_host = controller
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = RABBIT_PASS
7.使用如下的命令,来注册块存储的服务,以使别的Openstack服务能够定位到它。执行完的效果如下图所示。
keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage"
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ volume / {print $2}') \
--publicurl=http://controller:8776/v1/%\(tenant_id\)s \
--internalurl=http://controller:
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值