前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是ReadWriteMany?

什么是ReadWriteMany?

原创
作者头像
焱融科技
修改2020-04-27 17:56:43
1.9K0
修改2020-04-27 17:56:43
举报
文章被收录于专栏:焱融科技焱融科技

在Kubenetes体系内,针对每一个持久化存储卷,都有三种访问方式: ReadWriteOnce(RWO), ReadOnlyMany(ROX), ReadWriteMany(RWX)。在当前的定义中,这三种方式都是针对节点级别的,也就是说,对于一个Persistent Volume, 如果是RWO, 那么只能被挂载在某一个Kubernetes的工作节点(以下简称节点)上,当再次尝试在其他节点挂载的时候,系统会报Multi-Attach的错误(当然,在只有一台可调度节点的情况,即使RWO也是能够被多个Pod同时使用的,但除了开发测试,有谁会这么用呢?); 如果是RMX, 那么可以同时在多个节点上挂载并被不同的Pod使用。举例如下:

在官方文档中(https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes),我们可以了解到目前存储支持ReadWriteMany的情况如下:

从列表中我们可以看到,只有文件类的存储能够支持ReadWriteMany, 而所有的块存储,无论是公有云,还是Ceph, iSCSI,都无法支持RWX。

那么RWX到底意味着什么? 对于用户的应用来说有什么影响呢? 我们以实际的一个应用WordPress为例,典型的拓扑结构如下:

多个WordPress实例之间需要一个共享的卷作为Uploads目录, 同时还需要一个MySQL服务。这个共享卷就是一个很典型的ReadWriteMany的需求,当WordPress实例需要快速横向扩展的时候,新扩展的实例可以直接访问到原有的用户上传的数据,不需要复制等操作,因为大家共享的是一份数据,这种需求对于不支持ReadWriteMany的块存储来说,就非常尴尬了。 我们会发现在真实世界中,不乏各种困惑的声音,例如下图中的这个实际例子(https://www.digitalocean.com/community/questions/kubernetes-readwritemany-or-the-same-effect),

来个摘要,这位小哥正在寻找一个容器平台上运行WordPress的方案,需要在多个Pod上同时访问同一份数据(Master上可读可写,其它节点只读)。

人民的力量是巨大的,也不是没有解决方案,见下图(https://blog.openebs.io/setting-up-persistent-volumes-in-rwx-mode-using-openebs-142632244cb2?gi=1a701ed8e4bd), 我们看到它是利用类似于Re-Export的方式,将块存储暴露出NFS的接口来实现了。但它真的好吗? 暂且不说性能如何,这里存在着单点啊,因为图中的RWO卷只能挂载给一个NFS。

焱融YRCloudFile是一款专门针对容器场景开发的高性能分布式文件存储,天生的支持ReadWriteMany的读写方式,通过如下的拓扑结构,完美的解决了有状态应用WordPress的高可用结构,无论是共享的目录,还是MySQL数据库需要的存储目录,统一管理,高性能支持。

在下一篇文章中,作者将结合上图,以高可靠、高可扩展的WordPress架构为例,实际地演示如何结合焱融容器存储,部署基于ReadWriteMany读写模式的应用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站建设
网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档