ZStack的弹性公网IPIP不通的话,怎么排查?

摘要:本文是开源IaaS软件ZStack的深度试鼡报告分别从部署、架构和网络三个层面分享作者的试用体验,并与OpenStack进行简单的对比文章最后也对ZStack的改进方向提出了自己的思考。(轉载)

【编者按】针对采用OpenStack部署云平台的复杂性是另外一种解决方案。本文是ZStack的深度试用报告分别从部署、架构和网络三个层面介绍莋者的试用体验,并与OpenStack进行简单对比文章最后也对ZStack的改进方向提出了思考。以下为全文内容:

“这是最好的时代也是最坏的时代”。這句名言也是当前云计算大环境的真实写照云计算给企业带来极大的便利,不但能够充分利用现有的资源而且能够把资源(计算、存儲、网络)实现池化,像自来水一样便捷、精确地使用形成了新的资源计费(商业)模式。但是如何有效地、快速地把资源池化管理,这是摆在管理者和技术人员面前的一道难题当前整个云生态,最成功的案例莫过于Amazon AWS 和开源的OpenStackAWS可以说是云计算的鼻祖,它的成功毋庸置疑不夸张地说,是它引领了云计算的时代;但它是闭源的我们无法窥探它内部的实现逻辑。直到开源的OpenStack的出现云计算才可以说“飛入寻常百姓家”了。OpenStack让整个云市场开始红火起来各种云如雨后春笋般冒了出来。

随着对OpenStack的深度普及它在某些方面的弊端也不断被管悝层和技术人员所提及。整个OpenStack服务组件不断增加新的功能陆续被扩展,各种厂商之间不断角逐都想主导OpenStack的走向(使之符合自己的利益),而中小企业由于缺乏技术力量越来越玩不转庞大的OpenStack,原来期待的易用性、稳定性似乎逐渐地变成了奢望(或者说过往)作为OpenStack使用鍺的我,也蒙生了疑问:OpenStack是不是还依然适合我们的使用场景是否有别的替代品?在一次不经意的瞬间发现了一个叫ZStack的云平台,在其赫嘫写着

ZStack在这方面做了改进把服务之间的消息调用(或者API请求),以及服务内部代码方法之间的调用全部实现异步架构 如下图所示:

全異步架构带来了效率上的提升,本人没有系统地测试(与OpenStack对比)但仅从感官上讲,在ZStack上创建一台虚拟机秒秒钟dash就显示创建成功了,那種享受不言而喻。

在讲无状态服务之前我先讲下有状态服务下的请求机制。 这里的状态是指在有多个管理节点时每个管理节点都会囿多个相同的微服务。那么微服务之间就要对自己管理资源的数量进行分配协商向微服务发送请求的请求者也必须知道是哪个微服务在管理哪个资源。话多必失还是上图看看(我大学老师说过,一图胜千言):

而在无状态服务下这些事情交给hash ring处理,微服务之间无需知噵自己或别人管了哪些资源在请求里只需含一个唯一的UUID,不再需要指出把请求提交给哪个微服务集群内部会把请求“路由”到指定的微服务 。如下图所示:

ZStack里管理节点之间形成一个强一致的hash ring,每个节点都有一份包含所有节点信息(如节点UUID)的副本当新节点加入或者節点退出时,都会产生广播消息通知到其他节点整个集群会重新动态平衡,形成新的强一致的hash ring

ZStack自身强一致性的特性是其他IaaS软件(包括OpenStack)不可比拟的。OpenStack要实现服务的HA特性必须借助第三方高可用方案,比如keepalived+Haproxy或者pacemaker方案诚然这些都承受了生产环境的考验,但无疑给整个平台增加了复杂度

云平台是个复杂的系统,管理着各种子系统(如计算、存储、网络、认证等)每一次的请求任务都需要在各个子系统之間来回协调。比如说创建虚拟机需要在计算、存储、网络、认证各环节都走通,任何一换出问题都将导致创建失败。如下图为OpenStack各个子系统的调度关系图:

OpenStack服务之间不但有Http交互也有RPC交互。整个系统错综复杂另一方面,随着OpenStack的发展修改代码有时候会变得不那么容易,甚至不得不重构整个子系统的代码就像Neutron已经重构了。

反观ZStack服务之间的交互就简单明了多了,所有交互统一走消息队列整个拓扑结构鈈再紧密,实现星状的架构如下图所示:

星状架构中,各服务之间只有消息的交互服务之间基本完成独立,添加或者删除某个服务不會影响怎么个架构(只会失去某些功能)

OpenStack与ZStack两者虽然都是微服务架构,但在实现上有本质的区别

OpenStack的微服务是以独立进程分散到各个节點,这在一定程度实现了负载均衡的效果但存在以下问题:

  1. 给部署、升级、维护带来困难
  2. 当扩展时,会生成更多的微服务
  1. 更简洁的依赖關系;所有微服务都集中在一个进程中相关代码都在一个包里,给部署、升级、维护、扩展带来了极大的便利
  2. 集中式的配置管理;OpenStack每個服务都有自己的配置,而且还分散在不同的主机上维护成本较大;ZStack就容易多了。
  3. 微服务只需要关注自己的业务逻辑高可用、负载均衡、监控都可以交管理节点来完成。
  4. 进程级的应用扩展从代码层讲,ZStack的微服务都是一个个独立的JAR包且有自己独立的API,错误代码全局配置,全局属性和系统标签开发人员可以直接导入包,来实现自己的需要的功能

综上所述,ZStack拥有一个清晰的、解耦的架构这是实现健壮IaaS平台的基石。

一个软件的扩展性是评价软件的重要指标之一当前OpenStack主要支持两种插件扩展机制。

这是一种通用的扩展模式通过API接口,实现功能扩展比如OpenStack里Nova Hypervisor Driver 、Cinder Storage Driver等驱动都是通过这种形式实现的。这是一种通过已经定义好的协议来实现插制跟核心交互的如下图所示:

这種模式的典型就是外部服务(监控)通过消息监听,获取平台的消息在OpenStack里,Ceilometer 服务里有很多监控的实现机制就是如此示意图如下:

以上兩种插件机制是OpenStack和ZStack所共有的,下面要提的机制是ZStack独有的

在这种模式下,插件会深入到监控应用内部的业务逻辑的事件当应用内部发现倳件时,插件会对此事件做出自己的响应在插件自身的代码里执行相应的业务流。这种实现对终端用户是完全透明的,是纯粹的内部實现举个 Observer pattern 案例,在OpenStack里Security Group(安全组)功能是集成在Neutron里不能单独剥离出来。而在ZStack里Security Group是一种 Observer pattern   plugin,你可以单独提取而不影响整个网络功能的实現。这种插制的实现如下图所示:

独特的插件机制给ZStack带来了更灵活的实现。开发者可以根据自己业务需求扩展功能而ZStack 开发者只需维护核心代码。如此带来的好处就是整个云平台可以快速更迭,功能逐步完善而整个架构还是健壮的。

以上这些架构特点并非ZStack的全部比洳说ZStack还有回滚机制,一但超时或出错整个任务流就会回滚(包括数据库的修改,比如VM创建失败IP会被回收,VM不会停留在errror状态而是直接被刪除;而OpenStack会出现僵尸VM)更多ZStack的架构方面的信息,详见ZStack官网

在云时代,用户对网络提出了更高的要求云中的网络不再是固定不变的,洏应该可以随时根据业务进行调整对网络的隔离性也有更进一步的要求。另外传统网络的功能(如LB、VPN、FW等)也被引入到了云中,更高級的SDN网络、NFV功能现在也开始集成了到了云中OpenStack是网络集大成者,各种传统设备厂商、新型SDN公司以及各大运营商都在极力向Neutron靠拢OpenStack的网络功能可谓包罗万象。

ZStack从一开始就把自己定位是私有云解决方案它没有像OpenStack那么强大的网络功能,但基本已经能够满足私有云对网络的需求ZStack 借鉴了CloudStack的网络解决方案,把网络功能都集成到Virtual Router来实现实现计算、网络实现良好的隔离。比如说端口转发和SNAT功能,OpenStack利用iptables在宿主机上来实現的这导致宿主机的iptables更加纷杂(即有宿主机自身的规则,也有VM的规则)而ZStack把这些实现(也是iptables)转移到了VR,排错相对比较容易ZStack把CloudStack的基礎网各和高级网络融合在了一起,可谓 “打破这种无理的分割”——来自某CS资深用户(@Star华星_FreeBSD)的肺腑感慨ZStack在网络方面更让人倾心的是,咜提供了丰富网络应用场景向导基本上囊括了私有云常见的应用声场景。下面列举几个场景应用:

EIP(弹性公网IPIP)是当前云环境中最常见嘚应用创建虚拟机的时候会分配一个private IP,当虚拟机绑定EIP的时候虚拟机就可以实现公网路由了——这是在公有云场景。对应于私有云时單纯private IP无法访问公网,只有绑定EIP才能实现公网访问。EIP是动态的用户可以实现更变绑定到不同的虚拟机上。这是云特性之一弹性公网IP!(操作详见

Flat network是一般企业内部很流行的应用场景。所有虚拟机共处一个广播域虚拟机访问外网通过本地网关出去。如果L3子网在公网是可路甴的那虚拟机就可以直接分配公网IP。(操作详见 http://zstack.org/tutorials/flat-network-cli.html )

ZStack以上的各种网络场景是可以共存的通过Zone设置,可以形成独立的网络环境这大大增強了网络的灵活性。更多的功能有待使用者挖掘。

说了这么多ZStack优势也得扒一扒ZStack相关薄弱或者说隐患的地方 。(个人鄙见^_^)

  1. 融合的单进程架构,诚然存在很多优势但也有隐患。本人看来最大的隐患就是核心代码的处理逻辑,如果核心代码出现严重bug直接导致进程挂掉,那整个集群就失控了(所有管理节点都是一致的)ZStack是JAVA编写的,bug修复与部署都得重来整个耗时就长了。OpenStack是Python脚本语言直接线上修改即可,而且OpenStack是分散式微服务架构 bug只会影响具体某项功能,不会对整个集群产生毁灭性打击
  2. ZStack当前的认证体系是融合在核心代码里的(至少我還没发现是否可以认证接口可以引入第三方认证),这对认证扩展带来了许多不便比如说,不能集成现有的认证方式(比如AD、LDAP等)一般企业都有自己的认证体系。而OpenStack的Keystone在这方面做得不错它可以无缝衔接第三方的认证(主要是AD、LDAP、Kerberos等)。统一的认证体系给企业在管理上帶来不少的便利
  3. 当前ZStack的版本(0.62)对存储支持有限,只支持NFS存储(最新的0.7 预览版支持iSCSI)企业对存储的需求很大,从我目前观察来看大蔀分企业还是挺看重本地存储。另外当前的大数据时代,数据不再是线性增长几乎可以说是指数增长曲线,所以企业对存储的扩展性偠越来载高ZStack应该支持更多的存储插件,比如GlusterFS、Ceph等分布式存储
  4. ZStack的VR网络机制,满足中小型私有云那是没有问题但是否能承受规模化私云嘚网络需求,有待考证最好的方式就是引入SDN解决方案,彻底解决网络瓶颈
  5. ZStack的L2网络当前还只支持VLAN,下一步可以考虑引下VXLAN、GRE等overlay的隔离如此一来,网络功能就更加完善了

在我看来,ZStack未来的商业模式就是提供私有云咨询服务深耕私有云市场,与厂商进行接恰合作提供专業的存储、网络服务。当然前提是做好ZStack的生态圈让更多的企业和开发者来参与ZStack的发展。

}

我要回帖

更多关于 弹性IP 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信