到目前为止,我对OpenStack还不太了解,只知道OpenStack本身是一个云管理平台(什么是OpenStack?)。那作为云管理平台,我能想到最实际的用途就是管理虚拟机,但是,OpenStack本身并不提供虚拟化功能,而是依赖于底层的Hypervisor(如KVM、Qemu、Xen等)来提供虚拟化能力。
KVM是OpenStack中最常用的Hypervisor之一,是一种全虚拟化解决方案,可以提供高性能、高效率和安全的虚拟化环境(KVM部署初体验)。通过上次实验(如何在Ubuntu 23.10部署KVM并创建虚拟机?),我们已经在Ubuntu 23.10上部署好了KVM虚拟化环境。
OpenStack官方介绍的组件及工作原理图如下所示。Nova是OpenStack的主要计算引擎,负责实例的调度、创建和终止。Nova支持各种管理程序,包括QEMU/KVM、Hyper-V、VMware ESXi和Xen。
那么,如果我们要创建或管理虚拟机,则需要将Nova与KVM结合使用,来获取高效、灵活和可靠的虚拟化服务。
首先,我们需要安装OpenStack。在OpenStack文档中心,我们可以看到安装文档分为了Mitaka和Liberty两个版本。
经过了解,Mitaka和Liberty是OpenStack的两个不同的版本。Mitaka版本是在2016年发布的第13个版本,而Liberty版本则是在2015年发布的第12个版本。所以,Mitaka版本可能包含更多新功能和改进,具有更精简和更稳定的架构。
大概搜了一下,主要差异包括Mitaka改善了网络配置、提高了整体稳定性和性能、支持Python 3、支持IPv6、支持网络连接服务插件等,并改进了弹性伸缩功能,因此它可能比Liberty版本更稳定,那我们就选择Mitaka版本吧。
按照官网手册,最小的生产结构需要2个节点来部署。
从名称来看,节点2主要用于提供对象存储服务,对象存储服务用来存储账号、容器和对象;节点1还可以提供块存储服务,块存储服务和共享文件系统用来向实例提供服务。对象存储和块存储是两种不同的存储方式。对象存储是一种基于文件的存储方式,将数据存储为文件,每个文件都有一个唯一的标识符和元数据。块存储将数据存储为一组块,每个块都被分配一个唯一的标识符,但不包含任何元数据。
块存储的优点在于,它的读写速度更快,适合于高性能应用和需要快速访问大量小文件的应用程序;但是它很难扩展并且管理起来比较困难。对象存储的优点在于,它更容易扩展和检索数据,因为它可以根据需要自动分布数据,并且可以根据元数据快速检索数据。
而从网络上来看,我们直接选择私有网络就行了,私有网络比公有网络多了一个L3 Agent的选项,增加了启用self-service overlay分段方法的三层路由服务,比如VXLAN。此外,它使用NAT路由虚拟网络到物理网络。所以,私有网络架构基本可以满足我们的使用需求求。
在私有网络架构中,实例可以连接到自服务网络,自服务网络可以完全在OpenStack环境中或者通过外部网络使用NAT提供某种级别的外部网络访问。
所以,从架构图来看,宿主机仅使用一个网卡好像也是可以的,直接作为管理网络接口使用。
按照推荐配置,建议将节点主机名设置为controller。并向/etc/hosts文件添加以下内容:
# controller 192.168.1.155 controller # compute1 192.168.1.155 compute1 # block1 192.168.1.155 block1 # object1 192.168.1.155 object1
一些发行版本在/etc/hosts文件中添加了附加条目,将实际主机名解析到另一个IP地址如127.0.1.1。为了防止域名解析问题,我们需要注释或者删除这些条目,但不要删除127.0.0.1条目。
验证到 Internet 和各个节点的连通性。
按照官方提示,建议禁用或移除所有自动更新的服务,因为它们会影响到我们的OpenStack环境。
接下来,我们先启用OpenStack库。
apt-get install software-properties-common add-apt-repository cloud-archive:mitaka
哦吼,搞错了。Mitaka版本的cloud-archive只支持Trusty版本的Ubuntu,也就是Ubuntu 14.04 LTS。
查了半天,最后发现原因竟然是,语言的问题!
当使用英文时,Ubuntu对应的版本显示为16.04以上的版本。
对应的,还介绍到了Pike、Queens、Rocky、Stein和Victoria等版本的发版时间以及配套的Ubuntu系统版本号,看得我头皮发麻。
既然都学到这了,我就到官网看了看,目前的最新版本是2023年2月发布的第28版Bobcat。但是阿里却说最新的OpenStack版本是Wallaby,作为第26版发布于2023年4月。
实际上,OpenStack的版本历史可以在OpenStack Releases页面中找到。
https://releases.openstack.org/
OpenStack的版本命名采用了动物名称,而不是传统的数字版本号。每个版本都有一个开发周期,通常为6个月。在每个版本的初始发布之后,还会发布额外的稳定点版本。
回到本次遇到的问题,应该是我忽略了一行小字。
或者说翻译的版本没有跟着发布的版本进行更新。
好吧,正如我开头说的那样,到目前为止,我对OpenStack还不太了解,只知道OpenStack本身是一个云管理平台,只是熟悉了一下版本的区别还有和Ubuntu系统之间的对应关系。