首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超融合架构设计之概述

超融合架构设计之概述

作者头像
皮振伟
发布2018-04-16 10:26:50
1.9K0
发布2018-04-16 10:26:50
举报
文章被收录于专栏:皮振伟的专栏皮振伟的专栏

背景: 相比于传统的私有云IaaS产品(例如vmware、华为),nutanix引领了一个新的技术方向---超融合。 nutanix本身是存储起家,分布式存储上有大量的积累,加上虚拟化技术的成熟,万兆网卡(甚至更高速度的网卡)和万兆交换机的普及,让新架构的IaaS产品成为可能。 nutanix的本地化程度不够,以及价格的不友好,国内的超融合产品也开始涌现。 本文(也包括接下来的几篇)会介绍超融合产品的架构设计以及部分实现细节。 物理节点的结构

在物理节点上,启动存储虚拟机(如上图storage vm),使用PassThrough技术,直接操作、使用物理节点的磁盘,对外提供存储服务。用户虚拟机则使用网桥和存储虚拟机之间通信,而非直接使用本地硬盘。 在前文《[linux][storage]Linux存储栈 》介绍过Linux的存储栈,它的纵向深度已经很复杂了,出现问题的概率也就越高,那么,把磁盘passthrough给虚拟机,在虚拟机中建立存储栈来处理,可以减轻物理节点上的出现问题的可能。如果物理节点的存储栈引起了kernel异常,可能造成物理节点无法操作,甚至影响到其他的用户虚拟机,造成用户业务异常。而存储虚拟机发生异常的话,只需要重启对应的qemu进程。显然,使用passthrough硬盘给虚拟机的方案,对于异常情况的容错能力大大增强了。 至于性能问题,使用passthrough的虚拟机中iops会下降吗? 会有一点点微小的影响,作者实际测试结果不明显。 用户虚拟机和存储虚拟机之间使用网络通信,性能有下降吗? 实际测试结果显示,iops的影响也不明显。 集群的物理结构 IaaS的三大组件---计算,存储,网络。其中,计算虚拟化和网络虚拟化,在传统的私有云和超融合之间的差异不大。 传统的私有云IaaS产品,存储基本上有几种类型:本地盘(一般会把本地硬盘通过lvm组织一下,就会有一个本地比较大的逻辑盘),IP SAN,FC SAN,以及NAS产品。 优劣势都比较明显:优势在于支持的产品多样化,几乎各种各样的存储产品都支持,甚至不需要自己开发存储产品(维护lvm,nfs等是逃不掉的,但是在Linux中稳定多年的产品毕竟维护成本更低,风险也更小);劣势在于成本,专业的存储需要额外的高价收费,本地数据盘的使用方式会让虚拟机迁移(不管热迁移还是数据迁移)变得复杂,相应的DRS(Distributed Resource Scheduler,分布式资源调度)也会受到限制,如果不做raid还会有丢数据的风险,而真正最大的问题在于存储的扩容,FC SAN固然拥有很好的性能,但是随着计算节点的增加,FC SAN终究有支撑不住的时候。 超融合架构,如下图,采用标准的x86服务器和万兆交换机为硬件依托,构成物理集群。把每台x86服务器的硬盘组织起来,以分布式存储技术为基础,构成虚拟的逻辑存储池。不使用专用的硬件可以很多的降低成本,分布式存储提供了scale out能力。

组件的逻辑关系 openstack作为目前最流行的IaaS管理平台,当然可以作为超融合的管理平台。不过目前的openstack在实现上,功能上过度复杂,但是不重视性能,版本升级变化较大,维护成本和对接开发的成本也很高。 选择openstack,还是开发自己的管理平台,都需要实现差不多的功能。包括管理控制台(openstack的Horizon),身份服务模块(openstack的Keystone),计算服务模块(openstack的nova),块存储服务(openstack的块存储服务),网络服务(openstack的Neutron),镜像服务(openstack的Glance)等等,还可以定制化一些日志分析,性能报表,服务告警,审计等功能。 在超融合平台设计上,可以使用虚拟机来承载这些组件。如下图,

在Controller VM(CVM)中运行着管理平台的组件,那么可以不用额外的服务器,而且在安装物理节点的时候,直接把CVM的镜像注入,也简化了部署。 对于CVM和Storage VM,都需要隔离其使用的CPU和内存,避免用户虚拟机对其资源竞争,造成管理节点不可用或者操作卡顿。 网络拓扑 物理结构上,最好可以做到网络隔离: 管理网络:用来组件间通信,以及和物理节点间通信。对流量要求不高,可以使用前兆网卡。 存储网络:分布式存储使用的网络,流量要求高,需要万兆网络。 虚拟网络:虚拟机的虚拟网卡接入的网络,流量要求高,需要万兆网络。 也可以使用bonding技术(原理见前文《[linux][network]bond技术分析》),对多个物理网卡做boding,再分配给物理节点使用。 在虚拟化上,会有几种网络类型: local网络:虚拟机的网卡接入到本地网桥中,和物理节点处在同一个网络中,可以获取到和物理节点同一个ip段的ip,此时物理节点充当交换机角色。 nat网络:虚拟机的网卡以nat的方式接入到本地网络中,可以访问到物理节点访问的网络范围,此时物理节点充当路由器角色。 overlay网络:基于vxlan或者geneve协议,构建虚拟的大二层网络。 技术选型 虚拟化技术:关于Xen和KVM的讨论有很多,《https://ygjs.tech/2018/01/17/Xen-V.S.-KVM%E7%BB%88%E4%BA%8E%E7%94%BB%E4%B8%8A%E4%BA%86%E4%B8%80%E4%B8%AA%E5%AE%8C%E7%BE%8E%E7%9A%84%E5%8F%A5%E5%8F%B7/》这篇算是很有意义的一篇。 存储虚拟化:分布式存储ceph,glusterfs等开源技术,是可选项。在IaaS的应用中,最普遍的应用场景还是给虚拟机挂载块设备,相对而言,使用场景比较单一,但是对性能优化以及定制要求比较高。例如,数据本地化场景下,要求在虚拟机所在的物理节点上有卷的完整副本,可以减少网络延迟,也可以减少物理网络的负担;如果虚拟机因为CPU&内存的原因发生了迁移,那么也希望副本也随着发生迁移,甚至数据压缩等高级特性。使用开源软件或者自研,看需求而定吧。 网络虚拟化:Linux bridge实现简单,内核支持很早并且非常稳定,也支持vlan隔离,对于小规模的IaaS,是个不错的选择。Openvswitch则支持overlay的大二层虚拟网络,功能复杂的流表控制,新版本的OVS已经集成了OVN这样的管理工具。对于网络复杂应用的场景下,有SDN的需求,则使用ovs更优。性能方面,如果只是比单纯的虚拟交换机能力,作者的实验数据看到bridge会比ovs高大约5%左右。 数据库选择 IaaS的meta data保存,可选的数据库比较多。关系型数据MySQL和PostgreSQL,非关系型的zookeeper和etcd。还有其他的。。。 开发语言 openstack是python实现的。自研管理平台的情况下,作者不倾向使用python。python在写脚本和工具的情况,快速好用,又便于修改。但是在实现大规模工程的时候,则吃力很多。逻辑复杂度变高的时候,需要多进程、多线程甚至协程来处理。作者比较倾向golang,目前开源库支持比较好,语言天然支持协程,开发速度和维护成本都比较适合。在管理平台这种系统软件上,python的实际维护成本比想象的高,举例来说,python可以用一分钟就写出来一个http请求发送的api,这个请求的成功的可能性只有一种,但是失败的可能性就很多,socket,send,recv,close几个函数的错误码有很多种,不同的错误码处理流程必然是不同的。如果不能handle住所有的出错可能,那么在出现问题的时候,很难查问题,如果handle住所有出错的可能,那么代码的复杂度也会上升。 千言万语汇成一句话:PHP是最好的语言!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AlwaysGeek 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档