Pacemaker 虚拟 IP 和 IPTables

Pacemaker 虚拟 IP 和 IPTables

我正在尝试在 Ubuntu Server 10.04 上设置一个由两个运行 Heartbeat、Pacemaker 和 Varnish 的 VMware VM 组成的集群,目的是将它们用作其他 VM 的主加载器和备用加载器平衡器。Varnish 运行良好,Heartbeat 按照以下 ha.cf 配置按预期接收两个 VM:

autojoin none
bcast eth0
crm respawn
deadtime 20
initdead 120
keepalive 2
logfacility syslog
node VMViper
node VMJester
warntime 5

VPViper 的 IP 为 192.168.1.54,VMJester 的 IP 为 192.168.1.53。我已在 /etc/hosts 中设置了这些 IP,并在物理路由器(WRT54GL,Tomato 1.28)上使用静态 DHCP。我可以通过浏览器中的任一 IP 查看后端网站。

IPTables 如下所示:

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 694 -j ACCEPT

我现在想在 Pacemaker 中拥有一个为网站提供服务的虚拟 IP。我目前已获得:

sudo crm configure property stonith-enabled=false
sudo crm configure primitive cluster ocf:heartbeat:IPaddr params ip=192.168.1.61 op monitor interval=10s

这将创建一个工作集群(诚然,到目前为止缺少任何重要的配置):

node $id="08a94061-336c-422d-bf72-910662045127" vmviper
node $id="d4364751-0307-4a71-a303-5df01cbc919c" vmjester
primitive mycluster ocf:heartbeat:IPaddr \
    params ip="192.168.1.61" \
    op monitor interval="10s"
property $id="cib-bootstrap-options" \
    dc-version="1.0.8-042548a451fce8400660f6031f4da6f0223dd5dd" \
cluster-infrastructure="Heartbeat" \
stonith-enabled="false"

关闭任一虚拟机都会将集群的位置 (sudo crm resource status mycluster) 移至正在运行的机器。到目前为止一切顺利,但现在我缺乏网络天赋,这意味着我遇到了瓶颈。所以现在我有很多问题:

我不太理解虚拟 IP 的概念。我已将 192.168.1.61 添加到 Pacemaker 配置中作为我的虚拟 IP,但尚未在其他地方引用它。我是否应该在路由器接口中看到新虚拟接口的 MAC 地址?我需要进行哪些更改才能使其可见?

假设我还应该设法将 192.168.1.54 和 192.168.1.53 隐藏起来,不让外界看到。我该怎么做?

我读过的一篇文章说我需要在 /etc/sysctl.conf 中设置 net.ipv4.ip_forward = 1。这是必要的步骤吗?

答案1

虚拟 IP (VIP) 在两个真实 IP 地址之间浮动。其目的是在主集群节点发生故障时,从外部世界获得一个一致的 IP 地址。它使用保存真实 IP 地址的接口的 MAC 地址。

您可能最终想要隐藏 .53 和 .54 地址,但我不会担心这一点。

如果您的冗余负载均衡器后面有其他服务器,则您需要 ip_forward,因为您的负载均衡器将充当路由器,因此需要转发流量。

当您将浏览器指向 192.168.1.61 地址时,您会看到什么?

相关内容