ITPub博客

首页 > 应用开发 > IT综合 > Heartbeat Score的计算-

Heartbeat Score的计算-

原创 IT综合 作者:Steven1981 时间:2009-11-24 10:49:24 0 删除 编辑
上一篇,我们讲了在一个资源组只配置一个资源的简单环境中SCORE的计算.
(在看这篇之前建议大家先看: http://steven1981.itpub.net/post/7967/494028)

在这里我们继续研究,在一个资源组里配置了N个资源(N>=2)的情况中,SCORE的计算:
注:以下所有得出的结论是基于<2resource2group4score>的配置环境测试的。
(1个资源组只配置1个资源,简称其cib.xml原文见 http://steven1981.itpub.net/post/7967/494030)
[@more@]

0.资源要切换不再以单个资源的分数来比较. 而是以该资源组的N个资源SCORE之和,我们下面称它为
NodeX.all.score=mysqlX.resource1.score+ .... + mysqlX.resourceN.score


1.当HB发现NodeX上的资源失败或发生切换时,会减去之前赋给该NODE的"成功分:N*default-resource-stickiness",
NodeX.resourceY.score -= N * default-resource-stickiness
NodeX.all.score = NodeX.resource1.score + ...... + NodeX.resource2.score

2.当HB发生NodeX资源失败时,会给该NODE加上"失败分:default-resource-failure-stickiness"
NodeX.resourceY.score += default-resource-failure-stickiness
NodeX.all.score = NodeX.resource1.score + ...... + NodeX.resource2.score

3.当HB的资源成功在NODE上START,那么会给该NodeX加上"成功分:N*default-resource-stickiness"
NodeX.resourceY.score += N * default-resource-stickiness
NodeX.all.score = NodeX.resource1.score + ...... + NodeX.resource2.score

4.其他算法同配置<2resource2group4score>. 见:http://steven1981.itpub.net/post/7967/494028
下面我们以一些例子来说明这复杂的计算方法:
例1:
default-resource-stickiness=100 default-resource-failure-stickiness=-100
mysql4.ipaddr.score=150 mysql3.ipaddr.score=200
mysql4.mysql.score=350 mysql3.mysql.score=400
SCOREResource StatusActionMEMO
mysql3.ipaddrmysql4.ipaddrmysql3.mysqlmysql4.mysqlmysql3.allmysql4.allmysql3.statusmysql4.status  
4001506003501000500Ipaddr/mysql Start 
400150500350900500Ipaddr/mysql mysql stop 
400150400350800500Ipaddr/mysql mysql stop 
400150300350700500Ipaddr/mysql mysql stop 
400150200350600500Ipaddr/mysql mysql stopmysql4.mysql.score > mysql3.mysql.score ,但未发生切换. 因为综合分还相等.
400150100350500500Ipaddr/mysql mysql stop 
4001500350400500   这段是过渡的计算,mysql3.all < mysql4.all ,需要切换
200350-200550-100000900 Ipaddr/mysql mysql3两个资源都切换了,所以都减200

例2:
default-resource-stickiness=0 default-resource-failure-stickiness=-100
mysql4.ipaddr.score=375 mysql3.ipaddr.score=400
mysql4.mysql.score=775 mysql3.mysql.score=800
这样配,只要任何一个资源DOWN,那么资源就往对方切换。可以一直回来切换.直到分数为负数.
但是,如果一台机器重启了,那么重启后会接管资源,因为他的SCORE比较高。
SCOREResource StatusActionMEMO
mysql3.ipaddrmysql4.ipaddrmysql3.mysqlmysql4.mysqlmysql3.allmysql4.allmysql3.statusmysql4.status  
40037580077512001150Ipaddr/mysql Start 
40037570077511001150 Ipaddr/mysqlmysql down 
40027570077511001050Ipaddr/mysql ipaddr down 
30027570077510001050 Ipaddr/mysqlipaddr down在这里看到,mysql3.ipaddr>mysql4.ipaddr,但发生了切换.
因为mysql3.all
40027580077512001050Ipaddr/mysql mysql3.HB stop_start自动切换回来.mysql3.all.score> mysql4.all.score

例3:default-resource-stickiness=5 default-resource-failure-stickiness=-23
mysql4.ipaddr.score=99 mysql3.ipaddr.score=100
mysql4.mysql.score=99 mysql3.mysql.score=100
这样的配置,如果每次在切换后,把失败NODE的HB重启,或者分数置到CIB.SET. 那么,可以一直来回切换.
不然: 第一次,只要有任何一个资源失败,就发生切换. 第二次,需要有两次资源失败,才会发生切换.
 
SCOREResource StatusActionMEMO
mysql3.ipaddrmysql4.ipaddrmysql3.mysqlmysql4.mysqlmysql3.allmysql4.allmysql3.statusmysql4.status  
1109911099220198Ipaddr/mysql Start 
879911099197198  mysql3.ipaddr down中间计算,HB认为需要切换
77109100109177218 Ipaddr/mysql  
7786100109177195  mysql4.ipaddr down中间计算,HB认为不需要切换.因为mysql4.all.score > mysql3.all.score
7786100109177195 Ipaddr/mysql  
778610086177172  mysql4.mysql stop中间计算,HB认为需要切换.因为mysql4.all.score < mysql3.all.score
877611076197152Ipaddr/mysql   
例4:
default-resource-stickiness=5 default-resource-failure-stickiness=-10
mysql4.ipaddr.score=100 mysql3.ipaddr.score=100
mysql4.mysql.score=100 mysql3.mysql.score=100
SCOREResource StatusActionMEMO
mysql3.ipaddrmysql4.ipaddrmysql3.mysqlmysql4.mysqlmysql3.allmysql4.allmysql3.statusmysql4.status  
110100110100220200Ipaddr/mysql Start 
100100110100

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/703656/viewspace-1028999/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    127
  • 访问量
    855003