glusterfs geo-replication - 具有两个接口的服务器 - 公布的私有IP
glusterfs geo-replication - server with two interfaces - private IP advertised
我一直在尝试使用 glusterfs 服务器设置异地复制。在我的测试环境和暂存环境中,一切都按预期工作,但后来我尝试了生产并卡住了。
假设我有
gluster fs 服务器在 public ip 1.1.1.1
gluster fs slave 在 public 2.2.2.2 上,但是这个 IP 在接口 eth1 上
gluster fs 从服务器上的 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 daemon 的端口 24007 在从属服务器接口 eth0 的私有 IP 上发布,应该是 eth1 私有 IP 的 IP。所以master连接不上会超时
有没有办法强制 gluster 服务器通告接口 eth1 或只绑定到它?
我使用 cfengine 和 ansible 来推送配置,因此绑定到接口可能是比 IP 更好的解决方案,但无论哪种解决方案都行。
提前致谢。
GlusterFS 没有网络层的概念。检查你的路线。如果您的地理复制从站的下一跳在 eth1 上,则 gluster 将在该接口上为从站 IP 地址打开一个端口。
还要确保您的防火墙配置为在此端口上转发异地复制流量。
我遇到过这个问题,但在不同的环境中。
我试图对两个节点进行地理复制,这两个节点都位于 NAT 之后(不同区域的 AWS 实例)。
当主机通过 public IP 连接到从机以检查卷 compatability/size 和其他详细信息时,它会检索从机的主机名,该主机名通常解析为仅有意义的内容在那个偏远地区。
然后它在稍后设置会话时使用该主机名拨回从属服务器,但失败了,因为该主机名解析为不同区域中的私有 IP。
我解决这个问题的方法是在创建卷、探测对等点和建立地理复制时使用主机名,然后添加一个 /etc/hosts 条目映射从属主机名,该主机名通常解析为其私有 IP public IP,而不是私有IP。
这会让您到达建立会话的地步,但实际上我没有任何运气让它同步,因为它在很长一段时间内再次使用了错误的 IP。
编辑:
实际上,我已经 运行 通过在两侧添加 /etc/hosts hack 来实现它。
我一直在尝试使用 glusterfs 服务器设置异地复制。在我的测试环境和暂存环境中,一切都按预期工作,但后来我尝试了生产并卡住了。
假设我有
gluster fs 服务器在 public ip 1.1.1.1
gluster fs slave 在 public 2.2.2.2 上,但是这个 IP 在接口 eth1 上 gluster fs 从服务器上的 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 daemon 的端口 24007 在从属服务器接口 eth0 的私有 IP 上发布,应该是 eth1 私有 IP 的 IP。所以master连接不上会超时
有没有办法强制 gluster 服务器通告接口 eth1 或只绑定到它?
我使用 cfengine 和 ansible 来推送配置,因此绑定到接口可能是比 IP 更好的解决方案,但无论哪种解决方案都行。
提前致谢。
GlusterFS 没有网络层的概念。检查你的路线。如果您的地理复制从站的下一跳在 eth1 上,则 gluster 将在该接口上为从站 IP 地址打开一个端口。
还要确保您的防火墙配置为在此端口上转发异地复制流量。
我遇到过这个问题,但在不同的环境中。 我试图对两个节点进行地理复制,这两个节点都位于 NAT 之后(不同区域的 AWS 实例)。
当主机通过 public IP 连接到从机以检查卷 compatability/size 和其他详细信息时,它会检索从机的主机名,该主机名通常解析为仅有意义的内容在那个偏远地区。
然后它在稍后设置会话时使用该主机名拨回从属服务器,但失败了,因为该主机名解析为不同区域中的私有 IP。
我解决这个问题的方法是在创建卷、探测对等点和建立地理复制时使用主机名,然后添加一个 /etc/hosts 条目映射从属主机名,该主机名通常解析为其私有 IP public IP,而不是私有IP。
这会让您到达建立会话的地步,但实际上我没有任何运气让它同步,因为它在很长一段时间内再次使用了错误的 IP。
编辑:
实际上,我已经 运行 通过在两侧添加 /etc/hosts hack 来实现它。