阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于OpenStack的虚拟机在线迁移

466次阅读
没有评论

共计 4052 个字符,预计需要花费 11 分钟才能阅读完成。

虚拟机的迁移是指在源物理主机上运行的虚拟机操作系统及应用程序移动到目标物理主机上或虚拟机上,并且在目标主机上能够正常运行。在 openstack 中,openstack 自带虚拟机的迁移功能,允许一个正在 running 的虚拟机实例从一个 compute node 迁移到另一个 compute node。下面给大家推荐一篇相关的实战案例,作者是用友公有云技术总监,中国计算机学会高级会员,大数据专委会委员,前中科院副研究员。

以下是作者原文:

一直想和大家分享虚拟机的在线迁移,考虑到稳定性,我们在线上运行了几个月比较稳定后,再总结出来和大家分享。

大致描述一下场景:系统采用了计算存储松耦合结构,虚机的映像文件在远端共享存储上,所以迁移起来速度很快。在我们系统中,最快一个用了 6 秒,即完成了在线迁移,这是真正的 live migration,我们一边迁移,一边故意在虚机里写数据,也正常完成。

配置方案

1. 修改 Nova.conf 文件

 

添加:
image_cache_manager_interval=0
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_UNSAFE
修改:
vncserver_listen=0.0.0.0

2. 参与的计算节点机器名字都能 ping 通。

3. 修改计算节点上 /etc/libvirt/libvirtd.conf: 

before : #listen_tls = 0
after : listen_tls = 0
before : #listen_tcp = 1
after : listen_tcp = 1
add: auth_tcp = “none” 

4. 修改 /etc/sysconfig/libvirtd:

before :# LIBVIRTD_ARGS=”–listen”
after :LIBVIRTD_ARGS=”–listen”

5. 在源计算节点上修改要迁移虚机的 /var/run/libvirt/qemu/instance–xxx.xml 文件,删除 migrate-qemu-fd 这一行,将 vnc 参数修改成 0.0.0.0

6. 重启计算节点上 nova

7 备注:

1. 由于云机之前没有配置在线迁移,在迁移虚机之前,需要重启虚机。
2.. 因为计算节点上 libvirtd 的配置中增加了 auth_tcp=”none”,算是一个安全漏洞,需要寻找更安全的办法,或者在迁移完成之后,注释掉这行,重启 libvirt
3 已经编写了一个辅助程序自动做迁移
 

遇到的问题和解决办法

1. 虚机的 disk 的 cache mode 为 writethrough,迁移的时候报错

openstack 认为在 CentOS 上磁盘 cache mod 为 writethrough 时,迁移是不安全的。
解决的办法:在 nova.conf live_migration_flag 参数后面增加 VIR_MIGRATE_UNSAFE,官方在线迁移配置文件里没有这个参数。

2.qemu1.4 的一个 bug 导致迁移失败

迁移失败,在目的节点上 /var/log/libvrit/qemu/instances–xxxx.log 里:
char device redirected to /dev/pts/1 (label charserial1)
qemu: warning: error while loading state section id 2
load of migration failed
解决办法:
1. 在源计算节点上修改要迁移虚机的 /var/run/libvirt/qemu/instance–xxx.xml 文中删除 migrate-qemu-fd 这一行
2. 重启源计算节点上的 libvirtd
3. 然后再执行 nova live-migration 命令
这个操作已经编写了一个程序自动执行。

3.vncserver 的问题,需要重启虚拟机才可以迁移。

由于之前 Nova.conf 中 vncserver_listen= 计算机节点的 ip,所以在虚拟机 Kvm 进程中参数中 vnc= 计算节点的 ip,迁移的时候报错,在目的节点绑定不了源节点的 IP, 所以需要修改 Libvirt.xml 配置文件,重启虚机,然后才能进行迁移。
解决办法:
1. 在源计算节点上 /var/run/libvirt/qemu/instance–xxx.xml 文中将 vnc 的参数修改成 0.0.0.0
2. 重启源计算节点 libvirtd
3. 然后再执行 nova live-migration 命令
这个操作已经编写了程序来自动完成

4. 迁移完成后 console.log,disk 属主变成了 root/root

迁移完成后,发现虚机的 console.log 和 disk 文件属主由 qemu.qumu 变成了 root.root,这个估计是 openstack 迁移程序的问题,这个问题目前没有影响虚机。
解决办法:
修改文件属主,这个操作已经编写了程序来自动完成

5. 源节点和目的节点 cpu 不兼容问题

迁移失败,在 /var/log/nova/compute 的日志:
“InvalidCPUInfo: Unacceptable CPU info: CPU doesn’t have compatibility.\n\n0\n\nRefer to <a href=”http://libvirt.org/html/libvirt-libvirt.html#virCPUCompareResult\n” ]”=”” style=”cursor: pointer; color: rgb(0, 102, 204); text-decoration: none;”>http://libvirt.org/html/libvirt-libvirt.html#virCPUCompareResult\n”]
解决办法:
目前还没有解决办法

6. 目的节点内存为负,

迁移失败,从控制节点的 api.log 上输出的错误是目的节点内存为 -3400,不能满足迁移的需要。
解决办法:
用 nova 命令指定在该计算节点上创建虚机,能够成功。估计是迁移时候的调度算法和创建虚机时的调度算法不一致。

7. 错误日志,在 2.4 上 api.log

迁移时候一般看的日志有:
1. 目的节点上的 /var/log/libvirt/qemu/instances–xxx.log
2. 目的节点上的 /var/log/nova/compute.log
3. 源节点上的 /var/log/nova/compute.log
有时候迁移失败,命令行执行后报错:
ERROR: Live migration of instance bd785968-72f6-4f70-a066-b22b63821c3b to host compute-13 failed (HTTP 400) (Request-ID: req-180d27b5-9dc7-484f-9d9a-f34cccd6daa2)
但在上述的三个日志文件中都看不到任何的错误信息。
解决办法:
在控制节点或者是在操作迁移命令的节点上 /var/log/nova/api.log 有错误信息

走的弯路

1. 尝试不用修改 nova.conf 里的 vncserver_listen 参数为 0.0.0.0,

将 /var/run/log/libvirt/qemu/instances–xxx.log 里的 vnc 改成目的节点的 ip,重启 libvritd,然后进行迁移,可以成功,但如果迁移失败,当需要重新虚机的时候,虚机启动失败,在 /var/log/libvrit/qemu/instances-xx.log 的错误是
Failed to start VNC server on `172.18.2.15:0′: Failed to bind socket: Cannot assign requested address
而 /mnt/instances/instance–xxx/libvirt.xml 里没有修改成目的节点的 Ip。不知道这个参数被保存到了哪里

2.vnc 端口问题

在一次迁移失败后,在目的节点 /var/log/libvirt/qemu/instance–xxx.log 里的错误是:
2013-11-05 05:42:39.401+0000: shutting down
qemu: terminating on signal 15 from pid 10271,
猜想是由于虚机在源节点上的 vnc 监听端口在目的节点上被占用,所以导致启动不了。后来在其他机器上做了测试发现,在迁移到目的节点后 vnc 的端口自己会调整。

参考:

How to Migrate an Instance with Zero Downtime: OpenStack Live Migration with KVM Hypervisor and NFS Shared Storage

相关阅读

在 Ubuntu 12.10 上安装部署 Openstack http://www.linuxidc.com/Linux/2013-08/88184.htm

Ubuntu 12.04 OpenStack Swift 单节点部署手册 http://www.linuxidc.com/Linux/2013-08/88182.htm

OpenStack 云计算快速入门教程 http://www.linuxidc.com/Linux/2013-08/88186.htm

企业部署 OpenStack:该做与不该做的事 http://www.linuxidc.com/Linux/2013-09/90428.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4052字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7955296
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...