OpenStack 体系结构随笔
以下是我对Openstack的一些自我认识和感想。
Openstack看起来很神秘很牛b,但是可以将其进行简单的理解。Openstack其实主要就是一个虚拟机群集管理软件(不考虑Baremetal,其实他也可以管理物理机),管理虚拟机的创建停止等生命周期全过程,制定虚拟机的分配策略(虚拟机如何选择要运行的物理机),进行虚拟机的迁移,分配管理网络,对创建虚拟机的镜像进行统一管理,还有一套用户验证系统等等。这些工作都是管理虚拟机要面对的主要问题,只是Openstack给提供了一个一体化的解决方案。上边的理解不是很全面,但列出了Openstack的一个主要目的,对于认识Openstack还是有帮助的。
Openstack的底层核心技术是虚拟机技术,Openstack可以管理目前流行的多种虚拟机框架如kvm,vmware,xen等等。大家用Openstack最多的虚拟机方式是kvm,Openstack对kvm,xen,QEMU等虚拟机的管理是通过libvirt这个中间件来进行统一管理,屏蔽了各自的细节。这里就主要讲通过libvirt的方式来进行虚拟机管理的方式。要学习Openstack首先就要搞懂libvirt,openstack对于虚拟机的整个管理周期都是调用他的,同时在这个过程中将相关信息存入数据库,便于管理。
我自己总结了openstack的几大核心机制。以libvirt为代表的的虚拟机管理机制,以sqlalchemy为代表的数据库管理机制,以amqp为代表的消息处理机制,以paste为代表的web api机制。
Openstack给我们提供的不仅仅是一个云计算管理软件,更是提供了一个云计算系统的易于扩展灵活好用的开发框架,和一些基本的核心设计理念。因为openstack是开源项目,代码贡献者众多,他的几个核心项目在处理某些程序时方法可能存在差异,但大体是相同的,并且设计理念是相同的。同时openstack有一个专门的项目叫做oslo,就是将一些公用的类库和模块聚集起来方便用户做相关开发,其实这些东西都是在已有的项目中有实际的使用。