【编者按】已经成为IaaS事实标准的OpenStack,仍然面临稳定性、易用性等一系列的难题,新近推出的IaaS开源项目ZStack,号称要借鉴IaaS先辈的经验,通过新的技术架构解决OpenStack难以解决的技术问题,并得到了OpenStack社区的关注。那么,ZStack有何特色?能否实现目标?ZStack的发起者和总架构师张鑫(Frank),撰文从架构层面全面介绍了ZStack的设计理念和技术实现,并就ZStack的市场目标和社区规划进行了解答。以下为文章内容: ZStack作为一款新开源IaaS软件,自发布后就迅速引起了技术圈的关注,许多朋友都对它架构特点很感兴趣。虽然在ZStack主页有16篇博客详细介绍了它的主要架构特点,但仍要花一定时间进行阅读才能把握其设计要点。笔者作为ZStack的发起者和总架构师,希望通过这篇文章对所有架构要点进行一次梳理,围绕它要解决的问题出发,为读者进行一个详细的介绍。 ZStack的架构特点ZStack从诞生之初没有急于实现各种炫目的功能,而是花了大部分精力做架构设计,希望从架构上解决四个问题:易用性,稳定性,高性能,以及扩展性。ZStack的所有的架构设计,全部围绕这四个方面展开: 易用性在易用性方面,ZStack首先考虑的是软件的安装部署与升级,其次是在长期使用的过程中的营运和维护。对于安装和部署,ZStack是一个Java项目,在编译的完成后,所有的文件都会被打包到一个Java的WAR文件中。部署ZStack实际就是部署一个标准的Java WAR文件到Apache Tomcat这样的web container中。这种部署是Java web应用的标准部署方法,非常简单且广为熟知。即使没有IaaS经验的的用户,也可以很容易学会安装。同时ZStack对外部的依赖非常少,仅仅需要MySQL数据库,RabbitMQ消息总线,以及Ansible系统配置管理软件,这些都是Linux各个发行版提供的软件。一个单管理节点的ZStack部署如图所示: 如果把MySQL和RabbitMQ放到单独的机器,单管理节点的部署可以很容易扩展成多节点部署: 由于IaaS软件管理数据中心中大量的硬件,很多情况下需要安装agent到硬件上,例如安装agent到作为KVM计算节点的Linux机器。为了让用户从手动安装配置硬件的枯燥工作中解脱出来,ZStack跟Ansible无缝集成,当用户添加一个计算节点时,ZStack调用Ansible自动安装agent并配置系统,整个过程对用户透明。用户无需阅读冗长的文档去了解agent需要什么依赖包,需要怎么配置,这些全部由ZStack负责。用户只需调用一个API即可。类似的设计应用在所有需要安装agent的服务,例如负责提供网络功能的虚拟机(Virutal Router VM)。 |