今天讲的内容,和Docker容器有关。可能我们传统存储圈子里面的朋友对Docker了解不多,建议大家先温习一下西瓜哥以前转发小黑羊的文章:
【周末充充电2】最近Docker淫威太盛,看我怎么扁它!
至于Docker和存储的关系,西瓜哥也专门写过一篇文章,不熟悉的一块温习一下:
Docker都不懂,搞啥子存储嘛?
西瓜哥认为,Docker的应用会越来越广泛,由于微服务的资源利用优势,将会在很多场景替换hypervisor(如VMware),包括在数据库这样有状态应用的场景。当然也可以在VM上跑Docker,部分要求较高隔离的应用还是需要VM的。
当容器要进入数据库这些有状态的应用场景,必须要解决数据的共享问题。也就是Docker应用从一个服务器漂移到另外一个服务器,数据没有飘过去,那么类似数据库这种有状态的应用是不能运行的。而现在有一个很受投资者追捧的公司ClusterHQ,专门开发了一个产品Flocker,这是一个容器卷管理插件,专门用来解决容器漂移的时候,数据的共享问题。
最成熟最简单的方式就是采用共享存储的方式。当容器切换的时候,Flocker通过API控制存储进行相应的切换。这种方式就需要存储和Flocker联动,也就是存储厂商必须开发相应的支持Flocker API的接口,共同完成这个工作。
在云架构下,如AWS Elastic Block Storage (EBS), OpenStack Cinder,支持这个是比较简单的,只要存储支持这些云存储接口,如Cinder接口就可以。但是,这个不是Flocker直接和存储通讯,而是通过Cinder接口间接调用的。EMC ScaleIO, EMC XtremIO最初就是这样支持Flocker的。
但这种使用方式限制比较多,需要依赖特定的云框架。因此,ClusterHQ希望存储厂商直接支持Flocker API,就像VMware的VASA接口一样,成为Docker环境下存储的标准接口。
据说EMC ScaleIO, EMC XtremIO已经同意开发相应的驱动来支持Flocker API。但奇怪的是,目前没有看到EMC的传统存储产品,如VNX和Symmetrix系列有支持的计划。
最新消息,昨天ClusterHQ在网站上宣布,NetApp,华为等多个领先的存储厂商加入ClusterHQ伙伴网络。
这些厂商要不就已经提供了对Flocker的支持,要不就在今年年底前提供相应的支持。
西瓜哥仔细分析发现,NetApp其实没有开发新的接口,而是采用Cinder接口,支持Openstack环境下的Docker后端共享存储场景,存储需要是FAS系列,运行NetApp clustered Data ONTAP。这种支持方式和EMC ScaleIO和XtremeIO目前的支持方式一样,只能在OpenStack环境下使用。
而ConvergeIO、Hedvig、Satatoga Speed都是提供了独立的驱动,直接支持Flocker。因此,可以独立和Flocker使用。使用场景更加广泛。
至于Nexenta,将在Q3发布,从描述看,应该也是可以直接支持Flocker API。
华为预计在今年年底支持。从网站上还看不到华为采用何种方式,但考虑到华为OceanStor V3已经支持Cinder API,如果是这种方式应该不需要开发新接口,可以类似NetApp一样实现Openstack环境下的支持了。因此,从这个判断出发,西瓜哥估计华为会采取开发独立驱动直接支持Flocker API。不知道华为的SERVER SAN FusionStorage是否也会在支持范围里?
【西瓜哥点评】
1、Docker很火,但持续存储不解决,数据库运行在Docker上就基本不可行;
2、ClusterHQ的Flocker作为最有号召力的Docker数据卷管理软件,引得传统存储厂商或者新兴的存储厂商纷纷拥抱Flocker生态系统;
3、EMC、NetApp和华为这些传统存储厂商的加盟,将大大扩展用户对Docker后端存储的选择。这应该是一个双赢的结果,传统的企业用户可以选择自己喜欢的存储,对Docker的推广也具有积极意义。
4、华为作为中国厂商,这段时间快速提供对VMware VVols的支持和年底支持Flocker,显示其在构造强大生态系统方面不断加大投入,大大缩小这方面和国外厂商的差距,甚至可以做到局部领先,令人印象深刻。