首先感谢您的时间。
我在使用 ldirectord 时遇到了无法解决的问题,我评论了我的情况:
我有两个带有起搏器和 corosync 的节点,并配置了一些资源:
root@ldap1:/home/mamartin# crm 状态
最后更新时间:2014 年 6 月 3 日星期二 12:58:30
最后更改:2014 年 6 月 3 日星期二 12:23:47 通过 ldap1 上的 cibadmin
堆栈:openais
当前 DC:ldap2-具有仲裁的分区
版本:1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
配置了 2 个节点,预期有 2 个投票
已配置 7 个资源。
在线: [ ldap1 ldap2 ]
资源组:IPV_LVS
IPV_4(ocf::heartbeat:IPaddr2):已启动 ldap1
IPV_6(ocf::heartbeat:IPv6addr):已启动 ldap1
lvs(ocf::heartbeat:ldirectord):已启动 ldap1
克隆集:clon_IPV_lo [IPV_lo]
已开始:[ ldap2 ]
已停止:[ IPV_lo:1 ]
root@ldap1:/home/mamartin# crm configure show
node ldap2 \
attributes standby="off"
node ldap1 \
attributes standby="off"
primitive IPV-lo_4 ocf:heartbeat:IPaddr \
params ip="192.168.1.10" cidr_netmask="32" nic="lo" \
op monitor interval="5s"
primitive IPV-lo_6 ocf:heartbeat:IPv6addrLO \
params ipv6addr="[fc00:1::3]" cidr_netmask="64" \
op monitor interval="5s"
primitive IPV_4 ocf:heartbeat:IPaddr2 \
params ip="192.168.1.10" nic="eth0" cidr_netmask="25" lvs_support="true" \
op monitor interval="5s"
primitive IPV_6 ocf:heartbeat:IPv6addr \
params ipv6addr="[fc00:1::3]" nic="eth0" cidr_netmask="64" \
op monitor interval="5s"
primitive lvs ocf:heartbeat:ldirectord \
params configfile="/etc/ldirectord.cf" \
op monitor interval="20" timeout="10" \
meta target-role="Started"
group IPV_LVS IPV_4 IPV_6 lvs
group IPV_lo IPV-lo_6 IPV-lo_4
clone clon_IPV_lo IPV_lo \
meta interleave="true" target-role="Started"
location cli-prefer-IPV_LVS IPV_LVS \
rule $id="cli-prefer-rule-IPV_LVS" inf: #uname eq ldap1
colocation LVS_no_IPV_lo -inf: clon_IPV_lo IPV_LVS
property $id="cib-bootstrap-options" \
dc-version="1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
no-quorum-policy="ignore" \
stonith-enabled="false" \
last-lrm-refresh="1401264327"
rsc_defaults $id="rsc-options" \
resource-stickiness="1000"
问题是 ipvsadm 只显示一个真实 IP,当我现在配置两个时,显示 ldirector.cf:
root@ldap1:/home/mamartin# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP ldap-maqueta.cica.es:ldap wrr
-> ldap2.cica.es:ldap Route 4 0 0
TCP [[fc00:1::3]]:ldap wrr
-> [[fc00:1::2]]:ldap Route 4 0 0
root@ldap1:/home/mamartin# cat /etc/ldirectord.cf
checktimeout=10
checkinterval=2
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=yes
#ipv4
virtual=192.168.1.10:389
real=192.168.1.11:389 gate 4
real=192.168.1.12:389 gate 4
scheduler=wrr
protocol=tcp
checktype=on
#ipv6
virtual6=[[fc00:1::3]]:389
real6=[[fc00:1::1]]:389 gate 4
real6=[[fc00:1::2]]:389 gate 4
scheduler=wrr
protocol=tcp
checkport=389
checktype=on
在日志中我没有看到任何清楚的信息:
root@ldap1:/home/mamartin# ldirectord -d /etc/ldirectord.cf start
DEBUG2: Running system(/sbin/ipvsadm -a -t 192.168.1.10:389 -r 192.168.1.11:389 -g -w 0)
Running system(/sbin/ipvsadm -a -t 192.168.1.10:389 -r 192.168.1.11:389 -g -w 0)
DEBUG2: Quiescent real server: 192.168.1.11:389 (192.168.1.10:389) (Weight set to 0)
Quiescent real server: 192.168.1.11:389 (192.168.1.10:389) (Weight set to 0)
DEBUG2: Disabled real server=on:tcp:192.168.1.11:389:::4:gate:\/: (virtual=tcp:192.168.1.10:389)
DEBUG2: Running system(/sbin/ipvsadm -a -t 192.168.1.10:389 -r 192.168.1.12:389 -g -w 0)
Running system(/sbin/ipvsadm -a -t 192.168.1.10:389 -r 192.168.1.12:389 -g -w 0)
DEBUG2: Quiescent real server: 192.168.1.12:389 (192.168.1.10:389) (Weight set to 0)
Quiescent real server: 192.168.1.12:389 (192.168.1.10:389) (Weight set to 0)
DEBUG2: Disabled real server=on:tcp:192.168.1.12:389:::4:gate:\/: (virtual=tcp:192.168.1.10:389)
DEBUG2: Checking on: Real servers are added without any checks
DEBUG2: Resetting soft failure count: 192.168.1.12:389 (tcp:192.168.1.10:389)
Resetting soft failure count: 192.168.1.12:389 (tcp:192.168.1.10:389)
DEBUG2: Running system(/sbin/ipvsadm -a -t 192.168.1.10:389 -r 192.168.1.12:389 -g -w 4)
Running system(/sbin/ipvsadm -a -t 192.168.1.10:389 -r 192.168.1.12:389 -g -w 4)
Destination already exists
root@ldap1:/home/mamartin# cat /var/log/ldirectord.log
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Quiescent real server: 192.168.1.11:389 (192.168.1.10:389) (Weight set to 0)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Quiescent real server: 192.168.1.12:389 (192.168.1.10:389) (Weight set to 0)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Resetting soft failure count: 192.168.1.12:389 (tcp:192.168.1.10:389)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] system(/sbin/ipvsadm -a -t 192.168.1.10:389 -r 192.168.1.12:389 -g -w 4) failed:
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Added real server: 192.168.1.12:389 (192.168.1.10:389) (Weight set to 4)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Resetting soft failure count: 192.168.1.11:389 (tcp:192.168.1.10:389)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Restored real server: 192.168.1.11:389 (192.168.1.10:389) (Weight set to 4)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Resetting soft failure count: [[fc00:1::2]]:389 (tcp:[[fc00:1::3]]:389)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] system(/sbin/ipvsadm -a -t [[fc00:1::3]]:389 -r [[fc00:1::2]]:389 -g -w 4) failed:
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Added real server: [[fc00:1::2]]:389 ([[fc00:1::3]]:389) (Weight set to 4)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Resetting soft failure count: [[fc00:1::1]]:389 (tcp:[[fc00:1::3]]:389)
[Tue Jun 3 09:39:29 2014|ldirectord.cf|19266] Restored real server: [[fc00:1::1]]:389 ([[fc00:1::3]]:389) (Weight set to 4)
不知道这是一个错误还是配置错误,有人可以帮忙吗?
问候。
答案1
将 i386 服务器从 2.6.32 内核和 1.25 ipvadm 升级到 3.2.0 内核和 1.26 ipvadm 后出现同样的问题,而 ipvsadm 仅显示一个 /proc/net/ip_vs 显示所有真实服务器。
在新安装的 amd64 上一切运行正常。
为了解决这个问题,我应用了这里发布的补丁 http://archive.linuxvirtualserver.org/html/lvs-users/2011-08/msg00033.html 并在这里讨论 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685495