我目前正在仔细研究 GlusterFS。
出于测试原因,我一共设置了四台虚拟机,每台都充当 Gluster 对等机。
由于我可以访问两个 DC(位于不同位置),因此我在 DC A 中创建了两个 Gluster 节点,另外两个节点位于 DC B 中。
副本数为 4 的复制卷使用所有四个 Gluster 节点,这意味着我在每个 DC 中都有每个文件的两个副本。
两个 DC 相互连接,这意味着每台服务器都可以通过内部 IP 地址访问另一台服务器。
因为我还想访问这些文件,所以我在 DC A 中创建了另一个 VM,它在复制的卷上执行了 mount.glusterfs。
现在我的问题是:GlusterFS“客户端”是否更喜欢本地 Gluster 节点(来自同一个 DC)而不是更远的 Gluster 节点(位于另一个 DC)?
如果没有,有没有办法影响“Gluster 客户端”的文件访问行为?我尝试搜索官方文档并搜索了 30 多分钟;但是,我无法找到我的问题的答案。
我问这个问题的原因是因为我想确保我的“客户端”不会访问其他 DC 中的 Gluster 节点来访问文件。我想将流量保持在当前 DC 内。
2020 年更新:
从 gluster 版本 7 (2019-NOV-13) 开始,客户端通过负载平衡执行基于网络延迟的读取选择。在这种情况下,它将更喜欢本地节点。
在 2015 年和 2019 年之间的版本中,read-subvolume/read-subvolume-index 选项似乎早已被弃用,尽管 NUFA local-volume-name 似乎执行相同的本地首选项。
原答案:
您正在寻找的读取选项是
read-subvolume
. 没有它,在初始化时,它将以最快的速度响应服务器(可能是 DC-local,但并非总是如此)并从中读取。对于写入,客户端将始终写入副本集中的所有节点。此处记录了 read-subvolume 选项:
http://www.gluster.org/community/documentation/index.php/Translators/cluster