0

我一直在尝试使用 glusterfs 服务器设置地理复制。在我的测试环境中,在我的暂存环境中,一切都按预期工作,但后来我尝试了生产并卡住了。

假设我有

gluster fs 服务器位于公共 ip 1.1.1.1

gluster fs slave 在公共 2.2.2.2 上,但是这个 IP 在接口 eth1 上 gluster fs slave 服务器上的 eth0 是 192.168.0.1。

所以当我在 1.1.1.1 上启动命令时(防火墙和 ssh 键设置正确)

gluster volume geo-replication vol0 2.2.2.2::vol0 create push-pem

我得到一个错误。

无法获取从卷详细信息。请检查从属集群和从属卷。异地复制命令失败

在这种情况下,错误并不重要,问题是从 IP 地址

2015-03-16T11:41:08.101229+00:00 xxx kernel: TCP LOGDROP: IN= OUT=eth0 SRC=1.1.1.1 DST=192.168.0.1 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=24243 DF PROTO=TCP SPT=1015 DPT=24007 WINDOW=14600 RES=0x00 SYN URGP=0 

正如您在上面的防火墙丢弃日志中看到的那样,slave gluster 守护程序的端口 24007 在从服务器上接口 eth0 的私有 IP 上公布,并且应该是 eth1 私有 IP 的 IP。所以master无法连接,会超时

有没有办法强制 gluster 服务器宣传接口 eth1 或仅绑定到它?

我使用 cfengine 和 ansible 来推送配置,因此绑定到接口可能是比 IP 更好的解决方案,但无论解决方案如何。

先感谢您。

4

2 回答 2

0

GlusterFS 没有网络层的概念。检查您的路线。如果您的异地复制从站的下一跳位于 eth1 上,则 gluster 将在该接口上为从站 IP 地址打开一个端口。

还要确保您的防火墙配置为在此端口上转发异地复制流量。

于 2015-03-29T22:21:03.377 回答
0

我遇到过这个问题,但在不同的上下文中。我试图对两个都位于 NAT 后面的节点(不同区域的 AWS 实例)进行地理复制。

当主服务器通过公共 IP 连接到从服务器以检查卷兼容性/大小和其他详细信息时,它会检索从服务器的主机名,该主机名通常会解析为仅在该远程区域有意义的内容。

然后它在稍后设置会话时使用该主机名回拨到从属设备,但该会话失败,因为该主机名解析为不同区域的私有 IP。

我对这个问题的解决方法是在创建卷、探测对等方和建立异地复制时使用主机名,然后添加一个 /etc/hosts 条目映射从属主机名,该主机名通常解析为它的私有 IP 到它的公共 IP,而不是它私有IP。

这使您可以建立一个会话,但实际上我没有任何运气让它同步,因为它再次使用了错误的 IP。

编辑:

实际上,我已经设法通过在两侧添加 /etc/hosts hack 来使其运行。

于 2015-10-18T10:46:12.710 回答