今天集群中的一个App节点因为程序错误(我称之为撞车,系统的负载能力跟高速公路的车辆通行能力很相似,可以类比)导致系统负载急剧增加,直至没有响应,挂掉了。
本来按照预计,挂掉的节点应该在6秒钟内权值(weight)被自动降为零。然后等了一分钟,也没有被降权,立刻意识到,nanny遇到了我之前做监按、写监控经常遇到的问题,超时问题。
nanny在App高负载的情况下迟迟得不到应答(不知道进行到了哪一步),不知怎么办是好了。
在配置文件里明明是有timeout配置的,不知道为什么没有生效,看来到目前为止,我们的LVS集群,还是不能完全无人值守的,占个位置,等待新的研究结果:
………………
我想请教一下,这种情况用keepalived会怎样?? keepalived 能对节点机做健康检查,可以自定义检查方式和时间间隔,如果有节点机的WEB服务不正常,keepalived会动态修改LVS规则,将该节点机删除。
花开 Reply:
十一月 13th, 2008 at 0:48
Keepalived我没有实践过,包括用的较多的heartbeat。
使用Piranha主要是因为是RedHat提供的组件,方便一些。从原理上讲,我相信这几个程序应该差不多的。最早的时候,我甚至写Shell脚本使用Nagios的监控来做节点的状态检查,并进行相应的权值控制。Nagios的监控对“超时”的控制是丰常到位的。
按理说,应该是不会遇到今天类似的情况的。之前已经测试过,停止web、使用防火墙drop掉80端口访问等,都能及时有响应。这次还不能完全确定是nanny对“超时”管理不当造成的,只是估计。
突然想起来,Piranha的一个独到之处,它可以通过检测节点的load信息,自动调整节点的权值。不知道keepalved和heartbeat有没有类似的功能。还有Piranha提供了一个Web的配置管理界面Piranha-gui(不要鄙视我),这对于那些不熟悉LVS的管理员来说,是个有吸引力的东西。
wlong Reply:
十一月 17th, 2008 at 10:20
谢谢你的回复!!!
“Piranha的一个独到之处,它可以通过检测节点的load信息,自动调整节点的权值。不知道keepalved和heartbeat有没有类似的功能。”
我看keepalived没有这个功能。
Keepalived 只支持:
TCP_CHECK check real server availability using TCP connect
MISC_CHECK check real server availability using user defined script
HTTP_GET check real server availability using HTTP GET request
SSL_GET check real server availability using SSL GET request
http://www.keepalived.org/pdf/UserGuide.pdf
通过”user defined script” 大概也可以取到load信息,但是keepalived只能往LVS规则里添加和删除real server,不能动态修改real server的权值,从文档上没有找到这方面的功能。
另外一个参考信息是:
http://kb.linuxvirtualserver.org/wiki/LVS_Cluster_Management
There are many cluster management software in conjuction with LVS to provide high availability and management of the whole system.
Piranha
Keepalived
UltraMonkey
heartbeat plus ldirectord
heartbeat plus mon
feedbackd
ipvsman
LVSM
lvs-kiss
SCOP
OpenSSI Cluster integrated HA-LVS
好多呀!究竟哪一个更好呢?我打算再试第1和4、5看看。
Tony Reply:
十二月 12th, 2008 at 2:42
請問
1.piranha可以裝在其他例如bsd或ubuntu等的其他linux版本
嗎?
2.在piranha或feedbacked中,可以自行設定我自己特定的動態權值
計算公式,好讓他自動幫我real time計算動態權值並設定嗎????
如果可以,是要改source還是怎樣實現????
請高手們解惑,感恩!!!!!!!!!!!!!!!!!!
花开 Reply:
十二月 16th, 2008 at 10:18
用在ubuntu上,理论上是没有问题的。
用在BSD上,可能需要做不少额外的工作。
Piranha在动态调整“权值”时,使用的应该是自己的算法,无法控制(没有查到相关资料)。假如要实现控制,恐怕也有改写代码了。
feedbacked不太熟悉。
花开同学这个日志写得用我们家乡话说就是:牛哄哄的~~
很不错,期待结果
很专业,学习来了~~~
请问楼主,nanny进程得到的load信息都包括哪些?我想用Realserver的CPU利用率和服务响应时间两个指标作为LVS director调度的依据,不知能不能用nanny实现?还是需要自己写脚本?谢谢指点!
请问楼主,nanny提供的load信息都包括哪些?我想用Realserver的cpuload和服务的response time两项做lvs director 调度的依据,用nanny行吗?还是需要自己写脚本?