华为云在openstack上的级联架构探索
已有 2928 次阅读 2018-06-05 22:07随着Openstack的版本更新,Openstack已经逐渐成为公有云和私有云的建设事实标准,Openstack作为开源社区软件,距离商用还有一段距离。尤其是在面向多站点的openstack建设时,仍然面临大量的挑战:
挑战一:跨站点的统一云服务和资源调度
一方面,随着企业的发展,大量分支机构和服务网点的分布对网络提出挑战。但是由于带宽资源有限,以及服务质量和服务时延的要求越来越高。所以对于本地建站和数据中心的要求会越来越多,这将对各服务站点和资源的统一管理和调度就提出了挑战。统一的云服务系统,要求我们提供通用的Openstack标准API接口。
挑战二:云服务的高可用性和易管理。
云服务系统规模的不但扩大。跨站点,跨地域的管理成为挑战的同时。如何保证高可用性和易用性是Openstack的另一挑战。云服务要求部分节点的实效,不能影响业务的整体服务。同时版本的升级,补丁的更新都必须对整体服务影响最小化。
挑战三:多站点的可扩展性
单一Openstack来管理大规模的虚拟机是一大挑战。计算节点的资源收集,调度,网络信息转发,大规模节点间的RPC消息交互,甚至数据库的增删查改,都可能成为瓶颈。更何况即使单一一套Openstack服务失败,将影响到整体的服务,不例如故障域的隔离。
华为FusionSphere选择Openstack作为基础云操作系统的核心的同时,也不断优化完善Openstack的缺陷。面对上述的挑战,华为FusionSphere提出了级联的概念和设计理念。他将Openstack也作为一个大的计算节点,来进行统一的调度和管理。
实现逻辑是将Nova配置成nova-compute的hypervisor,将cinder配置成cinder-volume的存储后端,将Neutron配置成L2/L3Agent对接的网络设备,Ceilometer作为Ceilometer的数据后端,最后实现如下架构图
FusionSphere在使用Opentack作为管理资源的核心,同时加入级联架构,那么就必然面临对Openstack代码的修改。使用开源社区的软件。尤其是对于活跃的开源软件,怎么添加自己的特性的同时,能够兼容开源社区的版本,一直是一个不断平衡的过程。目前主流的开发方法一般有两种,一种是不修改源码,所有特性都使用插件的方式要开发。使用插件来补充开源软件的缺陷,同时支持推动开源软件的功能升级,开发新的特性满足自己的需要;这种办法,优点是兼容社区,当社区版本有大的版本升级的时候,可以很快的升级完成。另外一种就是从一个稳定的版本切出,在上面开发自己的功能特性,之后在社区中有新的特性需要合入进来,直接在自己的代码中开发类似的功能;这种方法的优点就是自由度高,可是开发出很好的适合自己特性的软件,但是缺点也很明显,随着时间的延迟,与社区差异性会越来越大。
FusionSphere目前主要使用的版本是M版本,在此版本中加入自己的级联结构的设计实现。目前我们采用的是级联架构是在源码中修改的,但是同时新特性和功能的开发,尽量做到不侵入源码,对于具体的函数,类的修改,主要是使用面向对象的继承,和函数的复写来实现。充分利用Openstack框架配置文件的强大功能,开发适合自己特性的各种不同的Driver和Manager,改变程序执行顺序,从而实现自己的功能。
尽管FusionSphere已经尽可能的做到不侵入开源代码,但是对于千万级源码的Openstack来说,它本身版本的升级就是一个耗时而且艰难的任务。单单nova项目,都是一个巨大的工程项目,再加入自己的特性代码,很容易就会使得代码工程越来越大。这样的一个系统级的软件,如何做到出现问题快速响应,如何做到发布补丁又不影响线上任务,如何做到版本迭代快速稳定的升级,都是华为云面临的新的挑战。针对这样的问题,华为期望做到服务化的解耦,最后逐步实现云系统的微服务化。想要了解华为云收费情况的,可以到官网查看。
文章来源:https://www.huaweicloud.com/
发表评论 评论 (0 个评论)