【OpenStack(Train版)安装部署(十九)】之虚拟机扩容,迁移功能测试

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

1. 虚拟机扩容功能测试

        由于之前测试虚拟机迁移时出现了错误,查看schedule日志发现是计算节点被忽略掉了,感觉像是filter过滤器的设置问题,因此尝试修改配置。

        修改nova.conf中的配置:

scheduler_driver=nova.scheduler.filterscheduler.FilterScheduler
scheduler_available_filters = nova.scheduler.filters.all_filters
scheduler_default_filters = AvailabilityZoneFilter, RamFilter, DiskFilter, ComputeFilter

        重启Compute节点和Controller节点,重新测试虚拟机迁移功能依然是失败的,因此只能恢复刚才添加的配置,重新测试,依然是失败,查看nova-scheduler.log日志:

2021-10-11 10:33:44.937 2519 INFO nova.scheduler.host_manager [req-cec559e8-409d-4e8c-9b06-f56a0b9cbc0a 9942eb4321644336a0c7383d9f1c2bed a7d812868cb74f1a978035530f55f1d0 - default default] Host filter ignoring hosts: computer
2021-10-11 10:33:44.944 2519 WARNING nova.scheduler.filters.compute_filter [req-cec559e8-409d-4e8c-9b06-f56a0b9cbc0a 9942eb4321644336a0c7383d9f1c2bed a7d812868cb74f1a978035530f55f1d0 - default default] (localhost.localdomain, localhost.localdomain) ram: 3258MB disk: 32768MB io_ops: 0 instances: 0 has not been heard from in a while
2021-10-11 10:33:44.945 2519 INFO nova.filters [req-cec559e8-409d-4e8c-9b06-f56a0b9cbc0a 9942eb4321644336a0c7383d9f1c2bed a7d812868cb74f1a978035530f55f1d0 - default default] Filter ComputeFilter returned 0 hosts
2021-10-11 10:33:44.945 2519 INFO nova.filters [req-cec559e8-409d-4e8c-9b06-f56a0b9cbc0a 9942eb4321644336a0c7383d9f1c2bed a7d812868cb74f1a978035530f55f1d0 - default default] Filtering removed all hosts for the request with instance ID '739bd9ea-4b50-46ca-98ba-e0ae01d86119'. Filter results: ['AvailabilityZoneFilter: (start: 1, end: 1)', 'ComputeFilter: (start: 1, end: 0)']

        可以看到,首先计算节点computer就已经被忽略掉了,因此后续的操作都是无法进行的。

        在这种情况下怎样定位到错误呢?只有通过源码才能够定位到错误,因此根据日志中的报错情况“Host filter ignoring hosts: computer”,在百度中查询到该语句可能在nova的源码中,因此在OpenStack源码的/usr/lib/python2.7/site-packages/nova/scheduler目录下进行搜索:

find -type f | xargs grep "Host filter ignoring hosts"

        host_manager文件的get_filtered_hosts方法下:
在这里插入图片描述

        但是,这样是无法找到对应的错误的。

        nova的冷迁移migrate操作其实调用的就是执行resize修改实例大小操作,因此我们只需要查看resize的nova源码,查看到如下的源码代表着默认将当前的实例所在的Compute节点的host忽略,加入ignore_hosts中:
// 是否允许迁移到同一台主机, 默认为False

if not CONF.allow_resize_to_same_host:
filter_properties['ignore_hosts'].append(instance.host)

        终于真相大白,我们只需要修改nova.conf配置文件的allow_resize_to_same_host为true即可,重新启动Controller节点和Compute节点,发现Controller节点的IP地址竟然被修改了,因此设定Controller节点的IP为固定的IP,修改网卡配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33,指定固定的IP地址和子网掩码,添加如下的三行:

BOOTPROTO="static"
IPADDR=192.168.112.146
NETMASK=255.255.255.0

        在dashboard中重新执行resize操作,成功的话会出现如下的提示:
在这里插入图片描述

        接着会与用户进行交互,提示进行确认是否resize:

在这里插入图片描述

        点击确认后,flavor就直接切换为了新的flavor:
在这里插入图片描述

2. 虚拟机迁移功能测试

        启动一个虚拟机实例,在admin管理员权限下执行迁移实例操作,该虚拟机直接迁移失败了,查看compute节点的nova-compute.log日志得到UnableToMigrateToSelf错误,表示无法迁移到当前的Compute节点中。

        查看 /usr/lib/python2.7/site-packages/nova/compute/manager.py文件,搜索该错误得到如下的源码:

   4661         same_host = instance.host == self.host
   4662         # if the flavor IDs match, it's migrate; otherwise resize
   4663         if same_host and instance_type.id == instance['instance_type_id']:
   4664             # check driver whether support migrate to same host
   4665             if not self.driver.capabilities.get(
   4666                     'supports_migrate_to_same_host', False):
   4667                 # Raise InstanceFaultRollback so that the
   4668                 # _error_out_instance_on_exception context manager in
   4669                 # prep_resize will set the instance.vm_state properly.
   4670                 raise exception.InstanceFaultRollback(
   4671                     inner_exception=exception.UnableToMigrateToSelf(
   4672                         instance_id=instance.uuid, host=self.host))

        该源码表示着,如果要迁移到同一个host主机中,还需要check以下驱动是否支持迁移到同一个节点中,这个是设定在该驱动之中的参数“supports_migrate_to_same_host”,如果查询出该驱动不允许迁移到同一个host主机中,则抛出异常“UnableToMigrateToSelf”。

        该参数是从nova/virt/driver.py文件获取的,参数是supports_migrate_to_same_host,默认的参数是false。就是因为这个false参数导致的异常,怎样才能将该参数修改为true呢?

        尝试修改参数allow_migrate_to_same_host为true,表示允许迁移到相同的host节点中,但是好像没什么用啊。

allow_migrate_to_same_host=True

        推测可能是冷迁移操作和热迁移操作都需要在多个计算节点中进行,当前的实验环境只有单个计算节点,因此暂不测试迁移操作。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值