聊聊学习openstack的感受


dg-publish: true

dg-permalink: "聊聊学习openstack的感受"
dg-created: 2021-01-09

🧏‍♀️从云桌面开始


从事openstack工作前,我从事的是云桌面相关的工作,是基于kvm+libvirt+qemu这一套,在此之前,我对云计算可以说还是一无所知的。随着一步步的深入,我知道,云计算的核心,是虚拟化。不管是重量级的虚拟机,还是轻量级的docker。

我使用过中兴的云桌面系统,当时公司用的这个进行办公,不过后来迁移到了我们自研的云桌面了。也接触过深信服的云桌面等。当时的老东家,自研的云桌面,不得不说,这套产品还是很好的。

后来在公司也使用过阿里云,华为云,金山云这些公有云。他们底层的实现,依旧是虚拟化。可以说,没有虚拟化,就没有所谓的云计算。虚拟化相关的,就不多说了。

云桌面不像其他云服务商,侧重于服务端,事实上,它更侧重于客户端。我们需要关注多个模块,比如不同操作系统的虚拟机,比如不同的终端,比如服务端各个模块,主机代理,比如底层的kvm+libvirt+虚拟化,总之,在我接触openstack之前,我需要关注的东西很多,也很杂。当时在那一家公司,也做了很多事情,也很杂。这个后面专门介绍。

🔊接触openstack


接触openstack,是因为公司接了的项目,基于openstack开发的云管理平台,我提前熟悉了搭建,原理,当然一开始也是花了很大力气才搭建起来。对openstack还不是很熟悉,还自告奋勇的参与了云平台的研发,这个系统基于fastapi框架。那时,我钟情于python,觉得openstack是如此高大上,而困难的东西。我尝试着自己搭建环境,第一次是用devstack进行搭建,遇到各种报错。

然而没多久,我因为不得已的原因,离职了,在老板的极力劝说下,我去了合作公司,还是这个项目,还是同一批人进行合作。这才真正的对openstack有了进一步的了解。

于是,我的工作重点,移到了服务端,而不在像之前,需要关注的东西那么多那么杂。openstack虽然把我的研究范围缩小了,可越深入,我发现,里面涉及的东西也不少且难。在此之前,我也有了解过其他基于openstack进行二开而产生的云平台,与我上一家公司的云平台进行了对比,大体功能上是差不多的。甚至连页面布局都是类似。当然,现在很多的系统都是这种布局方式。

😀我在openstack中学到了什么


环境搭建

这可以说是我足够引以为傲的事情了,我使用过packstack搭建过标准的openstack环境,也使用packstack搭建过基于龙芯架构和x86架构的混合环境,但更多的是,基于centos8+kolla-ansible 容器化部署openstack victoria版本。

俗话说,百炼成钢,我在使用centos8+kolla-ansible 容器化部署openstack victoria版本时,真的是搭建过不少于100次了!所以说,为什么我能够那么快速的把环境搭建好,我一步步的试错,一步步的找问题,找原因,环境搭建好了,测试,摧毁,再继续搭建!这样反反复复多次,也写了相关的自动化脚本,从单节点到多节点,可以说,这套搭建已经相对规范和成熟了。也是我学到了最多的东西之一。在线搭建的脚本和步骤已经开源出来了。后面有时间的话会补充一份文档。我的github上已经写的比较详细了。

online-deploy ~这是我的开源出来的在线部署脚本。

在这套系统熟练了以后,再搭建其他任何环境,真的是小儿科了,一通百通。这一点我深有体会,这么难的都会了,再去搞k8s,搞其他的,不是手到擒来吗。不要那么妄自菲薄!

镜像制作

搭建熟练以后,就涉及到虚拟机镜像制作了。qcow2,raw,以及vmdk转qocw2和raw,需要制作标准的镜像,里面注意点很多。

比如,要不要压缩?最终保留什么格式的?

比如,windows类系统,各种驱动的问题,

比如,标准镜像,要安装cloudinit,以及qga等,方便修改密码

比如,vmdk转raw和qcow2,里面的注意点,windows和linux又是不一樣的

比如,使用virt-manager制作镜像的注意点

比如,国产操作系统,龙芯,UOS,优麒麟等等镜像的制作注意点

比如,镜像磁盘自动扩容的问题

这些,经过反反复复的测试和操作,我也已经形成了一套规范的标准的制作流程了。里面的细节太多太多,我就不在这里多说了。我在 这里 记录了大概63篇我工作遇到的问题。

openstack的使用

在正式接触openstack之前,我对这个平台还是不是很了解的。在此之前,我主要在老东家接触的是云桌面,这一套也是比较复杂的。涉及的模块很多。而openstack和所谓的各种云,金山云,华为云,京东云,阿里云等等,主要侧重点在服务端。在这之前虽然我使用并且维护过这些云服务器,当我真正使用openstack这个开源项目后,接触到的是不一样的世界!

问题排查能力的提升

在环境搭建以及使用openstack过程中,会遇到各种问题,比如镜像上传等等,为什么速度慢,要经历哪些过程?这些不同模块,不同节点的日志的定位就很重要了。需要很精准的定位能力。

而openstack的模块和日志之多超乎我的想象了。在后面的学习Go后,才接触过有很多日志平台,可以帮助我们定位问题,这种平台在openstack里还并未引入。我需要一个一个节点去打开各个模块的日志去定位和分析问题出现在了哪里。

很多问题都是相通的,学会了openstack的搭建,问题的定位。再去看其他系统,就会觉得很简单!甚至一看就明白!我在后来去看南京全球软件大会的时候,有一个复旦大学的学生现场演示了一个demo,那个是基于华为的一个开源项目,和openHarmony系统做的一个系统,我以前没有接触过这个东西,但是我听的时候,一看就看明白是怎么回事了,这真的得益于我在平时工作中的各种环境的搭建和问题定位,一通百通

🤓后悔学了openstack吗?


虽然现在由于各种原因,放弃了openstack这个方向。更倾向于更加轻量级的容器级别的虚拟化等。单纯就学习和工作接触到openstack,我并不后悔在上面花费了时间和精力。因为这是一个不一样的世界,至少,我知道,我做过,甚至,我还对其中的很多操作很熟悉。尤其是底层的虚拟化的东西又加深了理解。这些只有在工作中不断去实践才能学到的,openstack毕竟是需要大量服务器资源才可以学习和实践的东西,而个人是很难有这个条件的。

💭我为什么放弃?


  • 一个是因为做openstack的公司太少,基本倾向于大公司多一些,而小公司很难做的起来。我了解的小公司,也基本放弃了,甚至转型到zstack等。更多的是使用k8s+docker这样的轻量级虚拟化。出于我实际就业的原因,我放弃了这一条路,至于学习过,放弃过,我并不后悔我的选择。甚至对它产生了感情。毕竟我花了那么多时间和精力去学这个东西。
  • 另外,是因为openstack系统过于庞大,过于重量级了。不管是从搭建,维护,使用,还是进行二次开发,它这个系统涉及的东西太多太多,运维也罢,开发也罢。很难对它有很全的了解。最多只是了解其中某个模块和组件。它涉及的东西过于庞大,系统也过于复杂。这并不符合我的理念,当然,涉及云这一块,可能就没有简单的。
  • 关于openstack的工作,大都以运维为主,可能需要出差;研发方面的工作机会极少。而我自从学了go后,如果是做比较大规模的系统,还是习惯go的设计理念和工程化的思想。py去做这种系统,有点庞大和复杂,会很绕。无形间增加了难度。我更倾向于把py当成脚本用,很好用。
  • 另外,openstack开源社区庞大,但是很乱。一直没有一个统一的标准。

出于上面主要原因,我止步研究openstack,我对它的了解,止步在了几百次的部署研究,各种镜像的转换和研究,还有平台的使用和各种问题定位,和简单的调用API进行开发等等(这里面内容真的太多太多,我无法全部将我掌握的详细列出来,可以看我下面的笔记大致了解我掌握的程度,当然,笔记不涉及机密以及自研的系统,全部基于开源的)。把战场转向了我感兴趣的方面,也打开了另外的一扇门。

相关推荐
数据的世界0126 分钟前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐40 分钟前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO3 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A3 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒3 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash34 小时前
提升专业素养的实用指南
学习·职场和发展
1 9 J4 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
6.946 小时前
Scala——身份证号码查询籍贯
学习·scala
爱吃西瓜的小菜鸡6 小时前
【C语言】矩阵乘法
c语言·学习·算法
初学者7.7 小时前
Webpack学习笔记(2)
笔记·学习·webpack