OpenStack平台调度策略优化
OpenStack平台报错分析
在OpenStack平台经历大并发的时候,比如同一个平台,大量的用户同时创建云主机(单个用户创建大量云主机不会触发此种现象),会达到云平台的性能瓶颈,导致创建云主机报错。
大量用户同时创建云主机,会对云平台的两个服务造成性能瓶颈,一个是RabbitMQ,当RabbitMQ达到瓶颈时,会报如下错误:
ERROR oslo.messaging._drivers.impl_rabbit [req-eb79ea09-247e-49e0-960b-0896ef978661 - - - - -] [303415c0-e494-4ea2-8158-d66d4165600d] AMQP server on controller:5672 is unreachable: timed out. Trying again in 10 seconds.: timeout: timed out
另一个就是DHCP。本案例重点讨论DHCP报错的情况,不考虑RabbitMQ的性能瓶颈。DHCP报错信息如下:
WARNING nova.compute.manager [req-8d9240cd-6a47-4979-a289-bdd58d399f0a 891c061e4aea4af8909a4affe0c24f92 c509a52800de4902845460fcc5318f3f - 8d899afee33641e0a094f85fbeb9b2c6 8d899afee33641e0a094f85fbeb9b2c6] [instance: 374aa944-6cd7-4dbf-a741-5bd44623919d] Received unexpected event network-vif-plugged-b803941a-c3ae-45d7-b962-13ba1ff00a31 for instance with vm_state active and task_state None.
在这种情况下,因为大量的创建云主机,导致获取IP地址超时,然后就发生了如上的报错。
注意:这个报错还和计算节点的性能有关,大量创建云主机的时候,计算节点如果没有创建过该镜像的云主机,会先从控制节点复制镜像到计算节点,这也会导致速度变慢。而且在创建大量云主机的时候,对计算节点的硬盘也是一个考验,如果硬盘性能差的话,也会导致创建速度慢,大量排队,超时等现象。
解决策略
在解决问题之前,首先了解创建云主机的过程,在创建虚机过程中,nova-compute会调用wait_for_instance_event函数(nova/compute/manage.py)进行network-vif-plugged的事件等待。
在nova-compute配置文件中有两个与该事件相关的参数- vif_plugging_timeout、vif_plugging_if_fatal,前者是等待事件的最大时间,后者是处理超时异常的方式。若在规定时间内,nova-compute接受到了事件响应,那么虚机可正常创建,那么当超时现象发生时,nova-compute会根据vif_plugging_is_fatal的配置采取两种处理方式。
若超时发生,并且配置文件中vif_plugging_is_fatal为True,nova首先执行guest.poweroff,停止qemu进程;然后执行cleanup函数,先清除网络资源,使用函数_unplug_vifs,删除plug_vifs函数创建的ovs port,ovs agent检测到了删除端口的事件然后通知neutron-server删除neutron db中的port信息,最后抛VirtualInterfaceCreateException。
如果vif_plugging_is_fatal为False,即便发生eventlet.timeout.Timeout异常,创建过程也会继续。然后等虚拟机创建成功后,依然可以拿到IP地址。
通过上述虚拟机创建的过程,对于上述云平台发生的错误,就有了解决的思路,通过修改/etc/nova/nova.conf配置文件,将vif_plugging_is_fatal参数由true改为false
在控制节点,修改/etc/nova/nova.conf配置文件
[root@controller ~]# vi /etc/nova/nova.conf
找到如下这行
#vif_plugging_is_fatal=true
将该行的注释去掉,并将true改为false,修改完之后如下:
vif_plugging_is_fatal=false
保存退出nova.conf,最后重启nova服务,也可以重启所有服务
[root@controller ~]# openstack-service restart
等待重启完毕即可。通过该参数的修改,可解决在大并发量创建虚拟机时,因排队超时导致虚拟机获取不到IP地址的报错
OpenStack平台调度策略优化的更多相关文章
- OpenStack平台镜像优化
在使用打快照方式制作镜像后,镜像的大小会变得非常大,比如一个基础的CentOS镜像大小为400M左右,但是使用打快照方式制作的镜像大小会有1个G左右,具体的大小还要根据安装的东西来实际情况实际分析. ...
- openstack 平台P2V迁移
目录 [Openstack]P2V迁移 一.前言 二.前提准备 三.操作步骤 1.安装迁移中转机 2.配置中转机 3.创建存储池(可选) 4.制作virt-p2v的 U盘引导启动工具 5.操作物理机, ...
- 性能测试平台效率优化的一次经验(python版)
在做性能测试平台的优化过程中,由于启动任务相对其他测试任务比较频繁,而目前30次两个包的交叉对比(30次)测试需要耗时30分钟整,因此打算优先对测试流程做一次优化,将测试时间消耗降低到20分钟. 由于 ...
- Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载)
Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载) 说明:Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构,我采用以下三种维度来讲解 1. 代码层面. 2. 数 ...
- OpenStack平台功能性测试工具Tempest安装
社区对OpenStack平台功能性的测试工具采用Tempest,性能测试采用Rally. 1.什么是Tempest tempest├── api # API的测试集├── cli # OpenStac ...
- OpenStack平台的使用
一.OpenStack平台的使用 使用双节点部署,192.168.16.10为控制节点.192.168.16.20为计算节点. (一).创建镜像 1.在控制节点中找到qcow2镜像 [root@con ...
- 使用Ansible部署openstack平台
使用Ansible部署openstack平台 本周没啥博客水了,就放个云计算的作业上来吧(偷个懒) 案例描述 1.了解高可用OpenStack平台架构 2.了解Ansible部署工具的使用 3.使用A ...
- v2v-VMware/VSphere中虚机离线迁移至openstack平台
先决条件 exsi到openstack的迁移,分为两种,一种是静态迁移,另一种是在线迁移. 静态迁移(offline migration)也叫做常规迁移,离线迁移.在迁移之前将虚拟机暂停,同时拷贝虚拟 ...
- 移动平台unity3d优化
目录(?)[-] Focus on GPUs 着眼于GPU Good practice 优秀的实践 Sharer optimizations 着色器优化 Focus on CPUs 着眼于CPUs G ...
随机推荐
- 列举 spring 支持的事务管理类型?
Spring 支持两种类型的事务管理: 1. 程序化事务管理:在此过程中,在编程的帮助下管理事务.它为您提供极大 的灵活性,但维护起来非常困难. 2. 声明式事务管理:在此,事务管理与业务代码分离.仅 ...
- 如何在 Microsoft word中插入代码
一.工具 方法1.打开这个网页PlanetB; 方法2.或者谷歌搜索syntax highlight code in word documents,检索结果的第一个.如下图: PS. 方法1和2打开的 ...
- visual studio 2019工具里添加开发中命令提示符的方法
最新新装了visual studio 2019,发现默认的没有开发者命令提示符 现将添加步骤描述如下: 从VS2019菜单选择"Tools",然后选择"外部工具" ...
- 横竖屏切换android:screenOrientation属性的使用
在开发android的应用中,有时候需要限制横竖屏切换,只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制. android:sc ...
- idea怎么创建python项目
前言 python是一种功能强大和适用面很广的开发语言,在大数据应用和机器学习日益流行的年代,python凭借其简洁.易用和可扩展性获得很多用户的支持,近年来使用率高速增长.python环境下,集成了 ...
- P7683 [COCI2008-2009#5] KRUSKA
洛谷上这道题的第一篇题解.上海加油. 题目大意 Aladdin 已经厌倦了宫殿里的生活.他有一份稳定的工作,他的妻子 Jasmine 和孩子们都在路上,生活变得单调.在这一切的驱使下,他决定在安顿下来 ...
- 服务器jupyter连接不上主机
首先安装jupyter pip3 install jupyter -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 然后 ...
- Docker的简介
前言 Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源. 何为Docker? ...
- SpringMVC获取请求参数-集合类型
1.创建User实体类 ```java public class User { private String username; private int age; public String getU ...
- 招商银行 KubeVela 离线部署实践
招商银行云平台开发团队自 2021 年开始接触 KubeVela,并探索 KubeVela 在招商银行云平台的落地实践,借此提升云原生应用交付与管理能力.同时因为金融保险行业的特殊性,网络安全管控措施 ...