°Ô½Ã¹° 50°Ç
   
RHCS°ü·Ã QUORUMÀ» À§ÇÑ ½ÉÈ­ÇнÀ
±Û¾´ÀÌ : theko ³¯Â¥ : 2016-05-03 (È­) 13:29 Á¶È¸ : 3794
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

À̸§ Æнº¿öµå
ºñ¹Ð±Û (üũÇÏ¸é ±Û¾´À̸¸ ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.)
¿ÞÂÊÀÇ ±ÛÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä.
   

miwit.com sir.co.kr DNS Powered by DNSEver.com DNS Powered by DNSEver.com