Heartbeat Score的計算-

Steven1981發表於2009-11-24
上一篇,我們講了在一個資源組只配置一個資源的簡單環境中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部落格 ” ,連結:http://blog.itpub.net/703656/viewspace-1028999/,如需轉載,請註明出處,否則將追究法律責任。

Heartbeat Score的計算-
請登入後發表評論 登入
全部評論

相關文章