我正在尝试在 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 地址时,您会看到什么?