Live Migrate 操作 - 每天5分钟玩转 OpenStack(42)

Migrate 操作会先将 instance 停掉,也就是所谓的“冷迁移”。而 Live Migrate 是“热迁移”,也叫“在线迁移”,instance不会停机。

Live Migrate 分两种:

  1. 源和目标节点没有共享存储,instance 在迁移的时候需要将其镜像文件从源节点传到目标节点,这叫做 Block Migration(块迁移)

  2. 源和目标节点共享存储,instance 的镜像文件不需要迁移,只需要将 instance 的状态迁移到目标节点。

源和目标节点需要满足一些条件才能支持 Live Migration:

  1. 源和目标节点的 CPU 类型要一致。

  2. 源和目标节点的 Libvirt 版本要一致。

  3. 源和目标节点能相互识别对方的主机名称,比如可以在 /etc/hosts 中加入对方的条目。

  4. 在源和目标节点的 /etc/nova/nova.conf 中指明在线迁移时使用 TCP 协议。

  5. Instance 使用 config driver 保存其 metadata。在 Block Migration 过程中,该 config driver 也需要迁移到目标节点。由于目前 libvirt 只支持迁移 vfat 类型的 config driver,所以必须在 /etc/nova/nova.conf 中明确指明 launch instance 时创建 vfat 类型的 config driver。

  6. 源和目标节点的 Libvirt TCP 远程监听服务得打开,需要在下面两个配置文件中做一点配置。

/etc/default/libvirt-bin

start_libvirtd="yes" libvirtd_opts="-d -l"

/etc/libvirt/libvirtd.conf

listen_tls = 0
listen_tcp = 1
unix_sock_group = "libvirtd"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
auth_tcp = "none"

然后重启 Libvirtd 服务
service libvirt-bin restart

非共享存储 Block Migration

我们先讨论非共享存储的 Block Migration。流程图如下:

image180.png

  1. 向 nova-api 发送请求

  2. nova-api 发送消息

  3. nova-compute 执行操作

下面我们详细讨论每一个步骤。

向nova-api发送请求

客户(可以是 OpenStack 最终用户,也可以是其他程序)向API(nova-api)发送请求:“帮我将这个 Instance 从节点 A Live Migrate 到节点 B”

这里源节点是 devstack-compute1,目标节点是 devstack-controller,因为是非共享存储,记得将“Block Migration”勾选上。

这里还有一个“Disk Over Commit”选项,如果勾选了此选项,nova 在检查目标节点的磁盘空间是否足够时,是以 instance 磁盘镜像文件定义的最大容量为准;否则,以磁盘镜像文件当前的实际大小为准。

查看日志 /opt/stack/logs/n-api.log

nova-api 发送消息

nova-api 向 Messaging(RabbitMQ)发送了一条消息:“Live Migrate 这个 Instance” 源代码在 /opt/stack/nova/nova/compute/api.py,方法是 live_migrate。

nova-compute 执行操作

源和目标节点执行 Live Migrate 的操作过程如下:

  1. 目标节点执行迁移前的准备工作,首先将 instance 的数据迁移过来,主要包括镜像文件、虚拟网络等资源,日志在 devstack-controller:/opt/stack/logs/n-cpu.log

  2. 源节点启动迁移操作,暂停 instance

  3. 在目标节点上 Resume instance

  4. 在源节点上执行迁移的后处理工作,删除 instance

  5. 在目标节点上执行迁移的后处理工作,创建 XML,在 Hypervisor 中定义 instance,使之下次能够正常启动。

Instance 在 Live Migrate 的整个过程中不会停机,我们通过 Ping 操作来观察

可见在迁移过程中,Ping 进程没有中断,只是有一个 ping 包的延迟增加了。

下面我们再来看源和目标节点共享存储下的 Live Migrate。

共享存储 Live Migration

有多种方式可以实现共享存储,比如可以将 instance 的镜像文件放在 NFS 服务器上,或者使用 NAS 服务器,或者分布式文件系统。

作为学习和实验,这里我们采用 NFS 方案。其他共享存储方案对于 Live Migration 本质上是一样的,只是在性能和高可用性上更好。

搭建 NFS 环境

将 devstack-controller 作为 NFS 服务器,共享其目录 /opt/stack/data/nova/instances。 devstack-compute1 作为 NFS 客户端将此目录 mount 到本机,如下所示:

这样,OpenStack 的 instance 在 devstack-controller 和 devstack-compute1 上就实现共享存储了。

共享存储的迁移过程与 Block Migrate 基本上一样,只是几个环节有点区别:

  1. 向 nova-api 提交请求的时候,不能勾选“Block Migrate”

  2. 因为源和目标节点都能直接访问 instance 的镜像,所以目标节点在准备阶段不需要传输镜像文件,源节点在迁移后处理阶段也无需删除 instance 的目录。

  3. 只有 instance 的状态需要从源节点传输到的目标节点,整个迁移速递比 Block Migration 快很多。

具体的日志分析留个大家练习。

以上是 Live Migrate 操作的详细分析,下一节我们讨论 Evacuate。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)

Rebuild 可以恢复损坏的 instance。 那如果是宿主机坏了怎么办呢? 比如硬件故障或者断电造成整台计算节点无法工作,该节点上运行的 instance 如何恢复呢? 用 Shelve 或者 Migrate 可不可以? 很不幸,这两个操作都要求 i…

eclipse 全屏插件

eclipse-fullscreen 插件下载链接: http://code.google.com/p/eclipse-fullscreen/, 安装方式:将下载下来的压缩文件解压,将里边的jar包放到eclipse目录下的plugin文件夹中,重启eclipse即可。 在Fedora & Windows …

使用子模块实现三输入数的大小比较

使用子模块实现三输入数的大小比较 题目描述 在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块。在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层次性,方便后续的修改。 请编写一个子模块,将…

寻求神谕的词语:谈海日寒诗集《空山集》

诗人杨炼曾用两个“他者”概括了当代中国诗歌所面对的两个检验体系:“背后是中文古典诗歌杰作”,“面前是古今世界文学精品”1。他提出:“全球化语境中,我们能否找到——创造一种更深也更新的标准来判断作品?去建立那个…

批量给Linux服务器推送文件、执行指令的工具推荐 - wgcloud-bach-agent

wgcloud-bach-agent是wgcloud官方开发的一个工具,具有批量给Linux主机上传文件,执行指令的功能 当我们有一个文件,需要上传到很多主机,或需要在很多主机执行同一条指令的时候,这个工具就非常实用了,可以极…

Neutron Router 工作原理 - 每天5分钟玩转 OpenStack(142)

上一节我们创建了 router 连通了 vlan100 和 vlan101, 今天分析router是如何工作的。 首先查看控制节点的网络结构发生了什么变化: br-int 上多了两个 port: 1. qr-d295b258-45,从命名上可以推断该 interface 对应 router_100_101 的 interf…

访问 Neutron 外部网络 - 每天5分钟玩转 OpenStack(143)

前面我们学习了位于不同 Neutron subnet 的 instance 可以通过 router 通信,今天开始讨论 instance 如何访问外部网络。 这里的外部网络是指的租户网络以外的网络。租户网络是由 Neutron 创建和维护的网络。 外部网络不由 Neutron 创建。如果是私有云,外…

使用函数实现数据大小端转换

使用函数实现数据大小端转换 题目描述 在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。 请用函数实现一个4bit数据大小端转换的功能。…

创建 OVS 外部网络 ext_net - 每天5分钟玩转 OpenStack(144)

上一节完成连接外网的配置准备工作,今天就来创建 OVS 外部网络 ext_net。 进入 Admin -> Networks 菜单,点击 “Create Network” 按钮。 显示创建页面。 Provider Network Type 选择 “Flat”。 Network 填写 “external”,与 ml2_conf.…

Linux学习之zImage内核镜像解压过程详解

zImage内核镜像解压过程详解 收藏 zImage内核镜像解压过程详解 作者: 刘洪涛,华清远见嵌入式培训中心 讲师。 本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。 内核编译完成后会生成zImage内核镜像文件。关于…

4位数值比较器电路

4位数值比较器电路 题目描述:使用门级描述方式,实现4位数值比较器 某4位数值比较器的功能如下表 timescale 1ns/1nsmodule comparator_4(input [3:0] A ,input [3:0] B ,output wire Y2 , //A>Boutput wire Y1 …

将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)

上一节完我们创建了外部网络 ext_net,接下来需要将其连接到 Neutron 的虚拟路由器,这样 instance 才能访问外网。 点击菜单 Project -> Network -> Routers 进入 router 列表。 点击 router_100_101 的 “Set Gateway” 按钮。 在 “External Netw…

Xilinx_ISE和ModelSim的联合使用方法 / 从Xilinx ISE 14.7启动ModelSim时遇到的问题

解决方法: 前提是安装了 xilinx ise14.7 和modelsim se 10.1a 1〉从Windows的Start Menu开始,Xilinx ISE Design Suite 14.7 —〉EDK —〉Tools —〉Compile Simulation Libraries 按照提示编译好library,编译的library输出目录是&#xff…

ML2 配置 OVS VxLAN - 每天5分钟玩转 OpenStack(146)

今天我们开始学习 OVS 如何实现 Neutron VxLAN,关于 VxLAN 的概念以及 Linux Bridge 实现,大家可以参考前面相关章节。 Open vSwitch 支持 VXLAN 和 GRE 这两种 overlay network。因为 OpenStack 对于 VXLAN 与 GRE 配置和实现差别不大,这里只…

4bit超前进位加法器电路

4bit超前进位加法器电路 题目描述 采用门级描述方式,实现此4bit超前进位加法器,接口电路如下: timescale 1ns/1nsmodule lca_4(input [3:0] A_in ,input [3:0] B_in ,input C_1 ,output wire CO …

创建 vxlan 并部署 instance - 每天5分钟玩转 OpenStack(147)

上一节我们完成了 OVS VxLAN 的配置工作,今天创建 vxlan100_net 并部署 instance。 创建 vxlan100_net 打开菜单 Admin -> Networks,点击 “Create Network” 按钮。 显示创建页面。 Provider Network Type 选择 “VXLAN”。 Segmentation ID 即 VNI…

有限编码器电路

有限编码器电路 题目描述 timescale 1ns/1nsmodule encoder_0(input [8:0] I_n ,output reg [3:0] Y_n ); // always (*)begin // casex(I_n) // 9b111111111 : Y_n 4b1111; // 9b0xxxxxxxx : Y_n 4b0110; // 9b10xxx…

优先编码器

优先编码器 题目描述 8-3优先编码器的功能表 timescale 1ns/1nsmodule encoder_83(input [7:0] I ,input EI ,output wire [2:0] Y ,output wire GS ,output wire EO );reg [2:0]Y_reg;reg GS_reg;reg EO…

OVS vxlan 底层结构分析 - 每天5分钟玩转 OpenStack(148)

上一节创建了 vxlan100_net 并部署 instance,今天我们来分析底层网络结构。 控制节点 执行 ovs-vsctl show: br-int br-int 连接了如下 port: tap0d4cb13a-7a 是 vxlan100_net 的 DHCP 服务对应的 interface。 qvoa2ac3b9a-24 将 cirros-vm1 虚拟网卡连…

OVS VxLAN Flow 分析 - 每天5分钟玩转 OpenStack(149)

OVS 的数据流向都是由 Flow 规则控制的,今天我们就来分析 VxLAN 的 Flow 规则。 提个醒:这可能是本教程最烧脑的一节,lets rock it ! 下面分析控制节点上的 flow rule,计算节点类似。 br-int 的 flow rule br-int 的 rule 看上去虽…