gpt4 book ai didi

linux - ldirectord NAT 负载平衡不适用于协商检查

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:58 24 4
gpt4 key购买 nike

我正在使用 ldirectord 对两个 HTTP 服务器进行负载平衡。在负载均衡器盒上,我有以下网络配置:

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

详情如下:

# 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 负载平衡的配置:

# 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 规则来使 NAT 按预期工作:

# 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

现在的问题是,事件检查无法按预期工作。尽管服务器在线(我可以 ping 它们以及所有服务器),但 ldirector 不会这样看待它,并将它们标记为关闭。

如果我使用 ping 检查一切工作正常,但我们需要协商进行更全面的服务检查(服务器 cna 可以 ping 通,但 http 无法正常工作,等等)。

我尝试从负载平衡器盒上的命令行下载alive.htm 页面,但失败。

# 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。这次成功了。

所以在我看来,ldirector 以某种方式阻止自己访问真实服务器上的事件页面?这看起来很奇怪而且不合逻辑。那么我可能做错了什么?

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

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

如何准确跟踪 ldirectord 在事件测试期间正在执行的操作?

一般来说,有人可以阐明或给我一些想法,什么可能是错误的,或者我可能做错了什么。

提前致谢:)

最佳答案

我已在负载均衡器上禁用 IPv6,现在一切正常。我猜 LVS + IPv6 是俄罗斯轮盘赌:)

干杯!

关于linux - ldirectord NAT 负载平衡不适用于协商检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15946227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com