我有两个VM运行BusyBox (在ESX下)。这些机器只起负载平衡器的作用。
我用笔在每台工作正常的机器上进行负载平衡。但是,当我启动vrrpd ping时,其他功能都不起作用。
每个负载均衡器有3个接口。Management在eth0上,eth1用于第二个负载均衡器设置。
LBCO102A
10.3.16.96 - (eth0) Management IP
10.3.16.84 - (eth2) IP that pen uses
LBCO102B
10.3.16.94 - (eth0) Management IP
10.3.16.85 - (eth2) IP that pen usesvrrpd使用10.3.16.58
在LBCO102A上,我使用以下方法启动vrrpd:
vrrpd -i eth2 -v 58 -p 100 10.3.16.58在LBCO102B上,我使用以下方法启动vrrpd:
vrrpd -i eth2 -v 58 -p 50 10.3.16.58我可以连接到I 10.3.16.84和10.3.16.85,而在端口80上没有问题。我可以连接到管理I 10.3.16.94和10.3.16.96没有问题。当我连接到10.3.16.58时,就会超时。除了一个是主文件而另一个不是主文件之外,/var/run/messages文件中没有显示任何内容。
有谁知道为什么vrrpd除了ping之外不推动交通吗?我有三个这样的装置。一个在pop3上,一个在smtp上,一个在http上。除了平,他们什么都不干。
这里是来自LBCO102A的netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.3.16.107:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.84:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8889 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.107:110 10.3.17.30:53960 TIME_WAIT
tcp 0 0 10.3.16.96:22 10.3.30.154:1224 ESTABLISHED
tcp 0 0 10.3.16.107:110 10.3.17.30:54000 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54102 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54038 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:53959 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54001 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54101 TIME_WAIT
tcp 0 0 10.3.16.96:22 10.3.30.154:1097 ESTABLISHED
tcp 0 0 10.3.16.107:110 10.3.17.30:54037 TIME_WAIT
raw 0 0 0.0.0.0:112 0.0.0.0:* 0
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 7 [ ] DGRAM 983 /tmp/log
unix 2 [ ] DGRAM 1156708
unix 2 [ ] DGRAM 1156657
unix 2 [ ] DGRAM 1156524
unix 2 [ ] DGRAM 192729
unix 2 [ ] DGRAM 994这里是来自LBCO102B的netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.85:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.94:22 10.3.30.154:1118 ESTABLISHED
raw 0 0 0.0.0.0:112 0.0.0.0:* 0
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 6 [ ] DGRAM 981 /tmp/log
unix 2 [ ] DGRAM 188253
unix 2 [ ] DGRAM 179316
unix 2 [ ] DGRAM 179306
unix 2 [ ] DGRAM 988下面是我的启动脚本中的内容。(脚本中有更多用于检查开始/停止/重新启动的内容) LBCO103A
echo -n "Starting eth2: "
ifconfig eth2 10.3.16.84 netmask 255.255.255.0 up
echo "OK"
echo -n "Starting vrrp-ascossrs101: "
vrrpd -i eth2 -v 58 -p 100 10.3.16.58
echo "OK"
echo -n "Starting pen-ascossrs101: "
/bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid 10.3.16.84:80 10.3.16.56:80 10.3.16.57:80
echo "OK"LBCO102B
echo -n "Starting eth2: "
ifconfig eth2 10.3.16.85 netmask 255.255.255.0 up
echo "OK"
echo -n "Starting vrrp-ascossrs101: "
vrrpd -i eth2 -v 58 -p 100 10.3.16.58
echo "OK"
echo -n "Starting pen-ascossrs101: "
/bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid 10.3.16.85:80 10.3.16.56:80 10.3.16.57:80
echo "OK"发布于 2009-10-20 08:09:55
我没有用过钢笔,所以我不太清楚它是怎么用的,但也许能帮上忙。
您能运行netstat -an并提供输出吗?我猜是笔是绑定到eth2 IP上的,不是所有的地址都在盒子上。它应该被配置为0.0.0.0,这样它就可以获取该框拥有的任何地址,或者您的vrrpd主脚本应该运行以使pen绑定到您是VIP。可能会发生的情况是,母脚本必须启动已经配置好的pen,以期望vip绑定到您的eth2界面。
现在用netstat输出编辑:好,下面是问题: LBCO102A tcp 0 10.3.16.84:80 0.0.0.0:*听
10.3.16.84:80意味着您只能绑定到端口80上的10.3.16.84,因此即使服务器有VIP,它也不会监听10.3.16.58端口80。
再说一次,我对钢笔不太熟悉,但假设传递的第一个IP地址是bind: /bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid 10.3.16.84:80 10.3.16.56:80 10.3.16.56:80 10.3.16.56:80 10.3.16.57:80可以是/bin/pen -C 8888 -X -l //log/-C/ascossrs101.log -p /var/log/ascossrs101.pid 0.0.0:80 10.3.16.56:80 10.3.16.57:80
0.0.0.0:80意味着绑定到框上的所有地址和所有接口。
另一种选择可能是使用:/bin/ -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid 10.3.16.58:80 10.3.16.56:80 10.3.16.57:80
但是,我怀疑这是否能够正常工作,因为当程序启动时,VM将没有那个IP地址,因此pen将无法显式地绑定到它。我试着查看vrrpd的文档,我不确定它是否能做到这一点,但是freevrrp有一个主脚本选项,它在接管VIP时基本上会运行一个脚本。因此,您只需添加命令启动pen作为主脚本的一部分,因此当盒子拥有VIP的所有权时,它将启动pen并将其绑定到VIP IP地址。
发布于 2009-10-23 02:41:50
好吧,我想我已经把一切都做好了。这是我从@Kevin那里得到的一些东西的组合,再加上我在网上找到的一些东西(关于vrrpd的东西很少)。
vrrpd触发器似乎告诉服务器侦听IP,因此您不希望启动与IP的接口。接口确实需要一个IP,而不是vrrp将要使用的IP。
我的下一个问题是,我的笔在一个不同于vrrpd的IP上工作。最后,我在所有IP上为端口80上的所有连接列出了pen。如果你不这样做,那么如果钢笔启动,而机器不是主负载平衡器,那么pen就会死掉,因为它正在寻找的IP并不在那里。
我在另一个IP地址上安装了笔,并假设vrrpd是另一个负载均衡器。原来vrrpd只是启动IP并关闭它。
所以,让我们来回顾一下我最后得到的结果。
LBCO102A
10.3.16.96 - eth0 (Management IP)
10.3.16.148 - eth1
LBCO102B
10.3.16.94 - eth0 (Management IP)
10.3.16.149 - eth1然后,这两台机器上的vrrpd配置为10.3.16.58地址,而这两台机器上的笔配置为0.0.0.0。
还有更多的测试要做,但我一直在调试模式下运行pen,并且监视/var/run/messages文件,如果我在主动节点上重新启动vrrpd,它就变成被动的,新的主动节点开始显示通信量。时间会告诉你,但看起来很有希望。
发布于 2009-10-20 08:05:36
只是猜猜看。您可能会将它与在同一子网上有两个接口混淆。您可以尝试为管理网络创建一个独立的子网。
https://serverfault.com/questions/65702
复制相似问题