从不同子网对 Linux HA 群集的虚拟 IP 执行 ping 操作不起作用

从不同子网对 Linux HA 群集的虚拟 IP 执行 ping 操作不起作用

我已经使用 Corosync/Pacemaker 设置了一个 Linux 集群,并且两个集群节点位于共享虚拟 IP 的同一子网内。对于同一子网内的机器,它们可以成功 ping 虚拟 IP“135.121.192.104”。

但是,如果我尝试从不同子网的机器 ping 虚拟 IP“135.121.192.104”,它不会响应我的 ping。其他机器位于子网“135.121.196.x”上。

在我的计算机上,ifcfg-eth0 文件中有以下子网掩码:

网络掩码=255.255.254.0

下面是我的 crm configure show 的输出:

[root@h-008 crm]# crm configure show
node h-008 \
        attributes standby="off"
node h-009 \
        attributes standby="off"
primitive GAXClusterIP ocf:heartbeat:IPaddr2 \
        params ip="135.121.192.104" cidr_netmask="23" \
        op monitor interval="30s" clusterip_hash="sourceip"
clone GAXClusterIP2 GAXClusterIP \
        meta globally-unique="true" clone-node-max="2"
property $id="cib-bootstrap-options" \
        dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
        cluster-infrastructure="openais" \
        expected-quorum-votes="2" \
        no-quorum-policy="ignore" \
        stonith-enabled="false"
rsc_defaults $id="rsc-options" \
        resource-stickiness="100"

以及 crm_mon 状态的输出:

[root@h-009 crm]# crm_mon status --one-shot
non-option ARGV-elements: status
============
Last updated: Thu Jun 23 08:12:21 2011
Stack: openais
Current DC: h-008 - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ h-008 h-009 ]

 Clone Set: GAXClusterIP2 (unique)
     GAXClusterIP:0     (ocf::heartbeat:IPaddr2):       Started h-008
     GAXClusterIP:1     (ocf::heartbeat:IPaddr2):       Started h-009

我是 Linux HA 集群设置的新手,无法找出问题的根本原因。是否有任何配置可以检查以诊断此问题?

补充评论:

Below is the output of "route -n"

[root@h-008 crm]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
135.121.192.0   0.0.0.0         255.255.254.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         135.121.192.1   0.0.0.0         UG    0      0        0 eth0

以下是从集群机器到集群外机器的 traceroute 输出:

[root@h-008 crm]# traceroute 135.121.196.122
traceroute to 135.121.196.122 (135.121.196.122), 30 hops max, 40 byte packets
 1  135.121.192.1 (135.121.192.1)  6.750 ms  6.967 ms  7.634 ms
 2  135.121.205.225 (135.121.205.225)  12.296 ms  14.385 ms  16.101 ms
 3  s2h-003.hpe.test.com (135.121.196.122)  0.172 ms  0.170 ms  0.170 ms

以下是从集群外部的机器到虚拟 IP 135.121.192.104 的 traceroute 输出:

[root@s2h-003 ~]# traceroute 135.121.192.104
traceroute to 135.121.192.104 (135.121.192.104), 30 hops max, 40 byte packets
 1  135.121.196.1 (135.121.196.1)  10.558 ms  10.895 ms  11.556 ms
 2  135.121.205.226 (135.121.205.226)  11.016 ms  12.797 ms  14.152 ms
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  *

但是当我尝试对其中一个节点的集群真实 IP 地址进行跟踪路由时,跟踪路由成功,即:

[root@s2h-003 ~]# traceroute 135.121.192.102
traceroute to 135.121.192.102 (135.121.192.102), 30 hops max, 40 byte packets
 1  135.121.196.1 (135.121.196.1)  4.994 ms  5.315 ms  5.951 ms
 2  135.121.205.226 (135.121.205.226)  3.816 ms  6.016 ms  7.158 ms
 3  h-009.msite.pr.hpe.test.com (135.121.192.102)  0.236 ms  0.229 ms  0.216 ms

答案1

您犯了一个错误,认为集群配置与您看到的问题有关,因为这对您来说是一个新领域。集群软件所做的只是管理(和监控)资源,在本例中是它将在集群中的主机上配置的 IP 地址。您可以轻松删除整个集群配置并在其中一个节点上启用 IP 地址,您会看到完全相同的问题。

显然,如果您可以从同一网络访问 IP,但不能从其他网络访问,则存在路由问题。请检查您的路由器配置。

顺便说一句,在集群中禁用 stonith 会导致数据丢失或损坏。我希望您只在测试期间禁用它。

答案2

集群节点上的默认路由指向哪里?或者更具体地说,集群节点尝试将流量路由到 135.121.196.x 子网吗?

答案3

看起来客户端(s2h-003)上的默认路由是 135.121.205.226,并且该机器似乎没有通向目标的路由,因此它要么丢弃数据包,要么通过其自己的默认网关将其发送出去(并且永不回来)。

考虑到这个 IP 地址与集群的默认路由非常相似,是不是打错了?显然,集群和客户端都可以访问 135.121.205.x 子网。也许您应该将客户端上的默认网关设置为 135.121.205.225,而不是 135.121.205.226?

相关内容