近日,CoreOS在GitHub上基于Apache 2.0许可证协议开源了它们的分布式存储系统Torus。Torus是一种针对容器集群量身打造的存储系统,可以为通过Kubernetes编排和管理的容器集群提供可靠可扩展的存储。这是继etcd、rkt、flannel,以及CoreOS Linux之后CoreOS发布的另一个开源产品。
分布式系统的过去、现在和将来
分布式系统为物联网的安全可靠运行奠定了基础。通过模块化的方式进行构建,在工作负载增加的时候进行扩展,同时确保简单易用,并使得不同模块能够与其他组件相互配合,这样的做法解决了大规模环境中计算领域曾经面临过的不少挑战。
容器技术一经推出就获得了用户的普遍认可,然而在部署容器集群的过程中,很多用户都在头疼一个问题:
- 如何将容器运行过程中访问的数据固定存储起来?
- 如何用一种能够让开发者在任何环境中顺利使用的方式存储这些信息?
- 随着使用过程中容器集群不断缩放和扩展,怎样保证这些数据的一致性和固定性?
绝大部分容器集群依然可以使用传统存储,然而这类系统并非针对容器这种新技术量身打造的,这样的使用不仅会遇到很多技术困难,同时也需要付出极高的成本。
在设计上,传统分布式存储系统主要适用于由大型计算机组成的小规模集群,而非使用廉价小型计算机组成的大规模集群,后者才是容器世界中最常用的。此外传统商用分布式存储系统通常需要使用昂贵甚至定制的软硬件,抛开价格不谈,这类系统很难与新兴的工具和使用模式进行集成。随着使用时间的延长,这类系统升级、许可,以及维护的成本也将日益增加。
此时只能通过某种全新的解决方案为容器集群提供存储。
CoreOS最近发布的开源分布式存储系统Torus,在设计上可以为通过Kubernetes编排和管理的容器集群提供可靠可扩展的存储。
Torus的架构
现代化集群的存储必须在网络端维持统一的可用性,随着数据在不同容器中处理还需要管理访问并保障一致性,就算只是在一个应用程序内部使用,随着应用版本的增长也需要做到这几方面。
Torus在架构的设计上通过下列几个特性解决了这些问题:
- 扩展性:与etcd类似,Torus也是一种构建块,可以实现包括分布式块设备(Distributed block device)或大型对象存储在内不同类型的存储。Torus使用Go语言编写并使用gRPC协议,用户可以方便地用任何语言创建Torus客户端。
- 易用性:专门针对集群和Kubernetes等集群流程平台(Cluster orchestration platform)设计的Torus可用简单的方法部署和运维,并可随时缩放。
- 准确性:Torus使用etcd分布式键值数据库存储并检索文件或对象元数据。etcd为必须快速可靠执行的分布式系统核心运作提供了一个坚实、经得起考验的基础。
- 缩放性:Torus目前可缩放至数百个节点,并可将多个共用磁盘以单一存储池的方式使用。
Torus的核心是一个将接口以传统文件方式呈现的库,这个库使得存储系统能够顺利实现易于理解的基本文件操作。借助etdc的一致过程(consensus process)进行协调和检查点操作,这个分布式文件可以通过多种方式暴露给用户的应用程序。目前Torus支持通过网络块设备(Network Block Device,NBD)将这个文件以面向块(Block-oriented)的存储进行暴露。
Torus为Kubernetes的pod提供了简单的固定存储
这样的设计还可在不远的未来支持加密和高效率的Reed-Solomon纠错功能,借此为整个系统提供更有保障的数据有效性和保密性。
Torus可通过Kubernetes部署和管理。目前首发的Torus包含用于在任何Kubernetes集群上以应用程序方式配置和运行Torus的Kubernetes清单。这使得Torus的安装、管理和升级变成一种简单,完全在云端完成的操作。
据CoreOS介绍,该公司计划在未来让对象存储等其他存储系统也能基于Torus实现,通过这些分布式文件创建集合,并由etcd负责协调。
Torus的前景如何?毕竟开源的分布式存储系统还有很多,例如Ceph、GlusterFS等,但这些系统都是针对传统基础结构设计的,有别于Torus这一业界首个主要以容器为中心的分布式存储平台。如果Torus能够按照CoreOS的规划继续 完善,IT管理员很可能会将其视作一种更为优雅和成熟,专门针对容器打造的固定存储解决方案。
若想尝试和体验该产品,可按照这里提供的指南开始运行第一个Torus集群。
社区反馈
Torus发布后获得了大量社区成员的关注,大家都对这种全新的分布式存储系统表示出巨大的兴趣。同时该项目的相关工作人员也对此发表了自己的看法。
CoreOS产品主管Wei Dang表示:“我们听到Kubernetes用户说现有的存储系统有些难用,希望Torus的使用能简单一些。Torus可通过Kubernetes部署到容器内部运行,能够为多个微服务工作负载提供一个统一的分布式存储集群。”
分布式系统工程师兼Go kit创始人Peter Bourgon认为:“分布式存储一直被视作云原生应用程序难以解决的问题,我对于Torus的潜力感到很满意,很希望知道CoreOS和这个社区最终将取得怎样的辉煌成果!”
Twitter用户Barak Michener(@barakmich)则认为:“Torus的开发已经有段时间了,特别感谢@coreoslinux给我提供了这次机会以及@packethost对我的帮助,当然,还要感谢我的测试平台。”