初步想打算采用的架构如下: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!
1
liuhan907 2022-03-23 18:11:39 +08:00
Heketi 都快不维护了你选啥不好选这个。。。
|
2
zhoudaiyu OP @liuhan907 还有一个就是 Kadalu 吧,那个还没细看,那个是要部署在 K8s 里面的,估计我们 K8s 版本太老,可能兼容会有问题
|
4
liuhan907 2022-03-23 22:52:25 +08:00
你这版本也太老了!
|
6
liuhan907 2022-03-24 00:20:28 +08:00
另外为什么不用更简单的比方说 longhorn ,为了存储和 k8s 分离?
|
8
liuhan907 2022-03-24 10:14:02 +08:00 via Android
那为啥不用 ceph 呢,直接 rbd 不是更简单呐
|
11
liuhan907 2022-03-24 12:00:24 +08:00
所以你们还是老老实实考虑升级吧,现在几乎没有 1.12 这么低版本的东西了。。。
|
12
rainfd 2022-03-24 15:28:29 +08:00
我也觉得有空研究这个还不如把精力放到怎么升级 k8s 集群上
|