openstack 创建网络失败_OpenStack Nova秒级创建虚拟机方案

本文探讨了OpenStack中的Nova组件在管理虚拟机生命周期中的作用,特别是在创建虚拟机时涉及的本地LVM存储和远程分布式存储选项,如Ceph/SheepDog/GlusterFS。内容涵盖四种主要的启动方式和存储后端组合,并提到了OpenStack的最新版本更新和Ceph OSD故障排除的经验总结。此外,还讨论了与Docker、Kubernetes相关的安全工具以及云原生概念。
摘要由CSDN通过智能技术生成

OpenStack管理虚拟机生命周期的组件是Nova,Nova创建虚拟机从后端存储类型分为本地LVM存储和远程分布式存储(例如:Ceph/SheepDog/GlusterFS),从启动方式一般分为镜像启动和卷启动两大类,按启动方式和存储后端可以有4种组合:

组合1本地LVM + 镜像启动 此种方式,虚拟机镜像事先一般也会存放在远端的分布式存储上(Ceph或Swift)。当在计算节点首次创建虚拟机时,会从远端分布式存储下载镜像到计算节点做格式转换并缓存为base-image,然后复制完整的镜像到/var/lib/nova/instances/{instance-uuid}目录下作为系统盘,耗时跟镜像大小和带宽有关,一般约数分数以上。 如果在相同的计算节点上第二次以相同的镜像创建虚拟机,因为已经有了镜像缓存,不需要再到远端分布式存储下载镜像,直接从本地计算节点拷贝镜像到虚拟机启动目录作为系统盘,耗时跟镜像大小有关,一般也得数分钟以上。 组合2:本地LVM + 卷启动 此种方式,虚拟机镜像事先一般也会存放在远端的分布式存储上(Ceph或Swift)。当在计算节点首次创建虚拟机时,会从远端分布式存储下载镜像到计算节点做格式转换并缓存为base-image,然后调用cinder在控制节点以base-image创建可bootable的卷,最后以该卷启动虚拟机。耗时跟镜像大小和带宽有关,一般也得数分钟以上。 如果在相同的计算节点上第二次以相同的镜像从卷启动创建虚拟机,因为已经有了镜像缓存,不需要再到远端分布式存储下载镜像,直接调用cinder在控制节点以base-image创建可bootable的卷,最后以该卷启动虚拟机。耗时跟镜像大小和带宽有关,一般也得数分钟以上。 组合3:远程分布式存储Ceph + 镜像启动(采用默认配置) 此种方式,虚拟机镜像事先一般也会存放在远端的分布式存储Ceph上。当在计算节点首次创建虚拟机时,首先会从远程Ceph上下载镜像到该计算节点做格式转换并缓存为base-image,然后上传base-image到远程Ceph Rbd 的pool中作为系统盘,最后以CephRbd pool中的系统盘启动虚拟机。耗时跟镜像大小和带宽有关,一般也得数分钟以上。 在相同的计算节点上第二次以相同的镜像创建虚拟机,因为已经有了镜像缓存,不需要再到远端Ceph下载镜像,直接上传base-image到远程Ceph Rbd 的pool中作为系统盘,最后以CephRbd pool中的系统盘启动虚拟机。耗时跟镜像大小和带宽有关,一般也得数分钟以上。 组合4:远程分布式存储Ceph + 卷启动(采用默认配置) 此种方式,虚拟机镜像事先一般也会存放在远端的分布式存储Ceph上。当在计算节点首次创建虚拟机时,首先会从远程Ceph上下载镜像到该计算节点做格式转换并缓存为base-image,然后调用cinder通过base-image在远程Ceph Rbd 的pool中创建可bootable的启动卷,最后以Ceph Rbd pool中的卷启动虚拟机。耗时跟镜像大小和带宽有关,一般也得数分钟以上。 在相同的计算节点上第二次以相同的镜像以卷启动创建虚拟机,因为已经有了镜像缓存,不需要再到远端Ceph下载镜像,直接调用cinder通过base-image在远程Ceph Rbd 的pool中创建可bootable的启动卷,最后以Ceph Rbd pool中的卷启动虚拟机。耗时跟镜像大小和带宽有关,一般也得数分钟以上。 秒级创建虚拟机优化方案 在优化之前,如果按照上述4种组合任一一种来创建虚拟机,如果批量创建几百台虚拟机,因为有镜像的下载、上传或者拷贝流程,整个创建流程会非常耗时,有些会因为接口超时导致失败。 为了达到秒级创建虚拟机的性能,Glance、Cinder和Nova的后端存储统一以Ceph作为共享存储。Glance上传的虚拟机镜像会上传到Ceph images pool中,Cinder创建的卷会保存在Ceph volumes pool中,Nova系统盘保存在Cephinstances pool中。 如果是以镜像启动创建虚拟机,在同一个计算节点选择相同的镜像不论是第一次还是第二次创建虚拟机,会直接基于ceph images pool的镜像先做snapshot,然后基于该snapshot 进行clone(copy on write)到Cephinstances pool,最后以该系统盘启动虚拟机。利用ceph写时复制特性,不存在镜像的上传、下载和完整拷贝,所以创建速度非常快,可以达到秒级。 如果是以卷启动创建虚拟机,在同一个计算节点选择相同的镜像不论是第一次还是第二次创建虚拟机,会直接基于ceph images pool的镜像先做snapshot,然后调用cinder基于该snapshot 进行clone(copy on write)到Ceph volumes pool,最后以该卷启动虚拟机。利用ceph写时复制特性,不存在镜像的上传、下载和完整拷贝,所以创建速度非常快,可以达到秒级。   秒级创建虚拟机的优化步骤如下: 1.在controller控制节点上修改/etc/glance/glance-api.conf镜像配置文件,把show_image_direct_url 参数设置为True。 vim /etc/glance/glance-api.conf

66134fa92776279a3a74bc91a045ce12.png

注意:一定要在【 DEFAULT】下添加。 然后利用命令serviceopenstack-glance-api restart重启镜像管理服务。 2. 转换镜像格式,通过glance上传的镜像一定要是raw格式。 在上传之前需要命令转换好后上传,转换命令: qemu-img convert -O raw src-img.qcow2dst-img.raw 用命令行转换成raw格式,主要是解决如下no bootable device问题。

d6f2a0e48e594043766bb47397e0913d.png

  3.在计算节点上进入 /var/lib/nova/instances/_base/ 目录,清空该目录下所有的缓存镜像。由于后台程序会先检测该目录下有没有缓存镜像,如果有,会把该缓存镜像上传到ceph中,如果没有,直接在ceph中clone镜像。 步骤如下: [root@openstack _base]# cd/var/lib/nova/instances/_base/ [root@openstack _base]# ll -rw-r--r--. 1 qemu qemu 41126400 Jul 24 01:01d7fca384a7c355afa3b70667b60f04dd08cd6f35 [root@openstack _base]# rm -rfd7fca384a7c355afa3b70667b60f04dd08cd6f35 [root@openstack _base]# ll total 0   4.相关的流程源码如下:

636c0f9d5a37f9afcec33d874ff6b9a8.png

1a54c95a6c61772c8cad4eb75edbbac6.png

  [root@openstack ~]# vim /usr/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py

69994e39b965161f1da8424bacfe5963.png

[root@openstack ~]# vim /usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py

b9c7bcbdf2d13624dfa4839987a9803a.png

[root@openstack ~]# vim/usr/lib/python2.7/site-packages/glance/api/v2/images.py

0caf5d83ddbf4ec858e1d3e23d94f20a.png

  总结 上述介绍的不同种类的创建虚拟机的组合方式,从核心原理分析其实只有两类。一种是需要完整拷贝镜像,另一种是写时复制( copy on write)。 1. 完整拷贝镜像创建虚拟机 优点:是每个虚拟机独立,不会相互影响。 缺点:存在镜像下载、上传或者拷贝,创建速度慢。 2. 写时复制(copyon write) 优点:每次创建虚拟机都只有很小的增量文件,不存在全量镜像拷贝,创建速度很快。 缺点:以相同的镜像创建的所有虚拟机依赖共同的 base-image,如果base-image意外损坏或删除,上层依赖的虚拟机都会受到影响。 速度和安全性往往是一对矛盾体,两种方式需要做一定的权衡。可以在完整拷贝镜像创建虚拟机的方案中提升硬件性能,比如通过高配的磁盘和带宽来降低拷贝镜像的时间。也可以在写时复制( copy on write)的方案中,在虚拟机创建成功后的某个恰当时刻,通过后台执行ceph 的rbd flatten命令断开base-image和增量clone虚拟磁盘的依赖链,达到每个虚拟机相互独立。

 0e8773f1447c70834f09d474434e9b32.gif

了解新钛云服

招聘:高级运维工程师

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

上海某仓储物流电子商务公司混合云解决方案

新钛云服出品的部分精品技术干货

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?6c7b70632bf3a9f886cb57b138e554b6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值