初步想打算采用的架构如下:Pod 通过挂载的 PVC 访问 StorageClass 中存储的集群的 VIP 或者域名(通过 Service+Endpoint 实现)的 Heketi (集群外),Heketi 再去访问 GlusterFS 服务集群上的数据。
这样存储相关的服务都外置于 K8S 集群了。但是这样有个高可用的问题,这样部署的 Heketi 只能是个单点的应用,因为每个 Heketi 实例本身也有一个 DB 文件( boltdb )存储集群元数据。因此这个文件也要想办法共享出来让多个机器上的 Heketi 访问。我目前想到的方法就是每台机器再挂一块盘用来存这个 db 文件,这几块盘是被 Glusterfs 直接初始化组成的一个集群,而不是通过 Heketi 初始化。相当于图中的 db-vol-{1,2,3}存储 Heketi 的 db 文件,data-vol-{1,2,3}存储 PVC 的数据。
现在的问题是:1 、这个架构本身是否合理; 2 、boltdb 是否支持多个 Heketi 实例并发修改数据,是不是要实现一个类似于单例模式的架构,同一时刻只有一个 Heketi 实例提供服务; 3 、如果需要单例模式,如何实现?是通过探活加上修改 Endpoint 保证只有一个 Heketi 提供服务,还是有别的方法呢?
小弟第一次接触分布式存储,很多地方理解不到位,如果方案中有一些不合理的地方请各位大佬多提提意见,Thanks!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.