OpenStack迁移需要将虚拟机创建运行在共享存储上才可以进行迁移。

一、配置共享存储

1、环境

OpenStack三个节点icehouse-gre模式部署一文部署了的OpenStack环境。

IP如下:

controller:10.1.101.11

network:10.1.101.21

compute:10.1.101.31

compute2:10.1.101.41

确保环境配置正确。

修改各个节点的nova.conf中vncserver_listen为:

vncserver_listen = 0.0.0.0

2、安装NFS服务器

由于迁移需要用到共享存储,我们在controller节点配置一个被所有计算节点共同使用的共享存储。这里使用NFS服务。

NFS服务了解更多可参考:NFS(Network File System)服务配置和使用

controller节点:

第一步,安装nfs服务

# apt-get install nfs-kernel-server nfs-common 

第二步,创建一个目录作为nfs服务挂载的目录

# mkdir /var/nfs-storage

第三步,配置/etc/exports

root@controller:~# cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/var/nfs-storage  *(rw,sync,fsid=0,no_root_squash)root@controller:~# exportfs -rv

3、在compute和comput1两个计算节点挂载NFS目录

Note:

a、挂载点必须是nova.conf配置文件中state_path=/var/lib/nova指定的目录,两个计算节点目录必须一致。

b、建议在配置前先删除计算节点的所有实例,不然会造成僵尸实例的产生。

确保计算节点有执行和查找目录的权限:

chmod o+x /var/lib/nova/instances

安装nfs服务

#  apt-get install nfs-kernel-server nfs-common 

开机自动挂载:

root@compute1:/var/log/libvirt/qemu# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/xvda1 during installation
UUID=0c681b37-97ed-4d10-bd79-8d5931c443f8 /               ext4    errors=remount-ro 0       1
# swap was on /dev/xvda5 during installation
UUID=9e2efc1b-ef13-4b7c-b616-34d2a62f04ea none            swap    sw              0       0
10.1.101.11:/var/nfs-storage  /var/lib/nova/instances nfs  defaults 0 0 
root@compute1:/var/log/libvirt/qemu# mount -aroot@compute1:~# df -kFilesystem                   1K-blocks    Used Available Use% Mounted on/dev/xvda1                    19478204 2754448  15711276  15% /udev                           2530276       4   2530272   1% /devtmpfs                           512512     224    512288   1% /runnone                              5120       0      5120   0% /run/locknone                           2562556       0   2562556   0% /run/shmcgroup                         2562556       0   2562556   0% /sys/fs/cgroup10.1.101.11:/var/nfs-storage  19478528 3164672  15301632  18% /var/lib/nova/instances

二、修改所有计算节点libvirt

第一步,修改/etc/libvirt/libvirtd.conf 【注意该目录还有一个libvirt.conf,不要弄错了】
改前:#listen_tls = 0

改后:listen_tls = 0

改前:#listen_tcp = 1

改后:listen_tcp = 1

改前:#auth_tcp = "sasl"

改后:auth_tcp = "none"

第二步,修改/etc/default/libvirt-bin

改前:libvirtd_opts="-d"

改后:libvirtd_opts="-d -l"

第三步,去掉 /etc/libvirt/qemu.conf 中以下三行注释

vnc_listen = "0.0.0.0"
user = "root"
group = "root"

第四步,重启libvirt-bin

service libvirt-bin restart

确认进程已启动

root@compute1:~# ps -ef |grep libvirt
root      9518     1  0 Jan20 ?        00:01:23 /usr/sbin/libvirtd -d -l

重启nova-compute服务

service nova-compute restart 

到此配置成功!注意/var/lib/nova/instances目录权限:

root@compute1:~# ll /var/lib/nova/
total 36
drwxr-xr-x  9 nova nova 4096 Jan 20 15:40 ./
drwxr-xr-x 42 root root 4096 Jan 20 13:59 ../
drwxr-xr-x  2 nova nova 4096 May 15  2014 buckets/
drwxr-xr-x  6 nova nova 4096 Jan  6 17:15 CA/
drwxr-xr-x  2 nova nova 4096 May 15  2014 images/
drwxr-xr-x  6 nova root 4096 Jan 20 17:06 instances/
drwxr-xr-x  2 nova nova 4096 May 15  2014 keys/
drwxr-xr-x  2 nova nova 4096 May 15  2014 networks/
drwxr-xr-x  2 nova nova 4096 May 15  2014 tmp/

三、测试迁移

把compute1的虚拟机迁移到compue2上,先看compute1上有哪些虚拟机

# nova-manage vm list | grep compute_one | awk '{print $1}'
root@controller:~# nova-manage vm list
instance   node            type       state      launched                   image     kernel    ramdisk    project    user       zone       index
vm001      compute2        m1.tiny    active     2015-01-20 08:30:21        a1de861a-be9c-4223-9a7a-cf5917489ce9                     60a10cd7a61b493d910eabd353c07567 be1db0d2fd134025accd2654cfc66056 nova       0
vm002      compute1        m1.tiny    active     2015-01-20 08:55:02        a1de861a-be9c-4223-9a7a-cf5917489ce9                     60a10cd7a61b493d910eabd353c07567 be1db0d2fd134025accd2654cfc66056 nova       0
root@controller:~#  nova-manage vm list |grep compute1 |awk '{print $1}'
vm002

要查看需要迁移的实例vm001实例的名字

root@controller:~# nova show 190364a5-a5a7-4e5d-8f46-6c43fb5c3446
+--------------------------------------+------------------------------------------------------------+
| Property                             | Value                                                      |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig                    | AUTO                                                       |
| OS-EXT-AZ:availability_zone          | nova                                                       |
| OS-EXT-SRV-ATTR:host                 | compute1                                                   |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | compute1                                                   |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000036                                          |
| OS-EXT-STS:power_state               | 1                                                          |
| OS-EXT-STS:task_state                | -                                                          |
| OS-EXT-STS:vm_state                  | active                                                     |
| OS-SRV-USG:launched_at               | 2015-01-20T08:55:02.000000                                 |
| OS-SRV-USG:terminated_at             | -                                                          |
| accessIPv4                           |                                                            |
| accessIPv6                           |                                                            |
| config_drive                         |                                                            |
| created                              | 2015-01-20T08:54:04Z                                       |
| flavor                               | m1.tiny (1)                                                |
| hostId                               | af2b0609eb984606e572ddc5135b10b0d992dc73a5f9cc581f01baec   |
| id                                   | 190364a5-a5a7-4e5d-8f46-6c43fb5c3446                       |
| image                                | cirros-0.3.2-x86_64 (a1de861a-be9c-4223-9a7a-cf5917489ce9) |
| key_name                             | -                                                          |
| metadata                             | {}                                                         |
| name                                 | vm002                                                      |
| os-extended-volumes:volumes_attached | []                                                         |
| progress                             | 0                                                          |
| security_groups                      | default                                                    |
| status                               | ACTIVE                                                     |
| tenantA-Net network                  | 10.0.0.29, 10.1.101.83                                     |
| tenant_id                            | 60a10cd7a61b493d910eabd353c07567                           |
| updated                              | 2015-01-20T08:55:03Z                                       |
| user_id                              | be1db0d2fd134025accd2654cfc66056                           |
+--------------------------------------+------------------------------------------------------------+
root@controller:~# nova show 190364a5-a5a7-4e5d-8f46-6c43fb5c3446 |grep instance_name
| OS-EXT-SRV-ATTR:instance_name        | instance-00000036                                          |
root@controller:~# nova show 190364a5-a5a7-4e5d-8f46-6c43fb5c3446 |grep instance_name | awk '{print $4}'
instance-00000036

控制节点执行:

root@controller:~# nova-manage host list
host                            zone
controller                      internal
compute1                        nova
compute2                        nova   

查看可用的计算节点:

root@controller:~# nova-manage service list
Binary           Host                                 Zone             Status     State Updated_At
nova-cert        controller                           internal         enabled    :-)   2015-01-20 08:57:09
nova-consoleauth controller                           internal         enabled    :-)   2015-01-20 08:57:10
nova-scheduler   controller                           internal         enabled    :-)   2015-01-20 08:57:11
nova-conductor   controller                           internal         enabled    :-)   2015-01-20 08:57:08
nova-compute     compute1                             nova             enabled    :-)   2015-01-20 08:57:13
nova-compute     compute2                             nova             enabled    :-)   2015-01-20 08:57:05
nova-compute     controller                           nova             enabled    XXX   2015-01-19 06:52:42

查看目标节点资源:

root@controller:~# nova-manage service describe_resource compute2
HOST                              PROJECT     cpu mem(mb)     hdd
compute2        (total)                         2    2997      18
compute2        (used_now)                      1    1024       1
compute2        (used_max)                      1     512       1
compute2                 60a10cd7a61b493d910eabd353c07567       1     512       1

迁移成功,没有输出

root@controller:~# nova live-migration 190364a5-a5a7-4e5d-8f46-6c43fb5c3446 compute2
root@controller:~# 

迁移成功,再看虚拟机vm002运行在了compute2节点

root@controller:~# nova-manage vm list
instance   node            type       state      launched                   image     kernel    ramdisk    project    user       zone       index
vm001      compute2        m1.tiny    active     2015-01-20 08:30:21        a1de861a-be9c-4223-9a7a-cf5917489ce9                     60a10cd7a61b493d910eabd353c07567 be1db0d2fd134025accd2654cfc66056 nova       0
vm002      compute2        m1.tiny    active     2015-01-20 08:55:02        a1de861a-be9c-4223-9a7a-cf5917489ce9                     60a10cd7a61b493d910eabd353c07567 be1db0d2fd134025accd2654cfc66056 nova       0

OpenStack在线迁移相关推荐

  1. Openstack liberty 云主机迁移源码分析之在线迁移3

    这是在线迁移 源码分析的第三篇,Openstack liberty 云主机迁移源码分析之在线迁移2中分析了prepare准备阶段nova-compute的处理过程,本文将会分析execute执行阶段的 ...

  2. openstack 热迁移(Live Migration)和冷迁移(Cold Migration)

    一.迁移分类 1.冷迁移(cold migration),也叫静态迁移. 在迁移到另外的计算节点时,这段时间虚拟机实例是处于宕机状态的,即关闭电源的虚拟机进行迁移.      通过冷迁移,可以选择将关 ...

  3. DSG-Oracle数据库在线迁移服务

    作为企业业务数据的核心组成部分,Oracle数据库系统往往扮演着极为重要的角色,它的中断通常会造成极为严重的后果,因此在关键业务中Oracle数据库系统的数据库版本升级.操作系统平台更换.服务器或磁盘 ...

  4. 如何使用一台PC搭建可以在线迁移的KVM学习环境

    本文解答以下问题: 如何用一台PC搭建KVM虚拟机的在线迁移实验环境? 如果对虚拟化是零知识,应该学习VMWare.XEN.HyperV还是KVM,或者是容器技术? 如何用一台PC搭建KVM虚拟机的在 ...

  5. OSS在线迁移服务剖析

    在前迁移说明 目前由于 OSS 数据迁移服务涉及到对目标的 OSS 要有很多 action 的 API 授权,为避免用户产生过多的学习成本,我们直接强制使用主账号进行迁移: 该服务正在公测中,目前仍在 ...

  6. openstack 在线repo

    openstack 在线repo https://repos.fedorapeople.org/repos/openstack/openstack-kilo/ posted on 2015-12-31 ...

  7. 云图说|华为云数据库在线迁移大揭秘

    传统模式下,数据迁移面临诸多挑战和风险,技术门槛高,耗时长,成本高. 更头疼的是需要长时间中断业务,企业损失大. 华为云推出数据复制服务DRS,在线迁移功能,可以有效避免传统场景下数据迁移带来的各种复 ...

  8. CentOS6.5部署KVM及实现在线迁移

    CentOS6.5部署KVM及实现在线迁移 一.前言 虚拟化技术已经成为未来计算机技术的一个重要的发展方向.Linux在虚拟化方面已经有了很多种解决方案:VMware.VirtualBox.Xen和K ...

  9. openstack冷迁移/Resize源码分析(二)

    接上一篇 openstack冷迁移/Resize源码分析(一) 执行冷迁移/Resize /nova_queens/nova/compute/manager.py @wrap_exception()@ ...

最新文章

  1. 团队作业4——第一次项目冲刺(Alpha版本)4.28
  2. Yann LeCun“隔纸对话”黄铁军:图灵机上的深度学习能模拟世界吗?
  3. canvas-js贝塞尔曲线代码在线生成工具
  4. Vivado级联Modelsim仿真Re-launch问题
  5. DirectX标准规定 DirectX和OpenGL的不同
  6. 数据库中Schema(模式)概念的理解
  7. ElasticSearch Java Api(一) -创建索引
  8. 2 Effect Hook
  9. 使用PHP创建一个REST API(Create a REST API with PHP)
  10. Spring Cloud Gateway一次请求调用源码解析
  11. WPF中退出时显示是否保存数据提示
  12. 对计算机的硬盘进行高级格式化,牛刀初试 高级格式化硬盘完全体验
  13. oralce数据库创建同义词
  14. JAVA反射性能约慢三个量级
  15. matlab的输入输出常见语句
  16. python全栈教程 pdf_马哥python全栈+爬虫+高端自动化课程大纲 (2018版) 全套视频教程【MP4】【65.22GB】...
  17. Oracle导出表结构(含表名、字段名、数据类型、是否为空、字段说明)至Excel(简单详细)sql语句的形式
  18. 字节架构师发布“绝版”Java并发实现原理剖析JDK源码
  19. 荣耀笔记本开机黑屏错误怎么U盘重装系统教学分享
  20. 网盘、云盘共享文件搜索引擎链接收藏目录

热门文章

  1. 成员缩写_青春有你2snh48成员都有谁 10名SNH48女团成员介绍
  2. ajax firefox,Jquery ajax不在firefox中工作
  3. python学生成绩管理程序设计总框图_学生成绩管理程序设计报告
  4. 【解决】Error:java: javacTask: source release 8 requires target release 1.8
  5. ux设计师怎样找同类产品_UX设计师UI设计师产品设计师和UX研究人员有何不同
  6. 【项目管理】工具--数据收集
  7. myeclipse优化
  8. 笔记-中项案例题-2019年下-整体管理
  9. 笔记-高项案例题-2018年上-计算题
  10. Jenkins启动时提示:Starting Jenkins Jenkins requires Java8 or later, but you are running 1.7.0