我一直在尝试使用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
我收到错误。
无法获取从属卷详细信息。请检查从属群集和从属卷。 geo-replication命令失败
在这种情况下,错误并不重要,问题是从属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
正如您在上面的防火墙丢弃日志中所看到的,从属gluster守护程序的端口24007在从属服务器上的接口eth0的专用IP上公布,并且应该是eth1专用IP的IP。所以主人无法连接并且会超时
有没有办法强制gluster服务器通告接口eth1或只绑定它?
我使用cfengine和ansible来推送配置,因此绑定到Interface可能是比IP更好的解决方案,但无论解决方案是什么。
提前谢谢。
答案 0 :(得分:0)
GlusterFS没有网络层的概念。检查你的路线。如果geo-replication slave的下一跳是在eth1上,那么gluster将在该接口上打开一个用于从IP地址的端口。
还要确保您的防火墙已配置为在此端口上转发地理复制流量。
答案 1 :(得分:0)
我遇到过这个问题,但是在不同的背景下。 我试图对两个都在NAT后面的节点进行地理复制(不同地区的AWS实例)。
当主设备通过公共IP连接到从设备以检查卷兼容性/大小和其他细节时,它会检索从设备的主机名,这通常会解析为仅在该远程区域中具有意义的内容。
然后,当稍后设置会话时,它使用该主机名拨回服务器,该会话失败,因为该主机名解析为不同区域中的私有IP。
我解决此问题的方法是在创建卷时使用主机名,探测对等端并建立地理复制,然后添加/ etc / hosts条目映射从属主机名,该主机名通常解析为其私有IP到其公共IP,而不是它的私人IP。
这可以让你达到建立会话的程度,但我没有任何运气实际上让它同步,因为它在某个地方再次使用错误的IP。
编辑:
我实际上是通过在双方添加/ etc / hosts hacks来设法让它运行。