首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ldirectord NAT负载平衡不适用于协商检查。

ldirectord NAT负载平衡不适用于协商检查。
EN

Server Fault用户
提问于 2013-04-11 09:29:37
回答 1查看 736关注 0票数 0

我使用ldirectord来实现两个HTTP服务器的负载平衡。在负载均衡器框中,我有以下网络配置:

eth0用于内部目的,根本不参与负载平衡。在eth1上,我已经为机器配置了公共IP (用于访问其他内部网络)和负载均衡器的VIP。eth2用于访问位于不同子网中的实际服务器,这些服务器只能通过同一个子网的IP访问。

详情如下:

代码语言:javascript
复制
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
inet 127.0.0.2/8 brd 127.255.255.255 scope host secondary lo
inet6 ::1/128 scope host
   valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:a5:77:ae brd ff:ff:ff:ff:ff:ff
inet 192.168.8.216/22 brd 192.168.11.255 scope global eth0
inet6 fe80::250:56ff:fea5:77ae/64 scope link
   valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:a5:77:af brd ff:ff:ff:ff:ff:ff
inet 172.22.9.100/22 brd 172.22.11.255 scope global eth1:1
inet 172.22.8.213/22 brd 172.22.11.255 scope global secondary eth1
inet6 fe80::250:56ff:fea5:77af/64 scope link
   valid_lft forever preferred_lft forever

4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:a5:77:b0 brd ff:ff:ff:ff:ff:ff
inet 172.22.1.130/24 brd 172.22.1.255 scope global eth2
inet6 fe80::250:56ff:fea5:77b0/64 scope link
   valid_lft forever preferred_lft forever

下面是我的NAT负载平衡的配置:

代码语言:javascript
复制
# cat /etc/ha.d/ldirectord.cf
autoreload = yes
quiescent = yes
checkinterval = 10
negotiatetimeout = 10
checktimeout = 5
emailalert = "Konstantin.Boyanov@bmf.bund.de"
emailalertfreq = 60
failurecount = 3


virtual = 172.22.9.100:80
    checktimeout = 10
    checktype = negotiate
    failurecount = 2
    negotiatetimeout = 10
    protocol = tcp
    quiescent = yes
    real = 172.22.1.133:80 masq 1024
    real = 172.22.1.134:80 masq 1024
    request = "alive.htm"
    receive = "I am alive"
    scheduler = wrr
    service = http
    persistent = 5

我还有另外两个iptables规则来使NATing按预期工作:

代码语言:javascript
复制
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  anywhere             anywhere            to:172.22.9.100
SNAT       all  --  anywhere             anywhere            to:172.22.1.130

现在的问题是,活动检查不像预期的那样工作。虽然服务器是在线的(我可以对它们和所有服务器进行平击),但ldirector并不这样认为,并将它们标记为下线。

如果我使用ping检查一切正常,但我们需要协商,为更全面的服务检查(服务器cna是可点击,但http不工作,等等)。

我试图从负载均衡器框中的命令行下载alive.htm页面,但失败了。

代码语言:javascript
复制
# wget http://172.22.1.133/alive.htm
--2013-04-11 09:52:44--  http://172.22.1.133/alive.htm
Connecting to 172.22.1.133:80... failed: Connection timed out.
Retrying.

首先,我认为问题在于iptables规则。我删除了它们,但仍然无法用wget下载活动页面(以及curl和w3m )。我试着从另外两台机器上获得它,它们都来自不同的子网络,并且工作得很好!我意识到负载平衡器盒有问题。

然后我关闭了ldirectord,再次尝试了wget。这次起作用了。

所以在我看来,导演似乎在某种程度上阻止了自己访问真正服务器上的活动页面?这似乎很奇怪,也不符合逻辑。那我能做错什么呢?

这些问题不是由iptables规则引起的,因为当我删除它们时,alive.htm页面仍然不可用。

真正的服务器都可以从负载均衡器(pingable)访问。我是否有一些ldirectord配置问题?

我怎样才能准确地跟踪在活着的测试中ldirectord在做什么呢?

一般来说,有人能给我一些启示或者给我一些想法--什么可能是错的,什么是我可能做错的。

(预先谢谢:)

EN

回答 1

Server Fault用户

回答已采纳

发布于 2013-04-12 06:47:51

我在负载平衡器上禁用了IPv6,现在一切正常。我猜LVS + IPv6是俄罗斯的rooulette :)

干杯!

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/498331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档