专栏首页运维ABCOpenStack实践(十一):Instance Live Migrate and Evacuate

OpenStack实践(十一):Instance Live Migrate and Evacuate

前言:

    Live Migrate(动态迁移),是指在保证客户机上应用服务正常运行的同时,让客户机在不同的宿主机之间进行迁移,分为无共享存储的Block Migration(块迁移)方式和有共享存储两种方式,本文为有共享存储迁移方式。

    Migrate前提是计算主机的nova-compute服务正常,当某个计算主机宕机或其它异常导致服务不可用时,这时可以进行Evacuate操作,将实例迁移至其它主机。

环境

openstack版本

pike

控制节点主机

openstack-controller(ubuntu 16.04.5) 172.27.34.37

计算节点主机

openstack-computer(ubuntu 16.04.5) 172.27.34.38

instance01

cirros0001(172.16.2.3)

instance02

cirros0002(172.16.2.6)

ubuntu安装详见Ubuntu16.04.5以lvm方式安装全记录

openstack安装详见OpenStack实践(一):Ubuntu16.04下DevStack方式搭建p版OpenStack

Flat网络搭建详见:OpenStack实践(三):Linux Bridge方式实现Flat Network

Live Migrate部分

修改nova.conf

修改配置文件nova.conf

stack@openstack-controller:~$ view /etc/nova/nova.conf 
[vnc]
#vncserver_listen = 127.0.0.1server_listen=0.0.0.0

重启计算服务

root@openstack-controller:~# systemctl restart devstack@n*

配置hosts文件

配置个计算节点hosts文件,使之能相互识别主机名

root@openstack-controller:/# more /etc/hosts

免密访问

各计算节点的root用户能免密访问应用用户stack

root@openstack-controller:/# ssh-keygen  -t rsa
root@openstack-controller:~# ssh-copy-id  -i /root/.ssh/id_rsa.pub stack@172.27.34.38

密码测试

root@openstack-controller:~# ssh stack@172.27.34.38

libvirt配置

本次实验无需对/etc/default/libvirt-bin和/etc/libvirt/libvirtd.conf文件进行额外配置,采用默认qemu+ssh方式传输。

验证连通性

root@openstack-controller:~# virsh -c qemu+ssh://stack@openstack-computer/system list  --all

配置nfs服务

nfs服务器配置

[root@centos7 ~]# mkdir -p /opt/stack/data/nova/instances
[root@centos7 ~]# chmod -R 777 /opt/stack/data/nova/instances
[root@centos7 ~]# view /etc/exports
/opt/stack/data/nova/instances  *(rw,sync,fsid=0,no_root_squash)
[root@centos7 ~]# exportfs -r
[root@centos7 ~]# exportfs -v
/opt/stack/data/nova/instances
                <world>(sync,wdelay,hide,no_subtree_check,fsid=0,sec=sys,rw,secure,no_root_squash,no_all_squash)

客户端挂载

各计算节点都执行如下操作

安装nfs软件

root@openstack-controller:~# apt-get install nfs-common -y

测试共享目录

root@openstack-controller:~# showmount -e 172.27.9.181
Export list for 172.27.9.181:
/opt/stack/data/nova/instances *

挂载

root@openstack-controller:~#  mount -t nfs 172.27.9.181:/opt/stack/data/nova/instances /opt/stack/data/nova/instances

开启自动挂载

root@openstack-controller:~# view /etc/rc.local
mount -t nfs 172.27.9.181:/opt/stack/data/nova/instances /opt/stack/data/nova/instances

nfs搭建详见:Centos7下NFS服务器搭建及客户端连接配置

Live Migrate

查看准备迁移的实例

该实例迁移前位于controller节点,为验证是热迁移,cirros01开启ping服务

开始迁移

目标节点选择computer,由于是共享存储方式实现本实验,不勾选‘块设备迁移’选项。

迁移

迁移完成

实例由controller节点成功迁移至computer节点

ping服务在迁移过程中未中断。

命令方式

root@openstack-controller:~# nova live-migration d0d5bc75-da89-46a8-be79-1e2639f9eaf8  openstack-controller

d0d5bc75-da89-46a8-be79-1e2639f9eaf8为实例id,openstack-controller为目标计算节点。

日志分析

查看实例id和req id

查看实例id和req id以便于日志定位

源节点nova-api发送消息

root@openstack-controller:~# journalctl -f --unit devstack@n-api.service

目标节点迁移准备

源节点暂停实例启动迁移

目标节点恢复实例

源节点完成迁移并释放资源

Evacuate部分

关闭计算节点openstack-computer

root@openstack-computer:~/.ssh# init 0

查看计算节点状态

查看实例名和所属计算节点名

root@openstack-controller:~# nova list --fields id,name,status,instance_name,host

执行evacuate 

root@openstack-controller:~# nova evacuate  80b8a5ff-5082-4864-b05e-5766c144d2b4  openstack-controller

将实例80b8a5ff-5082-4864-b05e-5766c144d2b4由计算节点openstack-computer迁移至openstack-controller

如果同主机做evacuate操作会报错:The target host can't be the same one,如果结算节点未宕机就迁移,则报错:Compute service of openstack-computer is still in use

Evacuate操作完成

登陆实例

实例恢复后密码、ip、主机名都不变。

日志分析

nova-api

nova-scheduler

nova-computer

本文参考

https://docs.openstack.org/nova/queens/admin/configuring-migrations.html#section-configuring-compute-migrations

https://docs.openstack.org/nova/queens/configuration/config.html

https://docs.openstack.org/nova/pike/admin/evacuate.html

https://blog.51cto.com/cloudman/1786423

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux常用命令

    # sed -i "s/dirback/DIRBACK/g" openstacks.text

    yaohong
  • JVM堆引发swap的情况分析

    虚拟机技术可以使得一个只有1g物理内存的机器可以运行总共需要4g内存的任务,主要方法是通过虚拟内存和物理内存映射来实现的,当物理内存不够用的时候,可以通过swa...

    春哥大魔王
  • Spring事务监控(分布式事务1) 顶

    { "msg": "success", "code": "200", "body": { "id": 1, ...

    算法之名
  • Ubuntu下编译Opencv4.0及opencv_contribute模块步骤详解

    编译环境:ubuntu16.04 LTS Opencv版本:opencv4.0.1+opencv4.0.1 contribute

    OpenCV学堂
  • 每日五分钟,玩转JVM(三):线程独占区

    如果我们对计算机组成有所了解,那么我们一定会知道在计算机中有一块儿特殊的区域,称之为寄存器,寄存器包括了指令寄存器和程序计数器,这两样位于CPU中,作为程序运行...

    Vi的技术博客
  • golang sql 数据库链接

    copy_left
  • Docker入门-介绍和安装

    Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并...

    小码农薛尧
  • Centos7笔记 | 硬盘、Parted 分区、mount命令、Swap分区的扩展、、文件系统详解、

    硬盘设备是由大量的扇区组成,每个扇区容量512字节,第一扇区最为重要,保存主引导记录和分区表信息。分别是主引导记录占用446,分区表占用64字节,结束符2字节,...

    网络技术联盟站
  • Wordpress建站:宝塔面板好用的Linux服务器面板安装教程

    越来越多的人选择个人建站,个人站长其实门槛很低的,但是有些朋友觉得Linux服务器的各种命令脚本自己没法搭建环境。今天给大家推荐一个不错的Linux面板工具,宝...

    wordpress建站吧
  • Docker入门

    上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解

    Criss@陈磊

扫码关注云+社区

领取腾讯云代金券