我正在使用它来平衡并从http / https集群中移除失败的实例,但是注意到,当连接到真实服务器挂起时,ldirectord永远不会将它们标记为静态,尽pipe如果连接被拒绝或无法build立,例如,closures实例或nginx停止。
在这种情况下,这有点问题,因为服务器是偶尔会完全挂起的云实例,并使用应用服务器堆栈,偶尔会重新启动直到发生无限循环; 这两种情况导致连接挂起。
这是一个/etc/ha.d conf的例子:
negotiatetimeout = 1 checkinterval = 1 quiescent = yes fallback = 127.0.0.1 emailalert = "[email protected]" virtual = <vip 1>:80 protocol = tcp scheduler = wlc real = <real ip 1>:80 ipip 5 real = <real ip 2>:80 ipip 5 [more reals] checktype = negotiate request = "/node-status" receive = "OK" virtual = <vip 2>:443 protocol = tcp scheduler = wlc real = <real ip 1>:443 ipip 5 real = <real ip 2>:443 ipip 5 [more reals] checktype = negotiate request = "/node-status" receive = "OK"
一个平衡器是Ubuntu 10.10,另一个是10.04.2,ldirectord是1.186公顷。
请注意,这个2002线程意味着ldirectord没有捕获挂起的连接,然后: http : //archive.linuxvirtualserver.org/html/lvs-users/2002-05/msg00163.html
UPDATE
请注意,上述时间是积极的,而我试图指出这个问题,通常他们更高,包括failurecount, 但我已经看到上面和下面的设置的问题 :
negotiatetimeout = 2 checkinterval = 2 failurecount = 5
此外,ldirectord的日志文件显示,在真正的服务器上发生这些“中断”之一或之前没有条目。 但是如果http服务或者实例本身被closures了,那么“挂起”的时候,ipvsadm和日志文件立即显示出来,正确地显示IP变为静止状态。
而且,当我说“服务器挂起”,我的意思是整个(云)实例没有响应,所有连接尝试最终超时(ping,ssh,http,无论),控制台也是如此。
不幸的是,我还没有find导致服务器进入这种状态的问题(服务器挂起和堆栈无限循环)的根本原因,所以我不能(需要)重新制作这种情况。
我不是100%确定的,但是在使用请求和接收时你不需要“service = http”指令吗? 你尝试没有请求/接收,并使用checktype =连接? 或者“服务器挂起”是什么意思? 连接超时? 你可以请添加日志文件? 例如logfile =“/ var / log / ldirectord_vhost.log”
一般来说,设置checktimeout = 10(不知道默认是在这里)