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