Openstack能走多远——Openstack、VMware浅析
生存还是毁灭?openstack还是VMware?每每提到这个话题,业界总似要争个你死我活方才罢休。在国内,openstack更是风光无限。京东、华为、百度等众多企业纷纷基于openstack投入研发,推出各层云服务,构建自身业务相关的云计算生态圈。面对openstack的强劲攻势,VMware真的会败下阵来吗惊讶?
本文基于openstack、VMware的应用场景,结合二者设计理念、技术实现,进行简单分析。
设计理念
云生态系统存在云感知应用和传统应用两种应用模式。
云感知应用主要有如下特征
(1) 分布式;
(2) 无状态或者软状态;
(3) 支持水平扩展;
(4) 支持故障切换;
所以,对于云感知应用模式,应用自身处理HA(high availability)和DR(Data Recovery)。
传统模式应用特征为
(1) C/S架构;
(2) 应用自身难于水平扩展,依赖基础框架保障可扩展性;
(3) 依赖基础框架实现故障切换;
对于传统模式,底层框架需要提供FT(容错)、虚拟机HA和自动病毒扫描等一系列特性,保障虚拟机稳态运行。而对于云感知应用,这一切由应用自身维护。即便虚拟机发生故障,启动新的虚拟机取而代之即可。
因为服务器虚拟化而名声大噪的Vmware,近些年来,依托服务器虚拟化的绝对优势在hypervisor上持续构建新的增值特性,不断向上延伸产品栈以夺取更大的市场份额。
Vmware产品分层
(1) 最底层ESXi hypervisor,Vmware免费提供裸金属hypervisor ESXi,通过vsphere bundle扩展ESXi功能,提供增值服务;
(2) vSphere ,实际上是ESXi的商业版本。除了ESXi hypervisor,还提供一组企业工具包,如在线迁移,高级安全,网络和存储IO控制等;
(3) vCenter是多节点vsphere环境中的配置、置备、管理的中央控制点。除vCenter Server,Vmware还提供Site Recovery Manager(在线备份),operation management suite(自动运营管理)等插件;
(4) vCloud Director,把基于Vmware的虚拟化数据中心转化为IaaS服务,以完整虚拟数据中心形态提供软件定义的数据中心服务,包括快速置备,数分钟使基础框架可用,包括安全性和资源使用控制。
从Vmware的产品演进脉络,可以看到Vmware更关注数据中心的自动化,资源的自动调度和管理,以及应用交付等。Vmware出售VM Recovery Manager,charge back等软件,而并不出售弹性计算、弹性存储,所以,Vmware的设计理念是cloud out的 — 企业CIO或IT经理是其典型用户,企业中大部分应用是传统模式应用,无法水平扩展,不具备自我发现并切换故障的能力。VMware聚焦具体企业痛点,围绕痛点寻找能够满足丰富应用负载模式的有效方案。
openstack一类的云基础设施,既不是提供增值服务的hypervisor副产品,也不打算解决CIO或IT经理的痛点。从设计之初,openstack就不关注传统应用模式的需求,其设计理念是cloud in — Openstack主张不背负任何传统应用的包袱,抛弃所有当前企业应用,从头做起。构建基础架构IaaS需要周全的考虑如何以统一的方式构建基础架构。openstack聚焦对底层逻辑资源,如计算、对象存储、块存储、网络等资源的逻辑封装,而并不围绕安全、数据可用性、资源审计等企业痛点,这些统统由云感知应用自己负责。
微软William Baker的著名的宠物和牲畜理论也形象的表达了Vmware和Openstack设计理念之间的差异。在传统应用模型中,我们对待服务器就象对待宠物,每个宠物有一个可爱而别致的名字,我们宠爱呵护它们,当它们生病时,我们细心照顾直至它们完全康复。而在云感知应用模型中,每个虚拟机降级成牲畜——虚拟机用编号简单区分,每个虚拟机地位相等,当一台故障时,我们粗暴地将它剔除,并引入另一台虚拟机取代它。
技术实现
Openstack、VMware都是庞大的分布式系统。Openstack Nova是openstack的核心模块,swift、Quantum等项目都是从nova中分离独立出来。Nova主要负责控制、计算虚拟化,和Vmware vCenter对应。
本文从可扩展性、可用性、一致性对Openstack Nova和vCenter做浅显的分析。
(1) 可扩展性
对于分布式来说,架构决定了系统所能支撑的规模。1000台主机,一般来说是单个独立管理域是极限。vCenterServer可管理多达1000台主机和10,000个运行的虚拟机。而Openstack受限于rabbitMQ和数据库,独立管理域一般在200个节点以内,还是有比较大的优化空间的。
(2) 可用性
分布式系统的可用性看似很简单,而实际上分布式系统设计就是design for failure。在分布式系统中,不存在一个点,单单从这个点就可以俯瞰全局,给出确切的系统故障的诊断信息。因为,分布式系统就是由一个个不可靠环节构成的。当一个关节点意识到另一个环节可能故障时,故障的可能恰恰是意识到故障的那个关节点。
Openstack目前采用最原始最直接的方式判断节点管理进程的故障,对于网络、管理中心、虚拟机等故障的自动发现和切换都考虑的不太周全。而Vmware HA采用了一个很简单巧妙的设计,将多种检测方式统一起来,可以系统有效地识别主机故障、虚拟机故障、管理进程故障、主机隔离、网络分割等多种故障。Vmware vCenter 5.5App HA进一步加强了对虚拟机Guest OS和虚拟机内应用的可用性保障。
(3) 一致性
Openstack采用共享数据库保障数据一致性。所有主机和控制中心读写唯一数据库。这种一致性保障方式在分布式系统,或者说IaaS平台似乎比较少见。单机和控制中心共同维护数据库,数据库必然会成为瓶颈。在实际运行中,由于数据库主机、虚拟机状态修改操作不当,而导致VM数据残留的情况也时有发生,需要手动从后台操作数据库,刷新VM信息。而Vmware通过分布式事务始终保持数据一致性。甚至,从外观表现来看,Vmware像是一个去中心化的分布式系统。做过分布式系统都会知道,实现去中心化分布式系统的复杂程度,目前大多数分布式系统都采用中心化的方式简化设计实现。而VMware用户可以从任一单机操作,譬如删除虚拟机,操作引起的数据变化可以实时同步到管理中心。当管理中心故障时,用户的单机操作也不会被拒绝。管理中心恢复的第一时间,单机和管理中心会达到数据一致。
有人说,未来云感知应用模式会是主导,主要采用牲畜模式,Vmware保护VM的特性在牲畜服务模型中不再重要。但是我认为,传统企业的存在不容忽视,如果对现有问题不予解决,又怎能真的让人信服。Vmware的模式抽象资源,对应用要求更少,让用户更关注应用逻辑。Openstack虽然受到众多的厂家支持,但是这也意味着被众多的厂家牵制,未来并不明朗。多少IaaS平台都已渐渐淡出人们的视线,谁又知道它是否会成为下一个。