![从不同子网对 Linux HA 群集的虚拟 IP 执行 ping 操作不起作用](https://linux22.com/image/553372/%E4%BB%8E%E4%B8%8D%E5%90%8C%E5%AD%90%E7%BD%91%E5%AF%B9%20Linux%20HA%20%E7%BE%A4%E9%9B%86%E7%9A%84%E8%99%9A%E6%8B%9F%20IP%20%E6%89%A7%E8%A1%8C%20ping%20%E6%93%8D%E4%BD%9C%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我已经使用 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?