RHCS°ü·Ã QUORUMÀ» À§ÇÑ ½ÉÈÇнÀ
¾Æ·¡ÀÇ ±ÛÀº RHCS °ü·Ã QuorumÀ» À§ÇÑ °ü·Ã ³»¿ëÀ» ¼Ò°³ÇÑ ±ÛÀÔ´Ï´Ù.. ¾Æ·¡ÀÇ ÂüÁ¶µÈ ¸µÅ©ÀÇ ±ÛÀÔ´Ï´Ù.
ÂüÁ¶ :
http://joonlinux.blogspot.kr/2013/04/rhcs.html
RHCS °ü·Ã quorum À» À§ÇÑ ½ÉÈ ÇнÀ
Äõ·³ µð¹ÙÀ̽º´Â CMAN ¿¡¼ »ç¿ëÇÏ´Â vote ¾Ë°í¸®ÁòÀÌ´Ù. Ŭ·¯½ºÅÍ¿¡¼ ÇÊ¿äÇÑ Á¤Á·¼ö(°ú¹Ý¼ö)¸¦ À¯ÁöÇϹǷνá 1°³ÀÇ ³ëµå¸¸ »ìÀÌÀÖ´Â °æ¿ì¿¡µµ ¼ºñ½º¸¦ ÇÏ°Ô ÇØÁÖ¸ç, ÇϳªÀÇ ³ëµå¿¡¼ ¸¶½ºÅÍ°¡ ¼±ÃâµÇ¾î ½ºÇÁ¸®Æ® ºê·¹ÀÎÀÌ ¹ß»ýÇÏ´Â °ÍÀ» ¹æÁöÇØ ÁØ´Ù.
ÇÏÁö¸¸ ¡°Äõ·³¡± ÀÌ ½ºÇÁ¸®Æ® ºê·¹ÀÎÀÌ ¹ß»ýÇÏ´Â »óȲÀ» ¹æÁöÇØ ÁÖÁö´Â ¸øÇÑ´Ù.
Áï º°µµÀÇ ÇÏÆ®ºñÆ® ¶óÀÎ °°Àº ¿ªÈ°À» ÇÏÁö ¾Ê´Â ´Ù´Â °ÍÀÌ´Ù. º¸Åë RHCS À» µµÀÔÇÑ °í°´ÀÌ Äõ·³ µð¹ÙÀ̽º¸¦ »ç¿ëÇϴµ¥ ½ºÇÁ¸®Æ® ºê·¹ÀÎÀÌ ¿Ö ¹ß»ýÇÏ´ÂÁö ¹°¾î º¸´Â °æ¿ì°¡ Àִµ¥ ÀÌ °ÍÀº Äõ·³ÀÇ ¿ªÈ°À» À߸ø ÀÌÇØÇÏ°í
ÀÖ´Â °æ¿ìÀÌ´Ù.
Äõ·³Àº ÇÏÆ®ºñÆ®ÀÇ ¿ªÈ°ÀÌ ¾Æ´Ï¶ó ÇϳªÀÇ ³ëµå°¡ ÅõÇ¥¿¡¼ ÀÌ°Ü ¿ÀÁ÷ ÇϳªÀÇ ³ëµå¿¡¼¸¸ ¼ºñ½º¸¦ ¶ç¿ï ¼ö ÀÖµµ·Ï (¿ÀÁ÷ ÇϳªÀÇ ³ëµå¿¡¼¸¸ Active °¡ µÉ ¼ö ÀÖµµ·Ï) ÇÏ´Â ¿ªÈ°À» ÇØÁØ´Ù.
ÇöÀç RHCS Ŭ·¯½ºÅÍ´Â 128 °³ÀÇ ¸É¹ö°¡ ÀÖÀ» ¼ö ÀÖ´Ù. ÇÏÁö¸¸ qdisk ´Â ³ëµå°£ÀÇ I/O °æÇÕÀÇ ¹®Á¦·Î 16°³ÀÇ ¸É¹ö¸¸ Áö¿øÀ» ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î RHCS ÀÇ ±¸¼º °¡´ÉÇÑ ³ëµå¸¦ º¸Åë 16°³·Î ¼³¸íÇÑ´Ù. Äõ·³¾ø´Â °æ¿ì 128°³±îÁö °¡´ÉÇÏÁö¸¸ ÀÌ°æ¿ì Á¤Á·¼ö¸¦ À¯ÁöÇϱâÀ§Çؼ´Â °ú¹Ý¼ö ÀÌ»óÀÇ ¼¹ö°¡ ±¸µ¿ ÁßÀ̾î¾ß ÇÑ´Ù. (¹°·Ð Àüü vote ¼ö¸¦ Á¶ÀýÇÏ¿© °¡´ÉÇÏÁö¸¸ ¾î¶°ÇÑ °æ¿ì¶óµµ 2´ë ÀÌ»óÀº »ì¾Æ ÀÖ¾î¾ß ÇÑ´Ù.)
±âº»°ª:expected_votes = total_vote = nodes total votes + quorum disk votes
Äõ·³ÀÇ Á¤Á·¼ö ±â´É¿¡ ´ëÇÑ ¼³¸í
À̶§ Äõ·³ µð¹ÙÀ̽º°¡ ¾ø°í Àüü 4°³ ³ëµå°¡ Ŭ·¯½ºÅÍ·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç °¢°¢ÀÇ ³ëµå vote °¡ 1À̶ó¸é,
expected_votes = 4 = 1+1+1+1
ÀÌ °°Àº °æ¿ì Á¤Á·¼ö´Â 3À̵ȴÙ. (flor(expected_votes/2)+1) Áï ÃÖ¼ÒÇÑ 3°³ÀÇ ³ëµå°¡ »ì¾Æ ÀÖ¾î¾ß vote °¡µÇ¸ç ¼ºñ½º ³ëµå°¡ ¼±Á¤µÉ ¼ö ÀÖ´Ù. ±×·¡¼ ÇϳªÀÇ Å¬·¯½ºÅ͸¸ »ì¾Æµµ ¼ºñ½º°¡ µÇ¾î¾ß ÇÑ´Ù¸é ±âº»ÀûÀ¸·Î vote ¸¦ Äõ·³ÀÌ ÇÊ¿äÇÏ°Ô µÇ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» all-but-one »óÅ´ٶó°í ¸»ÇÑ´Ù.
À§ÀÇ »óȲ¿¡¼ Äõ·³À» Ãß°¡ÇÑ´Ù¸é Äõ·³ÀÇ ÅõÇ¥¼ö´Â ±âº»°ªÀÌ ¡°Àüü ³ëµå¼ö -1¡± ÀÌ µÈ´Ù
.
expected_votes = 7 = 1+1+1+1+3
Ä¿·³ÀÌ ÀÖÀ» °æ¿ì °¢ ³ëµåÀÇ ÅõÇ¥¼ö´Â 1ÀÌ µÇ¾î¾ß ÇϹǷΠ(3=total_vote-1)°ú ÅëÀÏÇÏ´Ù. Äõ·³ÀÇ ÅõÇ¥¼ö¸¦ Àüü ³ëµå ¼ö¿Í µ¿ÀÏÇÏ°Ô Çϸé(Äõ·³ ÅõÇ¥¼ö¸¦ 4·Î ÇÑ °æ¿ì) 1°¡ »ì¾Æ ÀÖ´õ¶óµµ °ú¹Ý¼ö¸¦ ³Ñ°Ô µÇ¹Ç·Î all-but-one »óżµµ ¼ºñ½º°¡
°¡´ÉÇÏ´Ù. (flor(8/2)+1)=5) -> Äõ·³ ÅõÇ¥¼ö°¡ ¡°4¡±ÀÌ°í ³ëµå ÇϳªÀÇ ÅõÇ¥¼ö´Â ¡°1¡± À̹ǷÎ
¸¸Á·¸¸ÀÏ ±âº»°ªÀÎ Äõ·³ ÅõÇ¥¼öÀÎ ¡°3¡±À» »ç¿ëÇÑ´Ù¸é Àû¾îµµ 2°³ÀÇ ³ëµå°¡ »ì¾Æ ÀÖ¾î¾ß Ŭ·¯½ºÅÍ ±¸¼ºµÈ´Ù.
ÇϳªÀÇ ³ëµå¿¡´ëÇØ ¸¶½ºÅ͸¦ ¼±ÃâÇÏ´Â ¹æ¹ý
Ŭ·¯½ºÅͳ» ³ëµå°£ÀÇ Åë½Å¿¡ ¹®Á¦°¡ ¹ß»ýÇϸé Ŭ·¯½ºÅÍ´Â ¸¶½ºÅ͸¦ ¼±ÃâÇÏ´Â °úÁ¤À»
°ÅÄ¡°Ô µÈ´Ù. ±âº»ÀûÀ¸·Î Äõ·³ÀÌ ¾ø´Â ȯ°æ¿¡¼ Àå¾Ö ³ëµå¸¦ Ŭ·¯½ºÅÍ¿¡¼ Á¦°ÅÇÏ°í ³²¾ÆÀÖ´Â ³ëµå³¢¸® ¸¶½ºÅ͸¦ ¼±ÃâÇÏ´Â °úÁ¤À» °ÅÄ¡°ÔµÇ¹Ç·Î ¹®Á¦¾øÀÌ Àå¾Ö Á¶Ä¡°¡ ÁøÇàµÈ´Ù.
ÇÏÁö¸¸ ¾î¼ÇÑ ¿øÀο¡ ÀÇÇØ Å¬·¯½ºÅͳ» ½ºÇÁ¸®Æ®ºê·¹ÀÎÀÌ ¹ß»ýÇÏ¸é °¢ÀÚ ¸¶½ºÅÍ·Î ÀνÄ
¼ºñ½º¸¦ ±¸µ¿ÇÏ°Ô µÈ´Ù. Äõ·³ÀÌ ÀÖ´Ù°í ÇÏ´õ¶óµµ ½ºÇÁ¸®Æ®ºê·¹ÀÎÀ» ¸·À» ¼ö´Â ¾ø´Ù. ´Ù¸¸ ½ºÇÁ¸®Æ®ºê·¹ÀÎ »óÅ¿¡¼´Â °¢ ³ëµå°¡ »ó´ë³ëµå¸¦ Àå¾Ö·Î ÀνÄÇϱ⶧¹®¿¡
fence-race(¼·Î »ó´ë ³ëµå¸¦ »¡¸® Á×ÀÎ ³ëµå°¡ ÃÖÁ¾ÀûÀ¸·Î ¼ºñ½º ³ëµå°¡ µÇ´Â °æÇÕ»óÅÂ) °¡ ¹ß»ýÇÏ°Ô µÈ´Ù.fence-race ¹æÁöÇϱâ À§Çؼ´Â Äõ·³À» »ç¿ëÇÏ°Ô µÈ´Ù. Äõ·³À» »ç¿ëÇÏ´Â °æ¿ì ÇϳªÀÇ ¸¶½ºÅÍ°¡ ¼±ÃâµÉ ¼ö ÀÖµµ·Ï ÇØÁֱ⠶§¹®ÀÌ´Ù. (¹°·Ð ¿ì¼± ¼øÀ§°¡ ÀÖ´Â °æ¿ì Ʋ¸®Áö¸¸ ¿©±â¿¡¼± Äõ·³ ¸¶½ºÅÍ = ¼ºñ½º³ëµå ·Î ¼³¸í ÇÏ°Ú´Ù.)
Äõ·³¾øÀÌ 2°³ÀÇ ³ëµå·Î ±¸¼ºµÈ °æ¿ì¿¡¼´Â fence-race ¸¦ ÇÇÇÒ ¼ö ¾ø´Ù. ÀÌ°æ¿ì Redhat ¿¡¼ Fence Delay ¸¦ ÀÌ¿ëÇÏ¿© ±¸¼ºÀ» Çϵµ·Ï ±ÇÀåÇÏ°í ÀÖ´Ù.
https://access.redhat.com/site/solutions/54829
<cman two_node="1" expected_votes="1"/>
<clusternodes>
<clusternode name="node1.cs¡± votes="1" nodeid="1">
<fence>
<method name="1">
<device name="node1-fence"/>
</method>
</fence>
</clusternode>
<clusternode name="node2.cs" votes="1" nodeid="2">
<fence>
<method name="1">
<device name="node2-fence"/>
</method>
</fence>
</clusternode>
</clusternodes>
<fencedevices>
<fencedevice name="node1-fence" agent="fence_ilo" ipaddr="node1-ilo" login="user" passwd="passwd" delay="10" />
<fencedevice name="node2-fence" agent="fence_ilo" ipaddr="node2-ilo" login="user" passwd="passwd" />
</fencedevices>
....
* ÃÖ¼ÒÇÑ Ææ½Ì Áö¿¬Àº 5ÃÊ ÀÌ»óÀ¸·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù.
½ºÇÁ¸®Æ®ºê·¹ÀÎÀ» ¸·±âÀ§Çؼ´Â ÇÏÆ®ºñÆ®¸¦ ¡°single point of failure (SPOF)¡± ȸÇǸ¦ À§ÇÑ ´ÙÁßÈ ±¸¼ºÀ» ÅëÇؼ °¡´ÉÇÏ´Ù.
* RHCS ÀÇ °æ¿ì ¾Æ·¡¿Í °°Àº ¼³Á¤À¸·Î °¡´ÉÇÏ´Ù. (RHEL 6.X ÀÌ»ó)
<clusternode name="nd1" nodeid="1">
<altname name="nd1a" port="6809" mcast="239.192.0.2"/>
</clusternode>
Äõ·³ÀÌ ¾ø´Â °æ¿ì Fence-racong À» ¸·´Â ¹æ¹ýÀ» ¾Ë¾Æ º¸¾Ò´Ù. ±×¸®°í ½ºÇÁ¸®Æ®ºê·¹ÀÎÀ» ¸·±âÀ§ÇÑ ¹æ¾Èµµ ÇÔ²² È®ÀÎÇØ º¸¾Ò´Ù. ÀÌ°Ô Äõ·³À» »ç¿ëÇÏ´Â °æ¿ì ¾î¶°ÇÑ ¿ø¸®·Î ¸¶½ºÅÍ ³ëµå°¡ ¼±Á¤µÇ¾î È®ÀÎÇØ º¸±â·Î ÇÏÀÚ.
»õ·Î¿î ¸¶½ºÅ͸¦ ¼±ÃâÇÏ´Â ±â¼úÀûÀÎ ¹æ¹ý
Äõ·³ÀÇ ¸¶½ºÅ͸¦ ¼±ÃâÇϴµ¥ ÀÖ¾î¼ ¾Õ¼ ¸»ÇßµíÀÌ ½ºÄÚ¾î(Score) ¿¡ ÀÇÇØ °áÁ¤µÈ´Ù. ½ºÄÚ¾î´Â ÈÞ¸®½ºÆ½¿¡ µî·ÏÇÑ ½ºÄÚ¾îÀÇ ÃÑÇÕÀ» ¸»ÇÑ´Ù. ´Ù¼öÀÇ ³ëµå°¡ ÀÖÀ¸¸ç ½ºÄھ ´Ù¸£´Ù¸é ½ºÄھ ³ôÀº ¼¹ö°¡ ´ç¿¬È÷ ¸¶½ºÅÍ°¡µÇ¹Ç·Î
ÀÌÇØ°¡ ½±´Ù. ÇÏÁö¸¸ ´Ù¼öÀÇ ³ëµå°¡ ¸ðµÎ µ¿ÀÏÇÑ ½ºÄھ °¡Áø´Ù¸é ¾î¶³±î?
1) Äõ·³À» »ç¿ë ÁßÀÌÁö¸¸ ÈÞ¸®½ºÆ½ÀÌ ¾ø´Â °æ¿ì °¡ ¾ø´Â °æ¿ì
maxscore = score = 1 ·Î ¼¼ÆÃÀÌ µÈ´Ù.
2) Äõ·³À» »ç¿ë ÁßÀÌ°í ÈÞ¸®½ºÆ½ÀÌ ¼³Á¤µÈ °æ¿ì
maxscore += score ·Î ¼³Á¤µÈ´Ù. ÈÞ¸®½ºÆ½Àº ¸ðµÎ 10°³±îÁö µî·Ï °¡´ÉÇÏ´Ù. º¸Åë ³ëµåÀÇ °¡¿ë¼ºÀ» ÆÇ´ÜÇÒ ¼ö ÀÖ´Â ¸í·É¾î·Î µî·ÏÇÏ¸é µÈ´Ù. (ping Á¡°Ë, Link Á¡°Ë, SAN Á¡°Ë µîµî)
µî·ÏÀº ¿£Áö´Ï¾îÀÇ °æÇèÀûÀÎ ¸í·É¾î·Î µî·ÏÀ¸·Î ó¸®ÇÑ´Ù.
°³ÀÎÀûÀ¸·Î´Â °ÔÀÌÆ®¿þÀÌ·Î ping, mkqdisk ¸í·É¾î·Î qdisk üũ ¸í·É¾î µîÀ» µî·ÏÇÑ´Ù. 2°³¸ðµÎ ½ÇÆÐÇÑ °æ¿ì ³×Æ®¿öÅ© ÀÚ¿ø »ç¿ë ºÒ°¡ ¹× SAN ÀÚ¿ø ºÒ°¡À̹ǷΠ¼ºñ½º ³ëµå·Î ¼±ÃâµÉ ¼ö ¾ø´Â ³ëµåÀ̱⶧¹®ÀÌ´Ù. iSCSI ¸¦ »ç¿ëÇÑ´Ù¸é iSCSI ¼¹öÀÇ IP µµ ping ¸®¼Ò½º¿¡ µî·ÏÇØ ÁØ´Ù.
(Âü°í·Î ³ª´Â °ÔÀÌÆ®¿þÀÌ ping Á¡°ËÀº ºÒÇÊ¿äÇÏ´Ù°í »ý°¢ÇÑ´Ù. HA ¿¡¼ °ÔÀÌÆ®¿þÀÌÀÇ Àå¾Ö¸¦ ÆÇ´ÜÇÒ ÇÊ¿ä´Â ¾ø±â¶§¹®ÀÌ´Ù. HA ¸®¼Ò½ºÀÇ ¹®Á¦°¡ ¾Æ´Ï¶ó ¿ÜºÎ ¹®Á¦·Î FailOver ¸¦ ÁøÇàÇÑ´Ù´Â À̾߱âÀε¥ ¿ÜºÎ ¹®Á¦°¡ ÁøÂ¥ ¹®Á¦ÀÎÁö ȤÀº ¹®Á¦°¡ ¾Æ´ÑÁö HA ³»¿¡¼´Â ÆÇ´ÜÇÒ ±Ù°Å°¡ ¾ø±â ¶§¹®ÀÌ´Ù.)
°¡Àå ¿ì¼±ÀûÀ¸·Î ¸¶½ºÅÍ ¼±Ãâ(ÀÔÂû)Àº Score ¿¡ ÀÇÇؼ ÆǴܵȴÙ. Score Àº ÈÞ·¹½ºÆ½ ¼³Á¤À» ÅëÇؼ ÀÌ·ç¾î Áö¸ç °¢ ÈÞ·¹½ºÆ½ÀÇ Score °ªÀÌ ³ôÀº ³ëµå°¡ ¼±ÃâµÇ°Ô µÈ´Ù.
¸¶½ºÅÍ ¼±Á¤½Ã (¸¶½ºÅÍ ¼±Á¤À» ³ëµå Ãø¿¡¼ °æ¸Å¿¡¼ÀÇ "ÀÔÂû"·Î ¼³¸íÇÑ´Ù.) °¢ ³ëµå´Â ¸¶½ºÅÍ°¡ µÇ±âÀ§ÇØ biding ÀÌ ºÙ°Ô µÈ´Ù.
´Ù¸¥ ³ëµå°¡ ³·Àº ID (lowest bidding ID) °ªÀ» °¡Áö°í ÀÖ´Â °æ¿ì ÇØ´ç ³ëµå´Â ¸¶½ºÅÍ ¿äû ÁßÁö (ÀÔÂû ÁßÁö) ÇÏ°Ô µÈ´Ù. ±×¸®°í ³·Àº ID¸¦ °¡Áø ³ëµå°¡ ¸¶½ºÅÍ·Î ¼±ÃâµÇ°Ô µÈ´Ù.
´Ù¸¥ ³ëµå°¡ ¸ðµÎ µ¿ÀÇÇÏ°Ô µÇ¸é lowest bidding ID ³ëµå°¡ ¸¶½ºÅÍ·Î ¼±ÃâµÇ°Ô µÈ´Ù. ´Ù¸¥ ³ëµå´Â NACK »óÅ·Î
¾Æ¹«·± ÀÛµ¿ ÇÏÁö ¾Ê°Ô µÈ´Ù. ±×¸®°í ÀÔÂû¿¡¼ ¸¶½ºÅÍ°¡ ¼±ÃâµÇÁö ¾Ê´Â´Ù¸é ´ë±â »óÅ·Πǥ½ÃµÇ°í ´ÙÀ½ ÀÔÂûÀ» ±â´Ù¸®°í ÀÖ´Ù°¡ ¸¶½ºÅ͸¦ »õ·Î ¼±ÃâµÇ´Â °úÁ¤ÀÌ ÁøÇàµÈ´Ù.
Âü°í) lower id ´Â check_votes() ÇÔ¼ö¿¡¼ low_id = ctx->qc_my_id ·Î ¼±¾ðµÇ¾î ÀÖ´Ù. Áï ³ëµå ID ¿Í´Â ¹«°üÇÑ °ªÀÌ´Ù.¸¶½ºÅÍ°¡ ¼±ÃâµÈ ÀÌÈÄ Àå¾Ö ³ëµå¿¡ ´ëÇÑ Ææ½ÌÀÌ ÁøÇàµÈ´Ù.
ÈÞ¸®½ºÆ½Àº Äõ·³ÀÇ ¸¶½ºÅ͸¦ °áÁ¤ÇϱâÀ§ÇÑ ¹æ¹ý·ÐÀû ¼ö´ÜÀÌ´Ù. ¿©·¯ ¸®¼Ò½º ±¸¼º ¿ä¼Ò¿¡ ´ëÇØ È®ÀÎÇÏ¿© ÃÖ¼±ÀÇ ¸¶½ºÅ͸¦ ¼±ÃâÇÏ¿© Active ³ëµå·Î ¼±ÃâÇÑ´Ù. ´Ù¼öÀÇ ³ëµå·Î ±¸¼ºµÈ °æ¿ì ÃÖ¼±ÀÇ ³ëµå·Î ¼±Á¤ÇØ ÁÖ±âÀ§ÇØ ½Ã½ºÅÛ¿¡ µû¶ó ¼³Á¤ÇØ ÁØ´Ù.
2³ëµå Ŭ·¯½ºÅÍÀÇ °æ¿ì, ±âº»ÀûÀ¸·Î Äõ·³°ú ÈÞ¸®½ºÆ½ÀÌ ºÒÇÊ¿äÇÏ´Ù. 2³ëµå ±¸¼º½Ã
Fence-race ¹æÁö ¼³Á¤À» ÇØÁÖµµ·Ï ÇÑ´Ù. Äõ·³Àº ±¸¼ºÀÌ °¡´ÉÇÏÁö¸¸ ÈÞ¸®½ºÆ½Àº µî·ÏÇÒ ÇÊ¿ä°¡ ¾ø´Ù.(¾îÂ÷ÇÇ Äõ·³ ¸¶½ºÅÍ°¡ µÇ´Â ¼¹ö´Â µÑ Áß ÇϳªÀÌ´Ù.)
Äõ·³ °ü·Ã ¼¼ºÎ ½Ã°£ ¼³Á¤ È®ÀÎ
1. Äõ·³ µð¹ÙÀ̽º °³°ý
Äõ·³ µð¹ÙÀ̽ºÀÇ °¢ ºí·°º°·Î °¢ ³ëµå°¡ ŸÀÓ½ºÅÛÇÁ¸¦ Âï°Ô µÈ´Ù. À̶§ ƯÁ¤ÇÑ ³ëµå°¡ Äõ·³ µð¹ÙÀ̽º¿¡ ŸÀÓ½ºÅÛÇÁ¸¦ °»½ÅÇÏÁö ¸øÇÏ¸é ¿ÀÇÁ¶óÀÎÀ¸·Î ÆÇ´ÜÇÑ´Ù.
- Timestamp
- Internal state (available / not available)
- Score
- Known max score (may be used in the future to detect invalid configurations)
- Vote/bid messages
- Other nodes it thinks are online
Äõ·³ µð¹ÙÀ̽º´Â ÈÞ¸®½ºÆ½ ½ºÄھ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ÈÞ¸®½ºÆ½ ¼³Á¤ÀÇ °æ¿ì °øÀ¯ ½ºÅ丮ÁöÀÇ °¡¿ë¼ºÀ» Á¡°ËÇÒ ¼ö ÀÖ´Â ¸í·É¾î¸¦ »ç¿ëÇÏ¿© µî·ÏÇÕ´Ï´Ù.
-> ½ºÅ丮Áö ½ºÀ§Ä¡ ³×Æ®¿öÅ©³ª ³×Æ®¿öÅ© ½ºÅ丮Áö³ª ȤÀº ä³ÎÀÇ ¸µÅ© »óÅ µîµî
À§ÀÇ ¼³¸íÀ» Âü°í ÇØ ÁÖ½Ã±æ ¹Ù¶ø´Ï´Ù. ¼ÒÀÎÀÇ »ý°¢À¸·Î´Â ½ºÅ丮Áö °¡¿ë¼ºÀ» Á¡°ËÇÏ´Â ¹æ¹ýÀÌ °¡Àå ÁÁ´Ù°í ¾ÆÁ÷ »ý°¢ ÇÕ´Ï´Ù. ¾Æ·¡ ¿¹Á¦¿Í °°Àº ÇüÅ·Π¸í·É¾î¸¦ Ãß°¡ÀûÀ¸·Î »ç¿ë ÇÒ ¼ö ÀÖÀ» °Í °°½À´Ï´Ù.
1) ping -c 3 -i 0.5 <GATEWAY> # ³×Æ®¿öÅ© °¡¿ë¼º äũ
2) mkqdisk -L <LABEL> # SAN ¿µ¿ª °¡¿ë¼º äũ
3) ethtool eth0 | grep "Link detected: yes" # ³×Æ®¿öÅ© °¡¿ë¼º äũ
4) ls -d /usr/service # ¼ºñ½º µð·ºÅ丮 Á¸Àç ¿©ºÎ
5) ls /dev/mapper/<DEVICE> # SAN ¿µ¿ª °¡¿ë¼º äũ
2. ¸¶½ºÅÍ ¼±Ãâ ¾Ë°í¸®Áò
ÁÖ: floor(x) Àº ¼öÇп¡¼ÀÇ ¹Ù´ÚÇÔ¼ö·Î x º¸´Ù Å©Áö ¾Ê´Â ÃÖ´ë Á¤¼ö ÀÌ´Ù.
- interval : Àбâ/¾²±â ÃÊ °£°Ý
- tko : Äõ·³ÀÌ Á×¾ú´ÂÁö ÆÇ´ÜÇÏ´Â ½ÎÀÌŬ(¹Ýº¹) Ƚ¼ö¸¦ ¶æÇÑ´Ù. ÇØ´ç ¼³Á¤Àº ÅäÅ«ÀÇ Å¸ÀÓ ¾Æ¿ô ¼³Á¤¿¡ ¿µÇâÀ»
¹ÌĨ´Ï´Ù. ( ¿ÀÇÁ¶óÀÎ ÆÇÁ¤: interval*tko )
- tko_up : Äõ·³ÀÌ ¿Â¶óÀÎ »óÅÂÀÎÁö ÆÇ´ÜÇÏ´Â ½ÎÀÌŬ(¹Ýº¹) ȸ¼ö¸¦ ¶æÇÕ´Ï´Ù.
±âº»°ªÀº floor(tko/3) ÀÔ´Ï´Ù.
- upgrade_wait : ÈÞ¸®½ºÆ½ Á¡¼ö°¡ ÃæºÐÇÑ »óÅ¿¡¼ ¸¶½ºÅ͸¦ ¼±Á¤Çϴµ¥ ÀÖ¾î¼ »óŸ¦
¾÷±×·¹À̵å Çϴµ¥ ´ë±âÇÏ´Â ½ÎÀÌŬ ȸ¼ö¸¦ ¶æÇÑ´Ù. ±âº»°ª "2"
( 0<upgrade_wait<tko )
- master_wait : Äõ·³¿¡¼ ÀڱⰡ ¸¶½ºÅÍ·Î ¼±Á¤µÈ °æ¿ì ³ëµå°¡ ÀÚ½ÅÀÌ ¸¶½ºÅÍ ³ëµå ÀÎ
°ÍÀ¸·Î ÆÇ´ÜÇϴµ¥ ÀÖ¾î¼ ´ë±âÇÏ´Â ½ÎÀÌŬ ȸ¼ö¸¦ ¶æÇÑ´Ù. ±âº»°ª floor(tko/2)
( 2<=master_wait & tko_up<master_wait<tko )
- vote : CMAN ¿¡°Ô ¾Ë¸®´Â ÅõÇ¥¼öÀÔ´Ï´Ù. ±âº»°ª: ³ëµå¼ö-1, ¿Â¶óÀÎ º¯°æ °¡´É
- min_score : Äõ·³ÀÌ »ìÀÌ ÀÖ´Ù°í ÆÇ´ÜÇÏ´À ÃÖ¼Ò ¿ä±¸°ªÀÌ´Ù. ¹Ì ¼³Á¤À̰ųª 0 ÀÎ
°æ¿ì floor((n+1)/2) ÀÌ´Ù. À̶§ n Àº ÈÞ¸®½ºÆ½ Á¡¼öÀÇ Àüü ÇÕ°ú °°´Ù. ÀÌ °ªÀº ÈÞ·¹½ºÆ½
°ª ÀÇ ÃÑÇÕº¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù. ¸¸ÀÏ Å« °æ¿ì¿¡´Â Äõ·³À» »ç¿ëÇÏÁö ¸øÇÔ.
3. Äõ·³ °ü·Ã ÅäÅÛ Àå¾Ö ÆÇÁ¤ ½Ã°£
- 10ÃÊ ÀÌÇÏ·Î Àå¾Ö ÆÇÁ¤ÀÌ ÀÌ·ç¾îÁ® ÆäÀÏ¿À¹öµÇ¾ß Çϴ ȯ°æ¿¡¼ »ç¿ë ÇÒ ¼ö ¾øÀ½. Áï ºü¸¥ Àå¾Ö º¹±¸°¡ ÇÊ¿äÇÑ °æ¿ì¿¡´Â Äõ·³ µð¹ÙÀ̽º¸¦ »ç¿ëÇÏ´Â °ÍÀº ÀûÇÕÇÏÁö ¾ÊÀ¸¹Ç·Î ÅõÇ¥¼ö¸¦ Á¶Á¤ÇÏ¿© °ü¸®ÇØ¾ß ÇÑ´Ù.Áï 99.9999% ÀÇ °¡¿ë¼ºÀÌ ÇÊ¿äÇÑ Å¬·¯½ºÅÍÀÇ °æ¿ì RHCS(Äõ·³)ÀÌ Àû´çÇÏÁö ¾Ê½À´Ï´Ù.
ÅäÅ« ŸÀÓ ¾Æ¿ô ¼öµ¿ ¼³Á¤½Ã Âü°í ½Ã°£ : interval * (tko + master_wait + upgrade_wait)
ÅäÅ« ŸÀÓ ¾Æ¿ôÀÇ °æ¿ì ¼öµ¿ ¼³Á¤½Ã À§ÀÇ ½Ã°£ ½Ä¿¡¼ »êÁ¤µÈ ½Ã°£º¸´Ù Å«°ªÀ» ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. Áï ¼öµ¿ ¼³Á¤½Ã ÅäÅ« ½Ã°£ÀÇ ÃÖ¼Ò°ªÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
ÅäÅ« ŸÀÓ ¾Æ¿ô°ª: interval * (tko + master_wait + upgrade_wait) + interval * 1
À§ÀÇ ½Ã°£ °ø½ÄÀ» È®ÀÎÇØ º¸¸é »õ·Î¿î ¸¶½ºÅÍ ¼³Á¤ ½Ã°£°ú ¿¬°üÀÌ ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. Áï interval * tko ·Î äũ¸¦ ÇÏ¸ç ½ÇÆнÿ¡ »õ·Î¿î ¸¶½ºÅ͸¦ ¼±Á¤ÇÏ°Ô µÇ´Âµ¥
À̶§ upgrade_wait ¿Í master_wait ¸¸ÅÀÇ ½ÎÀÌŬ ¸¸Å ´õ ±â´Ù·Á¾ß ¸¶½ºÅÍ ³ëµå°¡ Active »óŸ¦ ÁøÇàÇϱ⠶§¹®ÀÔ´Ï´Ù.
±ÇÀå°ª:
token > (interval * tko) * 2
ÀÌ°ÍÀ» °¨¾ÈÇÏ¿© ½Ã°£À» »êÁ¤Çϸé ÃÖ¼Ò°ªÀ¸·Î °è»êµÈ °æ¿ì ¸¶½ºÅͼ±Á¤½Ã°£Àº 1*(5+2+2) ·Î 10ÃÊ °¡µÇ¸ç ÆäÀÏ¿À¹ö ¼Ò¿ä½Ã°£Àº ÃÖ¼Ò 10ÃÊ ÀÌ»ó µÈ´Ù.
·¹µåÇòÀÇ ±ÇÀå°ªÀº interval=3 ÀÔ´Ï´Ù. ÀÌ°ÍÀº I/O°¡ ¸¹Àº ȯ°æ¿¡¼ ½ÇÆи¦ ÁÙÀÌ´Â ÀûÁ¤ÇÑ °ªÀ̱⠶§¹®ÀÔ´Ï´Ù.
Áï ±ÇÀå°ªÀ» Àû¿ëÇÏ´Â °æ¿ì, tko ¸¦ 7À¸·Î ÇßÀ»¶§, ¸¶½ºÅͼ±Ãâ½Ã°£: 3*(7+3+2) ·Î 39ÃÊ°¡ µÇ°Ô µÈ´Ù. ¸Å´º¾óÀÇ ¹®¼»ó tko¸¦ 10À¸·Î ±âº»°ªÀ¸·Î Çߴµ¥ ÀÌ °ªÀ» ÃÖ¼ÒÇѵµ·Î Á¶ÀýÇÑ´Ù°í ÇÏ¿´À»¶§µµ 5º¸´Ù ÀÛÀ» °æ¿ì master_wait ÀÌ 2º¸´Ù ¾î¾ß ÇÑ´Ù´Â °ªÀ» ¸¸Á·ÇÏÁö ¸øÇϹǷΠº°µµ·Î ¼³Á¤ÇÏÁö ¾Ê´Â ÀÌ»ó °ªÀ» ´õÀÌ»ó ÁÙÀÌ¸é ¹®Á¦°¡ µÈ´Ù.
ÈÞ¸®½ºÆ½ °ü·Ã ¼¼ºÎ ½Ã°£ ¼³Á¤ È®ÀÎ
4. ÈÞ¸®½ºÆ½ ŸÀÓ ¾Æ¿ô °ü·Ã
ÈÞ¸®½ºÆ½Àº Äõ·³ µ¥¸ó¿¡ ÀÇÇؼ ¼öÇàµË´Ï´Ù. Äõ·³¿¡ Á¾¼ÓÀûÀ̸ç Äõ·³ÀÇ ¿Â¶óÀÎ »óŸ¦ È®ÀÎÇÕ´Ï´Ù. ½ºÅ©¸³Æ®³ª ¸í·É¾î µîÀ» ¼öÇàÇÏ¿© ÆÇ´ÜÇÏ°Ô µÇ¸ç ÀÌ °ªÀº ¸í·É¾î ¿Ï·á ½Ã°£À» °¨¾ÈÇÏ¿© ¼³Á¤ÇØ ÁÖ¸é µË´Ï´Ù. ¿©±â¼ Áß¿äÇÑ °ÍÀº Äõ·³ÀÇ score ·Î "1" ÀÌ ±âº»°ªÀÔ´Ï´Ù.
¿©·¯°³ÀÇ ·ù¸®½ºÆ½À» µî·Ï ÇÏ¿´À»¶§ score À» ÀúÁ¤ÇϰԵǸé min_score ¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ½À´Ï´Ù. Áï 1,1,1 ÀÇ score °¡ ÀÖ´Â °æ¿ì min_score=floor((3+1)/2)=2 ÀÌ µË´Ï´Ù.
µû¶ó¼ 1ÀÇ score ÈÞ¸®½ºÆ½ ÇÑ°³°¡ ½ÇÆÐÇÑ °æ¿ì ¸¸Á·ÇÏÁö¸¸ 2°³ ÀÌ»ó ½ÇÆÐÇÑ °æ¿ì¿¡´Â min_score¸¦ ¸¸Á·ÇÏÁö ¸øÇÏ¿© Äõ·³ÀÌ ¿ÀÇÁ¶óÀÎÀÌ µÇ°Ô µË´Ï´Ù. µû¶ó¼ 1°³¶óµµ ¼º°øÇÏ¸é ¼º°øÀ¸·Î ó¸®ÇϱâÀ§Çؼ´Â min_score=1 ¼³Á¤À» Ãß°¡ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.
±Ç°í´Â ÈÞ¸®½ºÆ½ 2°³ ÀÌ»ó µî·Ï¿¡ min_score=1 ¼³Á¤ Ãß°¡
Äõ·³ÀÇ ¾²±â/Àб⿡ ÀÇÇÑ Á¡°Ë°ú ÈÞ¸®½ºÆ½ Á¡°ËÀº ¼·Î µ¶¸³ÀûÀÔ´Ï´Ù. Å¥µð½ºÅ© µ¥¸óÀÇ 2°³ ÀÇ ¾²·¹µå°¡ »ý¼ºµÇ¸ç 2°³°¡ °¢°¢ I/O ¹× ÈÞ¸®½ºÆ½À» ÁøÇàÇÕ´Ï´Ù.
CMAN °ü·Ã ¼¼ºÎ ½Ã°£ ¼³Á¤ È®ÀÎ
5. CMAN ÅäÅ« ¼³Á¤
ÅäÅ«Àº Ŭ·¯½ºÅͳ» ³ëµå°£ÀÇ Åë½Å¿¡ »ç¿ë µË´Ï´Ù. º¸Åë Äõ·³ ŸÀӾƿô °ª(interval*tko)ÀÇ 2¹è·Î ¼³Á¤À» Çضó°í ¸»ÇÏ´Â ÀÌÀ¯´Â CMANÀÇ quorum_dev_poll °ªÀÌ ÅäÅÛÀÇ Å¸ÀӾƿô°ª°ú °°¾Æ¾ß Çϸç Äõ·³ ŸÀӾƿô °ª(interval*tko)ÀÌ ÅäÅÛ Å¸ÀÓ ¾Æ¿ôÀÇ Àý¹Ýº¸´Ù ÀÛ¾Æ¾ß Çϱ⶧¹®ÀÌ´Ù.
Äõ·³ ŸÀӾƿô °ª(interval*tko)*2<quorum_dev_poll=token
À̶§ ÀÌ¿Í°°ÀÌ ¼³Á¤ÇÏ´Â ÀÌÀ¯´Â Äõ·³À» ¾²±â/Àбâ ÀÛ¾÷À» ¼öÇà ÁßÀ¸·Î ÇÁ·Î¼¼½º "D" »óÅ¿¡ ÀÖÀ» ¼ö Àֱ⶧¹®ÀÔ´Ï´Ù. ÀÌ°æ¿ì Çï·Î ¸Þ¼¼Áö¸¦ º¸³»´Âµ¥ ½ÇÆÐÇϱ⶧¹®¿¡ Å¥µð½ºÅ© µ¥¸óÀÌ CMANÀ¸·Î Çï·Î¸Þ¼¼Áö¸¦ º¸³¾¶§ quorum_dev_poll ÀÇ ¼³Á¤µÈ ½Ã°£ ÀÌ»ó °É¸®°Ô µÇ¾î ŸÀÓ ¾Æ¿ôÀÌ ¼±¾ðµË´Ï´Ù.
- token : ÅäÅ«ÀÌ À¯½ÇµÉ¶§ÀÇ Å¸ÀÓ ¾Æ¿ô °ªÀÔ´Ï´Ù. ±âº» ¼³Á¤µÈ °ªÀº 10ÃÊ
(10 ¸¶ÀÌÅ©·Î¼¼ÄÁµå) ÀÔ´Ï´Ù. (¿¹Á¦)
============================================================
<cman expected_votes="3" quorum_dev_poll="21000"/>
<totem token="21000"/>
<quorumd tko="10" interval="1" label="myqdisk" min_score="1" votes="1">
============================================================
- token_retransmits_before_loss_const : ÅäÅ«À» ´Ù½Ã ÀçÀü¼ÛÀ» ¹ÞÀ»¶§ ±îÁöÀÇ ´ë±â½Ã°£À¸·Î ±âº»°ªÀº 0.02ÃÊ(20 ¸¶ÀÌÅ©·Î¼¼ÄÁµå) ÀÔ´Ï´Ù. ÀÌ°ªÀº º¯°æÇÏ´Â °ÍÀ» ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù.
- join : ³ëµå°¡ Ŭ·¯½ºÅÍ¿¡ °¡ÀÔÀ»Çϴµ¥ ´ë±âÇÏ´Â ½Ã°£ÀÔ´Ï´Ù. ±âº»°ªÀº 0.06ÃÊ
(60 ¸¶ÀÌÅ©·Î¼¼ÄÁµå)
- consensus : Ŭ·¯½ºÅÍ ³ëµå°£¿¡ ÇÕÀǸ¦ ´Þ¼ºÇÒ¶§ ±îÁö ´ë±âÇÒ ½Ã°£À» ¼³Á¤ÇÑ´Ù. ±âº»°ªÀº 4.8ÃÊ (4800 ¸¶ÀÌÅ©·Î¼¼ÄÁµå) ÀÔ´Ï´Ù
ÆÛ¿Â »çÀÌÆ®:
http://ssambback.tistory.com/133