Product SiteDocumentation Site

Pacemaker 1.1



ä»âå¤´âå¼âå§âæâå»ºâéâç¾¤â
===============================================


å¨âFedoraä¸âé¢âåâå»ºâä¸»â/ä¸»âåâä¸»âå¤âéâç¾¤â
-------------------------------------------------------------------------------

ç 3


Andrew Beekhof

ä½âèâÂ Red Hatandrew@beekhof.net


Raoul Scarazzini

æâå¤§âå©âè¯âç¿»âè¯âÂ rasca@miamammausalinux.org

------------------------------------------------------------------------



æ³å¾éå
============

Copyright Â© 2010 Andrew Beekhof This material may only be distributed
subject to the terms and conditions set forth in the GNU Free
Documentation License (GFDL), V1.2 or later (the latest version is
presently available at http://www.gnu.org/licenses/fdl.txt).

æè¦

æ¬âæâæ¡£âçâä¸»âè¦âç®âçâæ¯âæâä¾âä¸âç«âå¼âæâåâï¼æâæ¨âå¦âä½âä½¿âç¨âPacemakeråâå»ºâä¸âä¸ªâä¸»â/å¤âæ¨¡âå¼âçâéâç¾¤âå¹¶âæâå®âè½¬âæ¢âå°âä¸»â/ä¸»âæ¨¡âå¼âãâ
ç¤ºâä¾âéâç¾¤âä¼âä½¿âç¨âä»¥âä¸âè½¯âä»¶â:

  1.  Fedora 13 ä½âä¸ºâåºâæ¬âæâä½âç³»âç»â

  2. 
    Corosyncä½âä¸ºâéâä¿¡âå±âåâæâä¾âå³âç³»âç®¡âçâæâå¡â

  3.  Pacemakeræ¥âå®âç°âèµâæºâç®¡âçâ

  4.  DRBD
    ä½âä¸ºâä¸âä¸ªâç»âæµâçâå±âäº«âåâå¨âæ¹âæ¡â

  5.  GFS2
    ä½âä¸ºâéâç¾¤âæâä»¶âç³»âç»âï¼ä¸»â/ä¸»âæ¨¡âå¼âä¸âï¼

  6.  crm shell
    æ¥âæ¾âç¤ºâå¹¶âä¿®âæ¹âéâç½®âæâä»¶â

è½âç¶âç»âåºâäºâå¾âå½¢âåâå®âè£âFedoraçâè¿âç¨âï¼å¹¶âä¸âæâå¾âå¤âæªâå¾âï¼ä½âæ¯âæ¬âæâçâä¸»âè¦âæ¯âé âå½âä»¤âæ¥âæâä½âï¼åâæ¬âä¸ºâä»âä¹âè¦âè¿âè¡âè¿âä¸ªâå½âä»¤âåâè¿âäºâæâä½âäº§âçâçâç»âæâãâ(è¯âèâæ³¨â:æ¬âæâä¸âåºâæ¬âæ¯âcrm
shellæ¥âæâä½âçâï¼è¿âéâåºâè¯¥âæ¯âèâçâæ¬âæâæ¡£âçâéâçâ)

------------------------------------------------------------------------

åâè¨â

      1. æâââæ¡£âââçº¦âââå®âââ

            1.1. æâââçâââçº¦âââå®âââ

            1.2.
            æ¬âââåâââå¼âââå¼âââç¨âââçº¦âââå®âââ

            1.3.
            å¤âââæ³¨âââåâââè¦âââåâââ

      2.
      æâââä»¬âââéâââè¦âââæ¨âââçâââåâââé¦âââæâââè§âââï¼

1. Read-Me-First

      1.1. æ¬âæâèâå´â

      1.2. ä»âä¹âæ¯âPacemaker?

      1.3. Pacemaker éâç¾¤âçâç§âç±»â

      1.4. Pacemaker æ¶âæâ

            1.4.1. åâé¨âç»âä»¶â

2. å®âè£â

      2.1. å®âè£âæâä½âç³»âç»â

      2.2. éâç¾¤âè½¯âä»¶âå®âè£â

            2.2.1. å®âå¨âæâç¤ºâ

            2.2.2. å®âè£âéâç¾¤âè½¯âä»¶â

      2.3. åâå¨âå¼âå§âä¹âåâ

      2.4. å®âè£â

            2.4.1. è®¾âå®âç½âç»â

            2.4.2. éâç½®âSSH

            2.4.3. ç®âåâèâç¹âåâç§°â

            2.4.4. éâç½®â Corosync

            2.4.5. ä¼ âéâéâç½®âæâä»¶â

3. æ£âéªâéâç¾¤âçâå®âè£â

      3.1. æ£âéªâCorosyncçâå®âè£â

      3.2. æ£âæ¥âPacemakerçâå®âè£â

4. ä½¿âç¨âPacemakerå·¥âå·â

5. åâå»ºâä¸âä¸ªâä¸»â/å¤âéâç¾¤â

      5.1. æµâè§âç°âæâéâç½®â

      5.2. æ·»âå âä¸âä¸ªâèµâæºâ

      5.3. åâä¸âæ¬¡âå¤±âæâå¤âæ´â

            5.3.1.
            æ³âå®âäººâæ°âåâåâèâç¹âéâç¾¤â

            5.3.2.
            é²âæ¢âèµâæºâå¨âèâç¹âæ¢âå¤âåâç§»âå¨â

6. Apache - æ·»âå âæ´âå¤âçâæâå¡â

      6.1. å®âè£âApache

      6.2. åâå¤âå·¥âä½â

      6.3. å¼âå¯â Apache status URL

      6.4. æ´âæ°âéâç½®âæâä»¶â

      6.5.
      ç¡®âä¿âèµâæºâå¨âåâä¸âä¸ªâèâç¹âè¿âè¡â

      6.6.
      æ§âå¶âèµâæºâçâå¯âå¨âåâæ¢âé¡ºâåºâ

      6.7. æâå®âä¼âåâçâ Location

      6.8.
      å¨âéâç¾¤âä¸âæâå·¥âå°âç§»âå¨âèµâæºâ

            6.8.1. æâæ§âå¶âæâäº¤âè¿âç»âéâç¾¤â

7. ç¨âDRBDåâæ¥âåâå¨â

      7.1. å®âè£âDRBDè½¯âä»¶âåâ

      7.2. éâç½®âDRBD

            7.2.1. ä¸ºâDRBDåâå»ºâä¸âä¸ªâåâåºâ

            7.2.2. éâç½®âDRBD

            7.2.3. åâå§âåâå¹¶âè½½âå¥âDRBD

            7.2.4. åâDRBDä¸âæ·»âå âæ°âæ®â

      7.3. å¨âéâç¾¤âä¸âéâç½®âDRBD

            7.3.1. è¿âç§»âæµâè¯â

8. è½¬âåâä¸ºâActive/Active

      8.1. éâæ±â

      8.2. å®âè£âä¸âä¸ªâéâç¾¤âæâä»¶âç³»âç»â -
      GFS2

      8.3. æ´âåâ Pacemaker-GFS2

            8.3.1. æ·»âå â DLM æâå¡â

            8.3.2. æ·»âå â GFS2 æâå¡â

      8.4. åâå»ºâä¸âä¸ªâ GFS2 æâä»¶âç³»âç»â

            8.4.1. åâå¤âå·¥âä½â

            8.4.2. åâå»ºâå¹¶âè¿âç§»âæ°âæ®âå°â GFS2
            åâåºâ

      8.5. 8.5. éâæ°âä¸ºâéâç¾¤âéâç½®âGFS2

      8.6. éâæ°âéâç½®â Pacemaker ä¸ºâ Active/Active

            8.6.1. æ¢âå¤âæµâè¯â

9. éâç½®â STONITH

      9.1. ä¸ºâä»âä¹âéâè¦â STONITH

      9.2.
      ä½ âè¯¥âç¨âä»âä¹âæ ·âçâSTONITHè®¾âå¤âãâ

      9.3. éâç½®âSTONITH

            9.3.1. ä¾âåâ

A. éâç½®âæ¼âè¦âéâè¿°â

      A.1. æâç»âçâéâç¾¤âéâç½®âæâä»¶â

      A.2. èâç¹âåâè¡¨â

      A.3. éâç¾¤âéâé¡¹â

      A.4. èµâæºâ

            A.4.1. é»âè®¤âéâé¡¹â

            A.4.2. éâç¦»â

            A.4.3. æâå¡âå°âåâ

            A.4.4. åâå¸âå¼âéâæ§âå¶âå¨â

            A.4.5. GFS æ§âå¶âå®âæ¤âè¿âç¨â

            A.4.6. DRBD - å±âäº«âåâå¨â

            A.4.7. éâç¾¤âæâä»¶âç³»âç»â

            A.4.8. Apache

B. Sample Corosync Configuration

C. Using CMAN for Cluster Membership and Quorum

      C.1. Background

      C.2. Adding CMAN Support

            C.2.1. Adding CMAN Support - cluster.conf

            C.2.2. Adding CMAN Support - corosync.conf

D. å»¶âä¼¸âéâè¯»â

E. ä¿®âè®¢âåâå²â

ç´¢å¼



åâè¨â
============


1.Â æâââæ¡£âââçº¦âââå®âââ
----------------------------------------------------

1.1. æâââçâââçº¦âââå®âââ

1.2.
æ¬âââåâââå¼âââå¼âââç¨âââçº¦âââå®âââ

1.3. å¤âââæ³¨âââåâââè¦âââåâââ

æ¬âââæâââåâââä½¿âââç¨âââå âââä¸ªâââçº¦âââå®âââæ¥âââçªâââåºâââæâââäºâââç¨âââè¯âââåâââçâââè¯âââä»¥âââåâââä¿¡âââæ¯âââçâââæâââäºâââçâââæ®µâââãâââ
å¨âââ PDF
çâââæ¬âââä»¥âââåâââçº¸âââçâââä¸âââï¼æ¬âââæâââåâââä½¿âââç¨âââå¨âââ
Liberation åâââä½âââå¥âââä»¶âââä¸âââéâââåºâââçâââåâââä½âââãâââå¦âââæâââæ¨âââå¨âââæ¨âââçâââç³»âââç»âââä¸âââå®âââè£âââäºâââ
Liberation
åâââä½âââå¥âââä»¶âââï¼å®âââè¿âââå¯âââç¨âââäºâââ
HTML
çâââæ¬âââãâââå¦âââæâââæ²¡âââæâââå®âââè£âââï¼åâââä¼âââæ¾âââç¤ºâââå¯âââæ¿âââæ¢âââçâââç±»âââä¼¼âââåâââä½âââãâââè¯·âââæ³¨âââæâââï¼çº¢âââå¸½âââä¼âââä¸âââ
Linux 5
ä»¥âââåâââå¶âââåâââçâââçâââæ¬âââé»âââè®¤âââåâââå«âââ
Liberation åâââä½âââå¥âââä»¶âââãâââ


1.1.Â æâââçâââçº¦âââå®âââ

æâââä»¬âââä½¿âââç¨âââåâââç§âââæâââçâââçº¦âââå®âââçªâââåºâââç¹âââå®âââç¨âââè¯âââåâââçâââè¯âââãâââè¿âââäºâââçº¦âââå®âââåâââå¶âââä½¿âââç¨âââç¯âââå¢âââå¦âââä¸âââãâââ
åâââè¡âââç²âââä½âââ
ç¨âââæ¥âââçªâââåºâââç³»âââç»âââè¾âââå¥âââï¼å¶âââä¸âââåâââæ¬âââ
shell
å½âââä»¤âââãâââæâââä»¶âââåâââä»¥âââåâââè·¯âââå¾âââãâââè¿âââå¯âââç¨âââæ¥âââçªâââåºâââæâââé®âââä»¥âââåâââç»âââåâââé®âââãâââä¾âââå¦âââï¼

  è¦âââçâââå°âââæâââä»¶âââæ¨âââå½âââåâââå·¥âââä½âââç®âââå½âââä¸âââæâââä»¶âââ
  my_next_bestselling_novel
  çâââåâââå®¹âââï¼è¯·âââå¨âââ shell
  æâââç¤ºâââç¬¦âââåâââè¾âââå¥âââ
  cat my_next_bestselling_novel
  å½âââä»¤âââå¹¶âââæâââ Enter
  é®âââæ§âââè¡âââè¯¥âââå½âââä»¤âââãâââ

ä»¥âââä¸âââåâââå®¹âââåâââæ¬âââä¸âââä¸ªâââæâââä»¶âââåâââï¼ä¸âââä¸ªâââ
shell
å½âââä»¤âââä»¥âââåâââä¸âââä¸ªâââæâââé®âââï¼å®âââä»¬âââé½âââä»¥âââåºâââå®âââç²âââä½âââå½¢âââå¼âââåºâââç°âââï¼ä¸âââå¨âââé¨âââä¸âââä¸âââä¸âââæâââæâââæâââåºâââå«âââãâââ
ç»âââåâââé®âââå¯âââéâââè¿âââä½¿âââç¨âââè¿âââåâââç¬¦âââè¿âââæ¥âââç»âââåâââé®âââçâââæ¯âââä¸ªâââé¨âââåâââæ¥âââä¸âââæâââé®âââåºâââå«âââãâââä¾âââå¦âââï¼

  æâââ Enter
  æ§âââè¡âââè¯¥âââå½âââä»¤âââãâââ
  æâââ Ctrl+Alt+F1
  åâââæ¢âââå°âââç¬¬âââä¸âââä¸ªâââèâââæâââç»âââç«¯âââãâââCtrl+Alt+F7
  è¿âââåâââæ¨âââçâââ X-Windows
  ä¼âââè¯âââãâââ

ç¬¬âââä¸âââæ®µâââçªâââåºâââçâââæ¯âââè¦âââæâââçâââç¹âââå®âââæâââé®âââãâââç¬¬âââäºâââæ®µâââçªâââåºâââäºâââä¸¤âââä¸ªâââæâââé®âââç»âââåâââï¼æ¯âââä¸ªâââç»âââåâââé½âââè¦âââåâââæ¶âââæâââï¼ãâââä¸âââãâââ
å¦âââæâââè®¨âââè®ºâââçâââæ¯âââæºâââç âââãâââçâââçº§âââåâââç§°âââãâââæ¹âââæ³âââãâââåâââè½âââãâââåâââéâââåâââç§°âââä»¥âââåâââå¨âââæ®µâââè½âââä¸âââæâââå°âââçâââè¿âââåâââçâââæ°âââå¼âââï¼é£âââä¹âââé½âââä¼âââä»¥âââä¸âââè¿°âââå½¢âââå¼âââåºâââç°âââï¼å³âââåºâââå®âââç²âââä½âââãâââä¾âââå¦âââï¼

  ä¸âââæâââä»¶âââç¸âââå³âââçâââçâââçº§âââåâââæ¬âââç¨âââäºâââæâââä»¶âââç³»âââç»âââçâââ
  filesystemãâââç¨âââäºâââæâââä»¶âââçâââ
  file
  ä»¥âââåâââç¨âââäºâââç®âââå½âââçâââ
  dirãâââæ¯âââä¸ªâââçâââçº§âââé½âââæâââå¶âââèªâââèº«âââç¸âââå³âââçâââæâââéâââãâââ

æ¯âââä¾âââç²âââä½âââ
è¿âââæ¯âââæâââå¨âââç³»âââç»âââä¸âââéâââå°âââçâââæâââåâââæâââèâââçâââè¯âââï¼å¶âââä¸âââåâââæ¬âââåºâââç¨âââç¨âââåºâââåâââç§°âââãâââå¯¹âââè¯âââæ¡âââæâââæ¬âââãâââæ âââè®°âââçâââæâââé®âââãâââå¤âââéâââæ¡âââä»¥âââåâââåâââéâââæâââé®âââæ âââç¾âââãâââèâââåâââæ âââé¢âââä»¥âââåâââåâââèâââåâââæ âââé¢âââãâââä¾âââå¦âââï¼

  å¨âââä¸»âââèâââåâââæ¡âââä¸âââéâââæ©âââãâââç³»âââç»âââãâââ
  â ãâââé¦âââéâââé¡¹âââãâââ â
  ãâââé¼ âââæ âââãâââå¯âââå¨âââ
  é¼ âââæ âââé¦âââéâââé¡¹âââãâââå¨âââãâââæâââé®âââãâââæ âââç¾âââä¸âââç¹âââå»âââãâââæ¯âââç¨âââå·¦âââæâââé¼ âââæ âââãâââ
  å¤âââéâââæ¡âââå¹¶âââç¹âââå»âââ
  å³âââéâââåâââæ¢âââå°âââä¸»âââé¼ âââæ âââæâââé®âââä»âââå·¦âââåâââå³âââï¼è®©âââé¼ âââæ âââéâââåâââå·¦âââæâââä½¿âââç¨âââï¼ãâââ
  è¦âââå¨âââ gedit
  æâââä»¶âââä¸âââæâââå¥âââä¸âââä¸ªâââç¹âââæ®âââåâââç¬¦âââï¼è¯·âââå¨âââä¸»âââèâââåâââä¸âââéâââæ©âââãâââåºâââç¨âââç¨âââåºâââãâââ
  â ãâââéâââä»¶âââãâââ â
  ãâââåâââç¬¦âââæ âââå°âââè¡¨âââãâââãâââä¸âââä¸âââæ¥âââå¨âââ
  åâââç¬¦âââæ âââå°âââè¡¨âââèâââåâââæ¡âââä¸âââéâââæ©âââãâââæâââç´¢âââãâââ
  â ãâââæ¥âââæ¾âââãâââï¼å¨âââãâââæâââç´¢âââãâââåâââæ®µâââè¾âââå¥âââåâââç¬¦âââåâââç§°âââå¹¶âââç¹âââå»âââ
  ä¸âââä¸âââä¸ªâââ
  æâââé®âââãâââæ¨âââè¾âââå¥âââçâââåâââç¬¦âââä¼âââå¨âââãâââåâââç¬¦âââè¡¨âââãâââä¸âââçªâââåºâââåºâââæ¥âââãâââåâââå»âââè¿âââä¸ªâââçªâââåºâââçâââåâââç¬¦âââå°âââå¶âââæ¾âââå¥âââãâââè¦âââå¤âââå¶âââçâââæâââæ¬âââãâââåâââæ®µâââï¼ç¶âââåâââç¹âââå»âââ
  å¤âââå¶âââ
  æâââé®âââãâââç°âââå¨âââåâââæ¢âââåâââæ¨âââçâââæâââæ¡£âââå¹¶âââå¨âââ
  gedit
  èâââåâââæ¡âââä¸âââéâââæ©âââãâââç¼âââè¾âââãâââ
  â ãâââç²âââè´´âââãâââãâââ

ä»¥âââä¸âââæâââæ¬âââåâââæ¬âââåºâââç¨âââç¨âââåºâââåâââç§°âââãâââç³»âââç»âââèâââå´âââèâââåâââåâââç§°âââåâââé¡¹âââç®âââãâââåºâââç¨âââç¨âââåºâââç¹âââå®âââèâââåâââåâââç§°âââä»¥âââåâââæâââé®âââåâââ
GUI
çâââé¢âââä¸âââçâââæâââæ¬âââï¼æâââæâââé½âââä»¥âââæ¯âââä¾âââç²âââä½âââåºâââç°âââå¹¶âââä¸âââä¸âââä¸âââæâââåºâââå«âââãâââ
åºâââå®âââç²âââæâââä½âââ
æâââèâââ
æ¯âââä¾âââç²âââæâââä½âââ
æ âââè®ºâââåºâââå®âââç²âââä½âââæâââèâââæ¯âââä¾âââç²âââä½âââï¼éâââå âââçâââæâââä½âââè¡¨âââç¤ºâââæ¯âââå¯âââæ¿âââæ¢âââæâââèâââåâââéâââæâââæ¬âââãâââæâââä½âââè¡¨âââç¤ºâââé£âââäºâââä¸âââç´âââæ¥âââè¾âââå¥âââçâââæâââæ¬âââæâââèâââé£âââäºâââæ ¹âââæ®âââç¯âââå¢âââæ¹âââåâââçâââæâââæ¬âââãâââä¾âââå¦âââï¼

  è¦âââä½¿âââç¨âââ ssh
  è¿âââæ¥âââå°âââè¿âââç¨âââæºâââå¨âââï¼è¯·âââå¨âââ
  shell
  æâââç¤ºâââç¬¦âââåâââè¾âââå¥âââ
  ssh username@domain.nameãâââå¦âââæâââè¿âââç¨âââæºâââå¨âââæ¯âââ
  example.com
  ä¸âââæ¨âââå¨âââè¯¥âââå¶âââæºâââå¨âââä¸âââçâââç¨âââæ·âââåâââä¸ºâââ
  johnï¼è¯·âââè¾âââå¥âââ ssh john@example.comãâââ
  mount -o remount file-system
  å½âââä»¤âââä¼âââéâââæ°âââæâââè½½âââå½âââåâââçâââæâââä»¶âââç³»âââç»âââãâââä¾âââå¦âââï¼è¦âââéâââæ°âââæâââè½½âââ
  /home
  æâââä»¶âââç³»âââç»âââï¼åâââå½âââä»¤âââä¸ºâââ
  mount -o remount /homeãâââ
  è¦âââæ¥âââçâââç®âââåâââå®âââè£âââçâââè½¯âââä»¶âââåâââçâââæ¬âââï¼è¯·âââä½¿âââç¨âââ
  rpm -q package
  å½âââä»¤âââãâââå®âââä¼âââè¿âââåâââä»¥âââä¸âââç»âââæâââï¼package-version-releaseãâââ

è¯·âââæ³¨âââæâââä»¥âââä¸âââæâââåâââä¸âââçâââç²âââæâââä½âââåâââ
â
usernameãâââdomain.nameãâââfile-systemãâââpackageãâââversion
åâââ
releaseãâââæ âââè®ºâââæ¨âââè¾âââå¥âââæâââæ¬âââæâââèâââè¿âââè¡âââä¸âââä¸ªâââå½âââä»¤âââï¼è¿âââæ¯âââè¯¥âââç³»âââç»âââæ¾âââç¤ºâââçâââæâââæ¬âââï¼æ¯âââä¸ªâââåâââé½âââæ¯âââä¸âââä¸ªâââå âââä½âââç¬¦âââãâââ
ä¸âââèâââèâââå·¥âââä½âââä¸âââæ¾âââç¤ºâââæ âââé¢âââçâââæ âââåâââç¨âââæ³âââï¼æâââä½âââè¡¨âââç¤ºâââç¬¬âââä¸âââæ¬¡âââä½¿âââç¨âââæâââä¸ªâââæ°âââä¸âââéâââè¦âââçâââç¨âââè¯âââãâââä¾âââå¦âââï¼

  Publican æ¯âââä¸âââä¸ªâââ DocBook
  åâââå¸âââç³»âââç»âââãâââ


1.2.Â æ¬âââåâââå¼âââå¼âââç¨âââçº¦âââå®âââ

ç»âââç«¯âââè¾âââåºâââåâââæºâââä»£âââç âââåâââè¡¨âââè¦âââä¸âââå¨âââå´âââæâââæ¬âââæâââæ¾âââåâââå¼âââãâââ
å°âââåâââéâââå°âââç»âââç«¯âââçâââè¾âââåºâââè®¾âââå®âââä¸ºâââ
Mono-spaced Roman å¹¶âââæ¾âââç¤ºâââä¸ºâââï¼

books        Desktop   documentation  drafts  mss    photos   stuff  svn
books_tests  Desktop1  downloads      images  notes  scripts  svgs

æºâââç âââåâââè¡¨âââä¹âââè®¾âââä¸ºâââ
Mono-spaced Romanï¼ä½âââæ·»âââå âââä¸âââé¢âââçªâââåºâââçâââè¯âââæ³âââï¼

package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
   public static void main(String args[]) 
       throws Exception
   {
      InitialContext iniCtx = new InitialContext();
      Object         ref    = iniCtx.lookup("EchoBean");
      EchoHome       home   = (EchoHome) ref;
      Echo           echo   = home.create();

      System.out.println("Created Echo");

      System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
   }
}


1.3.Â å¤âââæ³¨âââåâââè¦âââåâââ

æâââåâââï¼æâââä»¬âââä½¿âââç¨âââä¸âââç§âââè§âââè§âââå½¢âââå¼âââæ¥âââçªâââåºâââé£âââäºâââå¯âââè½âââè¢«âââå¿½âââè§âââçâââä¿¡âââæ¯âââãâââ


å¤âââæ³¨âââ
------------------------

å¤âââæ³¨âââæ¯âââå¯¹âââæâââå¤´âââä»»âââå¡âââçâââæâââç¤ºâââãâââæ·âââå¾âââæâââèâââå¤âââéâââçâââè§£âââå³âââæ¹âââæ³âââãâââå¿½âââç¥âââæâââç¤ºâââä¸âââä¼âââé âââæâââè´âââé¢âââåâââæâââï¼ä½âââæ¨âââå¯âââè½âââä¼âââéâââè¿âââä¸âââä¸ªâââæ´âââçâââäºâââçâââè¯âââçªâââãâââ


éâââè¦âââ
------------------------

Important boxes detail things that are easily missed: configuration
changes that only apply to the current session, or services that need
restarting before an update will apply. Ignoring a box labeled
'Important' won't cause data loss but may cause irritation and
frustration.


è¦âââåâââ
-----------------------

è¦âââåâââæ¯âââä¸âââåºâââè¢«âââå¿½âââç¥âââçâââãâââå¿½âââç¥âââè¦âââåâââä¿¡âââæ¯âââå¾âââå¯âââè½âââå¯¼âââè´âââæ°âââæ®âââä¸¢âââå¤±âââãâââ


2.Â æâââä»¬âââéâââè¦âââæ¨âââçâââåâââé¦âââæâââè§âââï¼
-------------------------------------------------------------------------------------------------------------------------------

æ¨âââåºâââè¯¥âââåâââå»ºâââæ¨âââèªâââå·±âââçâââæ¬âââå°âââ
Feedback.xml
æâââä»¶âââæ¥âââè¦âââçâââè¿âââä¸ªâââæâââä»¶âââãâââ


ç¬¬Â 1Â ç« Â Read-Me-First
--------------------------

1.1. æ¬âæâèâå´â

1.2. ä»âä¹âæ¯âPacemaker?

1.3. Pacemaker éâç¾¤âçâç§âç±»â

1.4. Pacemaker æ¶âæâ

      1.4.1. åâé¨âç»âä»¶â


1.1.Â æ¬âæâèâå´â
------------------------------

æ¬âæâçâç®âçâæ¯âéâå½»âå°âè§£âéâç¨âäºâéâç½®âPacemakerçâæ¦âå¿µâãâä¸ºâäºâè¾¾âå°âæâå¥½âçâæâæâï¼æ¬âæâä¼âä¸»âè¦âå³âæ³¨âäºâç¨âäºâéâç½®âCIBçâXMLæ ¼âå¼âãâ
å¯¹âäºâé£âäºâç¹âå«âè®¨âåâXMLçâäººâï¼Pacemakeræâä¸âä¸ªâéâç¾¤âshellåâåºâäºâPythonçâGUIï¼ä½âæ¯âæ¬âæâæ²¡âæâåâå«âè¿âäºâå·¥âå·âçâä½¿âç¨â
[1] ï¼
æ£âæ¯âå âä¸ºâå®âä»¬âéâèâäºâXMLç»âèâãâ(è¯âèâæ³¨â:æ¬âæâä¸âåºâæ¬âæ¯âcrm
shellæ¥âæâä½âçâï¼è¿âéâåºâè¯¥âæ¯âèâçâæ¬âæâæ¡£âçâéâçâ)
æ¤âå¤âï¼æ¬âæâä¸âæ¯âä¸âä¸ªâæâæâæâå°âæâä½ âéâç½®âç¹âå®âéâç¾¤âæ¹âæ¡âçâhow-to
guideãâå°½âç®¡âæâå¾âå¤âè¿âæ ·âçâåâå®¹âï¼ä½âæ¯âæ¬âæâçâä¸»âè¦âç®âçâæ¯âè®©âå¤§âå®¶âçâè§£âéâç½®âPacemakeræâéâè¦âç¨âå°âçâåâç§âç»âä»¶âãâ


1.2.Â ä»âä¹âæ¯âPacemaker?
----------------------------------

Pacemakeræ¯âä¸âä¸ªâéâç¾¤âèµâæºâç®¡âçâèâãâä»âç¨âèµâæºâçº§âå«âçâçâæµâåâæ¢âå¤âæ¥âä¿âè¯âéâç¾¤âæâå¡â(aka.
èµâæºâ)çâæâå¤§âå¯âç¨âæ§âãâå®âå¯âä»¥âç¨âä½ âæâæâé¿âçâåºâç¡âç»âä»¶â(Corosyncæâèâæ¯âHeartbeat)æ¥âå®âç°âéâä¿¡âåâå³âç³»âç®¡âçâãâ
Pacemaker's key features include:

  * 
    çâæµâå¹¶âæ¢âå¤âèâç¹âåâæâå¡âçº§âå«âçâæâéâ

  * 
    åâå¨âæ âå³âï¼å¹¶âä¸âéâè¦âå±âäº«âåâå¨â

  * 
    èµâæºâæ âå³âï¼ä»»âä½âè½âç¨âèâæ¬âæ§âå¶âçâèµâæºâé½âå¯âä»¥âä½âä¸ºâæâå¡â

  *  æ¯âæâä½¿âç¨âSTONITHæ¥âä¿âè¯âæ°âæ®âä¸âè´âæ§âãâ

  *  æ¯âæâå¤§âåâæâèâå°âåâçâéâç¾¤â

  *  clusters æ¯âæâ quorate(æ³âå®âäººâæ°â) æâ
    resource(èµâæºâ) é©±âå¨âçâéâç¾¤â

  *  æ¯âæâä»»âä½âçâ åâä½âéâç½®â

  * 
    èªâå¨âåâæ¥âåâä¸ªâèâç¹âçâéâç½®âæâä»¶â

  * 
    å¯âä»¥âè®¾âå®âéâç¾¤âèâå´âåâçâordering,
    colocation and anti-colocation

  *  æ¯âæâé«âçº§âçâæâå¡âæ¨¡âå¼â

      * 
        Clones:ä¸ºâé£âäºâè¦âå¨âå¤âä¸ªâèâç¹âè¿âè¡âçâæâå¡âæâåâå¤âçâ

      * 
        Multi-state:ä¸ºâé£âäºâæâå¤âç§âæ¨¡âå¼âçâæâå¡âåâå¤âçâãâ(æ¯âå¦â.ä¸»âä»â,
        ä¸»âå¤â)

  *  ç»âä¸âçâï¼å¯âèâæ¬âæ§âå¶âçâcluster
    shell


1.3.Â Pacemaker éâç¾¤âçâç§âç±»â
----------------------------------------------

Pacemakerå¯¹âä½ âçâç¯âå¢âæ²¡âæâç¹âå®âçâè¦âæ±âï¼è¿âä½¿âå¾âå®âæ¯âæâä»»âä½âçâåâä½âéâç½®âï¼åâæ¬â
Active/Active, Active/Passive, N+1, N+M, N-to-1 and N-to-Nãâ
Active/Passive åâä½âä½¿âç¨âPacemakeråâDRBDçâåâèâç¹âä¸»âå¤âæ¹âæ¡âä½âä¸ºâä¸âç§âç»âæµâçâè§£âå³âæ¹âæ¡âè¢«âå¾âå¤âé«âå¯âç¨âç¯âå¢âæâéâç¨âãâ

å¾Â 1.1.Â Active/Passive åâä½â


å±âäº«âå¤±âæâå¤âæ´âæ£âæ¯âå âä¸ºâæ¯âæâå¾âå¤âèâç¹âï¼Pacemakerå¯âä»¥âè®©âå¤âä¸ªâä¸»âå¤âæ¨¡âå¼âçâéâç¾¤âéâæâèµ·âæ¥âå¹¶âå±âäº«âä¸âä¸ªâå¤âç¨âèâç¹âï¼ä»âèâå¤§âå¹âåº¦âçâåâå°âç¡¬âä»¶âæâæ¬â

å¾Â 1.2.Â å±âäº«âå¤±âæâå¤âæ´â


N to N åâä½âå½âæâå±âäº«âåâå¨âè®¾âå¤âæ¯âï¼æ¯âä¸ªâèâç¹âé½âæâä¸ºâæ½âå¨âçâå¤âæ´âèâç¹âãâPacemakerçâè³âå¯âä»¥âå¨âä¸âåâçâèâç¹âä¸âè·âç¸âåâçâæâå¡âæ¥âè´âè½½âåâè¡¡âãâ

å¾Â 1.3.Â N to N åâä½â


1.4.Â Pacemaker æ¶âæâ
----------------------------

1.4.1. åâé¨âç»âä»¶â

å¨âæâé«âä¸âä¸ªâå±âæ¬¡âï¼éâç¾¤âç±âä¸âä¸ªâé¨âåâç»âæâ:

  * 
    æâä¾âæ¶âæ¯âåâéâç¾¤âå³âç³»âåâè½âçâéâç¾¤âæ ¸âå¿âåºâç¡âç»âä»¶â(æ âçº¢âçâé¨âåâ)

  * 
    éâç¾¤âæ âå³âçâç»âä»¶â(èâè²âçâé¨âåâ)ãâå¨âPacemakeræ¶âæâä¸âï¼è¿âé¨âåâä¸âä»âåâå«âæâæâä¹âæ ·âå¯âå¨âï¼å³âéâï¼çâæ§âèµâæºâçâèâæ¬âï¼èâä¸âè¿âæâä¸âä¸ªâæ¬âå°âçâå®âæ¤âè¿âç¨âæ¥âæ¶âé¤âè¿âäºâèâæ¬âå®âç°âçâ(éâç¨âçâ)ä¸âåâæ âåâä¹âé´âçâå·®âå¼â

  * 
    å¤§âèâ(ç»¿âè²âé¨âåâ)å¤âçâå¹¶âåâåºâæ¥âèªâéâç¾¤âåâèµâæºâçâäºâä»¶â(æ¯âå¦âèâç¹âçâç¦»âå¼âåâå âå¥âï¼èµâæºâçâå¤±âæâ)
    ï¼ä»¥âåâç®¡âçâåâå¯¹âéâç½®âæâä»¶âçâä¿®âæ¹âãâå¨âå¯¹âæâæâè¿âäºâäºâä»¶âçâåâåºâä¸âï¼Pacemakerä¼âè®¡âç®âéâç¾¤âçâæ³âçâç¶âæâï¼å¹¶âè§âåâä¸âä¸ªâéâå¾âæ¥âå®âç°âå®âãâè¿âä¸ªâæâä½âå¯âè½âä¼âåâå«âç§»âå¨âèµâæºâï¼åâæ¢âèâç¹âï¼çâè³âä½¿âç¨âè¿âç¨âçµâæºâç®¡âçâæ¥âå¼ºâå¶âä½¿âä»âä»¬âä¸âçº¿âãâ

æ¦âå¿µâå±âæ¬¡âæ»âè§âéâç¾¤âæ¦âå¿µâå±âæ¬¡âæ»âè§â

å¾Â 1.4.Â æ¦âå¿µâå±âæ¬¡âæ»âè§â


When combined with Corosync, Pacemaker also supports popular open source
cluster filesystems [2] Due to recent standardization within the cluster
filesystem community, they make use of a common distributed lock manager
which makes use of Corosync for its messaging capabilities and Pacemaker
for its membership (which nodes are up/down) and fencing services.
Pacemaker å±âæ¬¡âPacemakeréâç¨âCorosyncæ¶âçâå±âæ¬¡â

å¾Â 1.5.Â Pacemaker å±âæ¬¡â


1.4.1.Â åâé¨âç»âä»¶â

Pacemakeræ¬âèº«âç±âåâä¸ªâå³âé®âç»âä»¶âç»âæâ:

  *  CIB (aka. éâç¾¤âä¿¡âæ¯âåºâç¡â)

  *  CRMd (aka.
    éâç¾¤âèµâæºâç®¡âçâå®âæ¤âè¿âç¨â)

  *  PEngine (aka. PE or çâç¥âå¼âæâ)

  *  STONITHd

åâé¨âç»âä»¶âåºâäºâCorosyncçâPacemakerçâåâç³»âç»â

å¾Â 1.6.Â åâé¨âç»âä»¶â


The CIB uses XML to represent both the cluster's configuration and
current state of all resources in the cluster. The contents of the CIB
are automatically kept in sync across the entire cluster and are used by
the PEngine to compute the ideal state of the cluster and how it should
be achieved.
è¿âä¸ªâæâä»¤âåâè¡¨âç¶âåâä¼âè¢«âäº¤âç»âDC(æâå®âåâè°âèâ)ãâ
Pacemakerä¼âæ¨âä¸¾âä¸âä¸ªâCRMdå®âä¾âä½âä¸ºâmasteræ¥âéâä¸âåâåºâæâæâå³âçâãâå¦âæâæ¨âä¸¾âçâCRMdç¹âå¿âä¸âï¼æâèâè¿âä¸ªâèâç¹âä¸âå¤âç¨³âå®â...
ä¸âä¸ªâæ°âçâmasterä¼âé©¬âä¸âè¢«âæ¨âä¸¾âåºâæ¥âãâ
The DC carries out the PEngine's instructions in the required order by
passing them to either the LRMd (Local Resource Management daemon) or
CRMd peers on other nodes via the cluster messaging infrastructure (which
in turn passes them on to their LRMd process).
èâç¹âä¼âæâä»âä»¬âæâæâæâä½âçâæ¥âå¿âåâç»âDCï¼ç¶âåâæ ¹âæ®âé¢âæâçâç»âæâåâå®âéâçâç»âæâ(ä¹âé´âçâå·®âå¼â)ï¼
æ§âè¡âä¸âä¸âä¸ªâçâå¾âä¸âçâå½âä»¤âï¼æâèâåâæ¶âæâä½âï¼å¹¶âè®©âPEngineæ ¹âæ®âéâé¢âæâçâç»âæâéâæ°âè®¡âç®âéâç¾¤âçâçâæ³âç¶âæâãâ
å¨âæâäºâæâåµâä¸âï¼å¯âè½âä¼âéâè¦âå³âéâèâç¹âçâçµâæºâæ¥âä¿âè¯âå±âäº«âæ°âæ®âçâå®âæ´âæ§âæâæ¯âå®âå¨âå°âæ¢âå¤âèµâæºâãâä¸ºâæ¤âPacemakerå¼âå¥âäºâSTONITHdãâSTONITHæ¯â
Shoot-The-Other-Node-In-The-Head(çâå¶âä»âèâç¹âçâå¤´â)çâç¼©âåâï¼å¹¶âä¸âéâå¸¸âæ¯âé âè¿âç¨âçµâæºâå¼âå³âæ¥âå®âç°âçâãâå¨âPacemakerä¸âï¼STONITHè®¾âå¤âè¢«âå½âæâèµâæºâ(å¹¶âä¸âæ¯âå¨âCIBä¸âéâç½®â)ä»âèâè½»âæ¾âå°âçâæ§âï¼ç¶âèâSTONITHdä¼âæ³¨âæâçâè§£âSTONITHæâæâï¼æ¯âå¦âå®âçâå®¢âæ·âç«¯âè¯·âæ±âéâç¦»âä¸âä¸ªâèâç¹âï¼å®âä¼âéâå¯âé£âä¸ªâæºâå¨âãâ(è¯âèâæ³¨â:å°±âæ¯âè¯´âä¸âåâçâçâå¤´âè®¾âå¤âé©±âå¨âä¼âå¯¹âç¸âåâçâè¯·âæ±âæâä¸âåâçâçâè§£âï¼è¿âäºâé½âæ¯âå¨âé©±âå¨âä¸âå®âä¹âçâãâ)

------------------------------------------------------------------------

[1]
æâç½âäºâæ¬âæâçâåâå®¹âä»¥âåâï¼ä¼âæ´âå®¹âæâçâè§£âé£âäºâå·¥âå·âçâåâè½âï¼å½âç¶âè¿âåªâæ¯âå¸âæâãâ

[2] Even though Pacemaker also supports Heartbeat, the filesystems need
to use the stack for messaging and membership and Corosync seems to be
what they're standardizing on. Technically it would be possible for them
to support Heartbeat as well, however there seems little interest in
this.


ç¬¬Â 2Â ç« Â å®âè£â
-------------------------

2.1. å®âè£âæâä½âç³»âç»â

2.2. éâç¾¤âè½¯âä»¶âå®âè£â

      2.2.1. å®âå¨âæâç¤ºâ

      2.2.2. å®âè£âéâç¾¤âè½¯âä»¶â

2.3. åâå¨âå¼âå§âä¹âåâ

2.4. å®âè£â

      2.4.1. è®¾âå®âç½âç»â

      2.4.2. éâç½®âSSH

      2.4.3. ç®âåâèâç¹âåâç§°â

      2.4.4. éâç½®â Corosync

      2.4.5. ä¼ âéâéâç½®âæâä»¶â


2.1.Â å®âè£âæâä½âç³»âç»â
------------------------------------------

è¯¦âç»âçâå®âè£âæâåâå¨âhttp://docs.fedoraproject.org/install-guide/f13/ãâä¸âæâæ¯âä¸âä¸ªâç®âçâçâçâæ¬â...
å¨âä½ âçâæµâè§âå¨âä¸âæâå¼â
http://fedoraproject.org/en/get-fedora-all,æ¾âå°âInstall Mediaé¨âåâå¹¶âä¸âè½½âéâåâä½ âç¡¬âä»¶âçâå®âè£âDVDæâä»¶âãâ
ç§âå½âä¸âä¸ªâDVDåâçâ [3]
å¹¶âä»âå®âå¯âå¨âãâæâèâå°±âåâæâä¸âæ ·âå¯âå¨âä¸âä¸ªâèâæâæºâãâ
å¨âç¹âå»âæ¬¢âè¿âçâé¢âçâNETXåâ
ï¼æâä»¬âè¦âå¼âå§âéâæ©âè¯âè¨âåâé®âçâç±»âåâ
[4]å®âè£âFedora - æ¬¢âè¿âå®âè£âFedora:
å¥½âçâéâæ©âï¼

å¾Â 2.1.Â å®âè£âFedora - æ¬¢âè¿â


å®âè£âFedora - åâå¨âè®¾âå¤âå®âè£âFedora:
åâå¨âè®¾âå¤â

å¾Â 2.2.Â å®âè£âFedora - åâå¨âè®¾âå¤â


ç»âä½ âçâæºâå¨âåâä¸ªâåâåâãâ[5]
æâå¯âä»¥âä½¿âç¨âclusterlabs.orgè¿âä¸ªâåâåâï¼æâä»¥âå¨âè¿âéâæâç¨âè¿âä¸ªâåâåâãâ
å®âè£âFedora -æºâå¨âåâå®âè£âFedora:
éâæ©âä¸âä¸ªâæºâå¨âåâ

å¾Â 2.3.Â å®âè£âFedora -æºâå¨âåâ


ç¶âåâä½ âä¼âè¢«âæâç¤ºâéâæ©âæºâå¨âæâå¨âå°âå¹¶âè®¾âå®ârootå¯âç âãâ[6]
Now select where you want Fedora installed. [7] As I donâât care
about any existing data, I will accept the default and allow Fedora to
use the complete drive. However I want to reserve some space for DRBD, so
I'll check the Review and modify partitioning layout box.
å®âè£âFedora - å®âè£âç±»âåâå®âè£âFedora:
éâæ©âå®âè£âç±»âåâ

å¾Â 2.4.Â å®âè£âFedora - å®âè£âç±»âåâ


By default, Fedora will give all the space to the / (aka. root)
partition. Wel'll take some back so we can use DRBD.
å®âè£âFedora - é»âè®¤âåâåºâ

å¾Â 2.5.Â å®âè£âFedora - é»âè®¤âåâåºâ


å®âæ´âçâåâåºâåºâè¯¥âåâä¸âé¢âä¸âæ ·âãâ


éè¦
------

å¦âæâä½ âæ³âè¯âéªâæ¬âæâæ¡£âä¸âå³âäºâDRBDæâèâGFS2çâé¨âåâï¼ä½ âè¦âä¸ºâæ¯âä¸ªâèâç¹âä¿âçâè³âå°â1Gbçâç©ºâé´âãâ
å®âè£âFedora - èªâå®âä¹âåâåºâå®âè£âFedora:
åâå»ºâä¸âä¸ªâç½âç«âåâæ¾âæ°âæ®âç¨âçâåâåºâ

å¾Â 2.6.Â å®âè£âFedora - èªâå®âä¹âåâåºâ


å®âè£âFedora - Bootloaderå®âè£âFedora:
é¤âéâæâéâå¸¸âå¼ºâåâçâçâç±âï¼ä¸âç¶âéâæ©âé»âè®¤âçâbootloaderå®âè£âä½âç½®â

å¾Â 2.7.Â å®âè£âFedora - Bootloader


Next choose which software should be installed. Change the selection to
Web Server since we plan on using Apache. Don't enable updates yet, we'll
do that (and install any extra software we need) later. After you click
next, Fedora will begin installing. å®âè£âFedora - è½¯âä»¶âå®âè£âFedora:
è½¯âä»¶âéâæ©â

å¾Â 2.8.Â å®âè£âFedora - è½¯âä»¶â


å®âè£âFedora - å®âè£âä¸âå®âè£âFedora:
å»âæâç¹âä¸âè¥¿âåâåâ è¿âè¦âä¸âä¼âå¿â

å¾Â 2.9.Â å®âè£âFedora - å®âè£âä¸â


å®âè£âFedora - å®âè£âå®âæâå®âè£âFedora: Stage 1,
å®âæâ

å¾Â 2.10.Â å®âè£âFedora - å®âè£âå®âæâ


ä¸âæ¦âç³»âç»âéâå¯âå®âæ¯âä½ âå¯âä»¥âçâå°âä»¥âä¸âçâé¢â
[8]
ï¼ç¶âåâéâç½®âç¨âæ·âåâè®¾âå®âæ¶âé´âãâ
å®âè£âFedora - ç¬¬âä¸âæ¬¡âå¯âå¨â

å¾Â 2.11.Â å®âè£âFedora - ç¬¬âä¸âæ¬¡âå¯âå¨â


å®âè£âFedora - åâå»ºâéâç¹âæâç¨âæ·âFedora
Installation: Creating a non-privileged user, take note of the password,
you'll need it soon

å¾Â 2.12.Â å®âè£âFedora -
åâå»ºâéâç¹âæâç¨âæ·â


æ³¨æ
------

å¼ºâçâå»ºâè®®âå¼âå¯âNTPæ¶âé´âåâæ¥âï¼è¿âæ ·âå¯âä»¥âä½¿âéâç¾¤âæ´âå¥½âçâåâæ¥âéâç½®âæâä»¶âä»¥âåâä½¿âæ¥âå¿âæâä»¶âæâæ´âå¥½âçâå¯âè¯»âæ§âãâ
å®âè£âFedora - æ¥âæâåâæ¶âé´âå®âè£âFedora :
å¯âç¨âNTPæ¥âä¿âè¯âæâæâèâç¹âæ¶âé´âåâæ¥â

å¾Â 2.13.Â å®âè£âFedora - æ¥âæâåâæ¶âé´â


ç¹âå»ânextä¼âè¿âå¥âç»âå¥âçâé¢âï¼ç¹âå»âä½ âåâå»ºâçâç¨âæ·âå¹¶âè¾âå¥âä¹âåâè®¾âå®âçâå¯âç âãâ
å®âè£âFedora -èªâå®âä¹âç½âç»âå®âè£âFedora:
ç¹âå»âè¿âéâæ¥âéâç½®âç½âç»â

å¾Â 2.14.Â å®âè£âFedora -èªâå®âä¹âç½âç»â


éè¦
------

ä¸âè¦âä½¿âç¨âé»âè®¤âçâç½âç»âè®¾âç½®âï¼éâç¾¤âæ°¸âè¿âä¸âä¼âé âDHCPæ¥âç®¡âçâIPï¼è¿âéâæâä½¿âç¨âclusterslabçâåâé¨âIPãâ
å®âè£âFedora - æâå®âç½âç»âåâæ°âå®âè£âFedora:
è®¾âå®âä½ âçâç½âç»âï¼æ°¸âè¿âä¸âè¦âéâæ©âDHCP

å¾Â 2.15.Â å®âè£âFedora - æâå®âç½âç»âåâæ°â


å®âè£âFedora - æ¿âæ´»âç½âç»âå®âè£âFedora:ç¹âå»âç»¿âè²âæâé®âæ¥âåºâç¨âä½ âçâæ´âæ¹â

å¾Â 2.16.Â å®âè£âFedora - æ¿âæ´»âç½âç»â


å®âè£âFedora - æâå¼âç»âç«¯âå®âè£âFedora:å¼âå§âå¹²âæ´»âï¼æâå¼âç»âç«¯â

å¾Â 2.17.Â å®âè£âFedora - æâå¼âç»âç«¯â


æ³¨æ
------

è¿âæ¯âæâåâä¸âä¸ªâæªâå±âäºâï¼å©âä¸âçâæâä»¬âé½âç¨âå½âä»¤âè¡âæ¥âæâä½âãâ


2.2.Â éâç¾¤âè½¯âä»¶âå®âè£â
------------------------------------------

2.2.1. å®âå¨âæâç¤ºâ

2.2.2. å®âè£âéâç¾¤âè½¯âä»¶â

Go to the terminal window you just opened and switch to the super user
(aka. "root") account with the su command. You will need to supply the
password you entered earlier during the installation process.

[beekhof@pcmk-1 ~]$ su -
Password:
[root@pcmk-1 ~]#


æ³¨æ
------

æ³¨âæâç¨âæ·âåâ
(@ç¬¦âå·âå·¦âè¾¹âçâåâç¬¦âä¸²â)
æ¾âç¤ºâæâä»¬âç°âå¨âä½¿âç¨âçâæ¯ârootç¨âæ·â.

[root@pcmk-1 ~]# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:6f:e1:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.41/24 brd 192.168.9.255 scope global eth0
    inet6 ::20c:29ff:fe6f:e158/64 scope global dynamic 
       valid_lft 2591667sec preferred_lft 604467sec
    inet6 2002:57ae:43fc:0:20c:29ff:fe6f:e158/64 scope global dynamic 
       valid_lft 2591990sec preferred_lft 604790sec
    inet6 fe80::20c:29ff:fe6f:e158/64 scope link 
       valid_lft forever preferred_lft forever
[root@pcmk-1 ~]# ping -c 1 www.google.com
PING www.l.google.com (74.125.39.99) 56(84) bytes of data.
64 bytes from fx-in-f99.1e100.net (74.125.39.99): icmp_seq=1 ttl=56 time=16.7 ms

--- www.l.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 20ms
rtt min/avg/max/mdev = 16.713/16.713/16.713/0.000 ms
[root@pcmk-1 ~]# /sbin/chkconfig network on[root@pcmk-1 ~]# 


2.2.1.Â å®âå¨âæâç¤ºâ

ä¸ºâäºâç®âåâæ¬âæâæ¡£âå¹¶âæ´âå¥½âçâå³âæ³¨âéâç¾¤âæ¹âé¢âçâé®âé¢âï¼æâä»¬âç°âå¨âå¨âåâç¦âç¨âé²âç«âå¢âåâSELinuxãâè¿âäºâæâä½âé½âä¼âå¯¼âè´âéâå¤§âçâå®âå¨âé®âé¢â,å¹¶âä¸âæ¨âèâå¯¹âå¬âç½âä¸âçâéâç¾¤âè¿âæ ·âåâãâ


éè¦
------

TODO: Create an Appendix that deals with (at least) re-enabling the
firewall.

[root@pcmk-1 ~]# sed -i.bak "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
[root@pcmk-1 ~]# /sbin/chkconfig --del iptables
[root@pcmk-1 ~]# service iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]


éè¦
------

ä½ âéâè¦âéâå¯âæ¥âä¿âè¯âSELinuxæ£âç¡®âå³âéâãâä¸âç¶âä½ âå¯âå¨âcorosyncçâæ¶âåâå°âçâå°âä»¥âä¸âæâç¤ºâ:

May  4 19:30:54 pcmk-1 setroubleshoot: SELinux is preventing /usr/sbin/corosync "getattr" access on /. For complete SELinux messages. run sealert -l 6e0d4384-638e-4d55-9aaf-7dac011f29c1
May  4 19:30:54 pcmk-1 setroubleshoot: SELinux is preventing /usr/sbin/corosync "getattr" access on /. For complete SELinux messages. run sealert -l 6e0d4384-638e-4d55-9aaf-7dac011f29c1


2.2.2.Â å®âè£âéâç¾¤âè½¯âä»¶â

ä»âFedora
12å¼âå§âï¼ä½ âéâè¦âçâä¸âè¥¿âé½âå·²âç»âåâå¤âå¥½âäºâï¼åªâéâå¨âç»âç«¯âå½âä»¤âè¡âè¿âè¡âä»¥âä¸âå½âä»¤â:

[root@pcmk-1 ~]# sed -i.bak "s/enabled=0/enabled=1/g" /etc/yum.repos.d/fedora.repo[root@pcmk-1 ~]# sed -i.bak "s/enabled=0/enabled=1/g" /etc/yum.repos.d/fedora-updates.repo[root@pcmk-1 ~]# yum install -y pacemaker corosyncLoaded plugins: presto, refresh-packagekit
fedora/metalink                                                    |  22 kB     00:00     
fedora-debuginfo/metalink                                          |  16 kB     00:00     
fedora-debuginfo                                                   | 3.2 kB     00:00     
fedora-debuginfo/primary_db                                        | 1.4 MB     00:04     
fedora-source/metalink                                             |  22 kB     00:00     
fedora-source                                                      | 3.2 kB     00:00     
fedora-source/primary_db                                           | 3.0 MB     00:05     
updates/metalink                                                   |  26 kB     00:00     
updates                                                            | 2.6 kB     00:00     
updates/primary_db                                                 | 1.1 kB     00:00     
updates-debuginfo/metalink                                         |  18 kB     00:00     
updates-debuginfo                                                  | 2.6 kB     00:00     
updates-debuginfo/primary_db                                       | 1.1 kB     00:00     
updates-source/metalink                                            |  25 kB     00:00     
updates-source                                                     | 2.6 kB     00:00     
updates-source/primary_db                                          | 1.1 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package corosync.x86_64 0:1.2.1-1.fc13 set to be updated
--> Processing Dependency: corosynclib = 1.2.1-1.fc13 for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libquorum.so.4(COROSYNC_QUORUM_1.0)(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libvotequorum.so.4(COROSYNC_VOTEQUORUM_1.0)(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libcpg.so.4(COROSYNC_CPG_1.0)(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libconfdb.so.4(COROSYNC_CONFDB_1.0)(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libcfg.so.4(COROSYNC_CFG_0.82)(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libpload.so.4(COROSYNC_PLOAD_1.0)(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: liblogsys.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libconfdb.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libcoroipcc.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libcpg.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libquorum.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libcoroipcs.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libvotequorum.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libcfg.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libtotem_pg.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
--> Processing Dependency: libpload.so.4()(64bit) for package: corosync-1.2.1-1.fc13.x86_64
---> Package pacemaker.x86_64 0:1.1.5-1.fc13 set to be updated
--> Processing Dependency: heartbeat >= 3.0.0 for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: net-snmp >= 5.4 for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: resource-agents for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: cluster-glue for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libnetsnmp.so.20()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libcrmcluster.so.1()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libpengine.so.3()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libnetsnmpagent.so.20()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libesmtp.so.5()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libstonithd.so.1()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libhbclient.so.1()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libpils.so.2()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libpe_status.so.2()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libnetsnmpmibs.so.20()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libnetsnmphelpers.so.20()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libcib.so.1()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libccmclient.so.1()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libstonith.so.1()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: liblrm.so.2()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libtransitioner.so.1()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libpe_rules.so.2()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libcrmcommon.so.2()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Processing Dependency: libplumb.so.2()(64bit) for package: pacemaker-1.1.5-1.fc13.x86_64
--> Running transaction check
---> Package cluster-glue.x86_64 0:1.0.2-1.fc13 set to be updated
--> Processing Dependency: perl-TimeDate for package: cluster-glue-1.0.2-1.fc13.x86_64
--> Processing Dependency: libOpenIPMIutils.so.0()(64bit) for package: cluster-glue-1.0.2-1.fc13.x86_64
--> Processing Dependency: libOpenIPMIposix.so.0()(64bit) for package: cluster-glue-1.0.2-1.fc13.x86_64
--> Processing Dependency: libopenhpi.so.2()(64bit) for package: cluster-glue-1.0.2-1.fc13.x86_64
--> Processing Dependency: libOpenIPMI.so.0()(64bit) for package: cluster-glue-1.0.2-1.fc13.x86_64
---> Package cluster-glue-libs.x86_64 0:1.0.2-1.fc13 set to be updated
---> Package corosynclib.x86_64 0:1.2.1-1.fc13 set to be updated
--> Processing Dependency: librdmacm.so.1(RDMACM_1.0)(64bit) for package: corosynclib-1.2.1-1.fc13.x86_64
--> Processing Dependency: libibverbs.so.1(IBVERBS_1.0)(64bit) for package: corosynclib-1.2.1-1.fc13.x86_64
--> Processing Dependency: libibverbs.so.1(IBVERBS_1.1)(64bit) for package: corosynclib-1.2.1-1.fc13.x86_64
--> Processing Dependency: libibverbs.so.1()(64bit) for package: corosynclib-1.2.1-1.fc13.x86_64
--> Processing Dependency: librdmacm.so.1()(64bit) for package: corosynclib-1.2.1-1.fc13.x86_64
---> Package heartbeat.x86_64 0:3.0.0-0.7.0daab7da36a8.hg.fc13 set to be updated
--> Processing Dependency: PyXML for package: heartbeat-3.0.0-0.7.0daab7da36a8.hg.fc13.x86_64
---> Package heartbeat-libs.x86_64 0:3.0.0-0.7.0daab7da36a8.hg.fc13 set to be updated
---> Package libesmtp.x86_64 0:1.0.4-12.fc12 set to be updated
---> Package net-snmp.x86_64 1:5.5-12.fc13 set to be updated
--> Processing Dependency: libsensors.so.4()(64bit) for package: 1:net-snmp-5.5-12.fc13.x86_64
---> Package net-snmp-libs.x86_64 1:5.5-12.fc13 set to be updated
---> Package pacemaker-libs.x86_64 0:1.1.5-1.fc13 set to be updated
---> Package resource-agents.x86_64 0:3.0.10-1.fc13 set to be updated
--> Processing Dependency: libnet.so.1()(64bit) for package: resource-agents-3.0.10-1.fc13.x86_64
--> Running transaction check
---> Package OpenIPMI-libs.x86_64 0:2.0.16-8.fc13 set to be updated
---> Package PyXML.x86_64 0:0.8.4-17.fc13 set to be updated
---> Package libibverbs.x86_64 0:1.1.3-4.fc13 set to be updated
--> Processing Dependency: libibverbs-driver for package: libibverbs-1.1.3-4.fc13.x86_64
---> Package libnet.x86_64 0:1.1.4-3.fc12 set to be updated
---> Package librdmacm.x86_64 0:1.0.10-2.fc13 set to be updated
---> Package lm_sensors-libs.x86_64 0:3.1.2-2.fc13 set to be updated
---> Package openhpi-libs.x86_64 0:2.14.1-3.fc13 set to be updated
---> Package perl-TimeDate.noarch 1:1.20-1.fc13 set to be updated
--> Running transaction check
---> Package libmlx4.x86_64 0:1.0.1-5.fc13 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved


==========================================================================================
 Package                Arch     Version                             Repository      Size
==========================================================================================
Installing:
 corosync               x86_64   1.2.1-1.fc13                        fedora         136 k
 pacemaker              x86_64   1.1.5-1.fc13                        fedora         543 k
Installing for dependencies:
 OpenIPMI-libs          x86_64   2.0.16-8.fc13                       fedora         474 k
 PyXML                  x86_64   0.8.4-17.fc13                       fedora         906 k
 cluster-glue           x86_64   1.0.2-1.fc13                        fedora         230 k
 cluster-glue-libs      x86_64   1.0.2-1.fc13                        fedora         116 k
 corosynclib            x86_64   1.2.1-1.fc13                        fedora         145 k
 heartbeat              x86_64   3.0.0-0.7.0daab7da36a8.hg.fc13      updates        172 k
 heartbeat-libs         x86_64   3.0.0-0.7.0daab7da36a8.hg.fc13      updates        265 k
 libesmtp               x86_64   1.0.4-12.fc12                       fedora          54 k
 libibverbs             x86_64   1.1.3-4.fc13                        fedora          42 k
 libmlx4                x86_64   1.0.1-5.fc13                        fedora          27 k
 libnet                 x86_64   1.1.4-3.fc12                        fedora          49 k
 librdmacm              x86_64   1.0.10-2.fc13                       fedora          22 k
 lm_sensors-libs        x86_64   3.1.2-2.fc13                        fedora          37 k
 net-snmp               x86_64   1:5.5-12.fc13                       fedora         295 k
 net-snmp-libs          x86_64   1:5.5-12.fc13                       fedora         1.5 M
 openhpi-libs           x86_64   2.14.1-3.fc13                       fedora         135 k
 pacemaker-libs         x86_64   1.1.5-1.fc13                        fedora         264 k
 perl-TimeDate          noarch   1:1.20-1.fc13                       fedora          42 k
 resource-agents        x86_64   3.0.10-1.fc13                       fedora         357 k

Transaction Summary
=========================================================================================
Install      21 Package(s)
Upgrade       0 Package(s)

Total download size: 5.7 M
Installed size: 20 M
Downloading Packages:
Setting up and reading Presto delta metadata
updates-testing/prestodelta                                           | 164 kB     00:00     
fedora/prestodelta                                                    |  150 B     00:00     
Processing delta metadata
Package(s) data still to download: 5.7 M
(1/21): OpenIPMI-libs-2.0.16-8.fc13.x86_64.rpm                        | 474 kB     00:00     
(2/21): PyXML-0.8.4-17.fc13.x86_64.rpm                                | 906 kB     00:01     
(3/21): cluster-glue-1.0.2-1.fc13.x86_64.rpm                          | 230 kB     00:00     
(4/21): cluster-glue-libs-1.0.2-1.fc13.x86_64.rpm                     | 116 kB     00:00     
(5/21): corosync-1.2.1-1.fc13.x86_64.rpm                              | 136 kB     00:00     
(6/21): corosynclib-1.2.1-1.fc13.x86_64.rpm                           | 145 kB     00:00     
(7/21): heartbeat-3.0.0-0.7.0daab7da36a8.hg.fc13.x86_64.rpm           | 172 kB     00:00     
(8/21): heartbeat-libs-3.0.0-0.7.0daab7da36a8.hg.fc13.x86_64.rpm      | 265 kB     00:00     
(9/21): libesmtp-1.0.4-12.fc12.x86_64.rpm                             |  54 kB     00:00     
(10/21): libibverbs-1.1.3-4.fc13.x86_64.rpm                           |  42 kB     00:00     
(11/21): libmlx4-1.0.1-5.fc13.x86_64.rpm                              |  27 kB     00:00     
(12/21): libnet-1.1.4-3.fc12.x86_64.rpm                               |  49 kB     00:00     
(13/21): librdmacm-1.0.10-2.fc13.x86_64.rpm                           |  22 kB     00:00     
(14/21): lm_sensors-libs-3.1.2-2.fc13.x86_64.rpm                      |  37 kB     00:00     
(15/21): net-snmp-5.5-12.fc13.x86_64.rpm                              | 295 kB     00:00     
(16/21): net-snmp-libs-5.5-12.fc13.x86_64.rpm                         | 1.5 MB     00:01     
(17/21): openhpi-libs-2.14.1-3.fc13.x86_64.rpm                        | 135 kB     00:00     
(18/21): pacemaker-1.1.5-1.fc13.x86_64.rpm                            | 543 kB     00:00     
(19/21): pacemaker-libs-1.1.5-1.fc13.x86_64.rpm                       | 264 kB     00:00     
(20/21): perl-TimeDate-1.20-1.fc13.noarch.rpm                         |  42 kB     00:00     
(21/21): resource-agents-3.0.10-1.fc13.x86_64.rpm                     | 357 kB     00:00     
----------------------------------------------------------------------------------------
Total                                                        539 kB/s | 5.7 MB     00:10     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID e8e40fde: NOKEY
fedora/gpgkey                                                         | 3.2 kB     00:00 ... 
Importing GPG key 0xE8E40FDE "Fedora (13) <fedora@fedoraproject.org%gt;" from /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64

Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : lm_sensors-libs-3.1.2-2.fc13.x86_64                            1/21 
  Installing     : 1:net-snmp-libs-5.5-12.fc13.x86_64                             2/21 
  Installing     : 1:net-snmp-5.5-12.fc13.x86_64                                  3/21 
  Installing     : openhpi-libs-2.14.1-3.fc13.x86_64                              4/21 
  Installing     : libibverbs-1.1.3-4.fc13.x86_64                                 5/21 
  Installing     : libmlx4-1.0.1-5.fc13.x86_64                                    6/21 
  Installing     : librdmacm-1.0.10-2.fc13.x86_64                                 7/21 
  Installing     : corosync-1.2.1-1.fc13.x86_64                                   8/21 
  Installing     : corosynclib-1.2.1-1.fc13.x86_64                                9/21 
  Installing     : libesmtp-1.0.4-12.fc12.x86_64                                 10/21 
  Installing     : OpenIPMI-libs-2.0.16-8.fc13.x86_64                            11/21 
  Installing     : PyXML-0.8.4-17.fc13.x86_64                                    12/21 
  Installing     : libnet-1.1.4-3.fc12.x86_64                                    13/21 
  Installing     : 1:perl-TimeDate-1.20-1.fc13.noarch                            14/21 
  Installing     : cluster-glue-1.0.2-1.fc13.x86_64                              15/21 
  Installing     : cluster-glue-libs-1.0.2-1.fc13.x86_64                         16/21 
  Installing     : resource-agents-3.0.10-1.fc13.x86_64                          17/21 
  Installing     : heartbeat-libs-3.0.0-0.7.0daab7da36a8.hg.fc13.x86_64          18/21 
  Installing     : heartbeat-3.0.0-0.7.0daab7da36a8.hg.fc13.x86_64               19/21 
  Installing     : pacemaker-1.1.5-1.fc13.x86_64                                 20/21 
  Installing     : pacemaker-libs-1.1.5-1.fc13.x86_64                            21/21 

Installed:
  corosync.x86_64 0:1.2.1-1.fc13                    pacemaker.x86_64 0:1.1.5-1.fc13                   

Dependency Installed:
  OpenIPMI-libs.x86_64 0:2.0.16-8.fc13                          
  PyXML.x86_64 0:0.8.4-17.fc13                                  
  cluster-glue.x86_64 0:1.0.2-1.fc13                            
  cluster-glue-libs.x86_64 0:1.0.2-1.fc13                       
  corosynclib.x86_64 0:1.2.1-1.fc13                             
  heartbeat.x86_64 0:3.0.0-0.7.0daab7da36a8.hg.fc13             
  heartbeat-libs.x86_64 0:3.0.0-0.7.0daab7da36a8.hg.fc13        
  libesmtp.x86_64 0:1.0.4-12.fc12                               
  libibverbs.x86_64 0:1.1.3-4.fc13                              
  libmlx4.x86_64 0:1.0.1-5.fc13                                 
  libnet.x86_64 0:1.1.4-3.fc12                                  
  librdmacm.x86_64 0:1.0.10-2.fc13                              
  lm_sensors-libs.x86_64 0:3.1.2-2.fc13                         
  net-snmp.x86_64 1:5.5-12.fc13                                 
  net-snmp-libs.x86_64 1:5.5-12.fc13                            
  openhpi-libs.x86_64 0:2.14.1-3.fc13                           
  pacemaker-libs.x86_64 0:1.1.5-1.fc13                          
  perl-TimeDate.noarch 1:1.20-1.fc13                            
  resource-agents.x86_64 0:3.0.10-1.fc13                        

Complete!
[root@pcmk-1 ~]# 


2.3.Â åâå¨âå¼âå§âä¹âåâ
------------------------------------------

å¨âå¦âä¸âå°âFedora
12æºâå¨âä¸âé¢âéâå¤âä»¥âä¸âæâä½âæ¥âéª¤âï¼è¿âæ ·âä½ âå°±âæâ2å°âå®âè£âäºâéâç¾¤âè½¯âä»¶âçâèâç¹âäºâãâ
å¨âè¿âç¯âæâæ¡£âä¸â,
å¦âå¤âä¸âä¸ªâèâç¹âå«â pcmk-2
å¹¶âä¸âIPå°âåâä¸ºâ 192.168.122.42ãâ


2.4.Â å®âè£â
------------------

2.4.1. è®¾âå®âç½âç»â

2.4.2. éâç½®âSSH

2.4.3. ç®âåâèâç¹âåâç§°â

2.4.4. éâç½®â Corosync

2.4.5. ä¼ âéâéâç½®âæâä»¶â


2.4.1.Â è®¾âå®âç½âç»â

ç¡®âè®¤âè¿âä¸¤âä¸ªâæ°âèâç¹âè½âå¤âéâè®¯â:

          ping -c 3 192.168.122.102[root@pcmk-1 ~]# ping -c 3 192.168.122.102
PING 192.168.122.102 (192.168.122.102) 56(84) bytes of data.
64 bytes from 192.168.122.102: icmp_seq=1 ttl=64 time=0.343 ms
64 bytes from 192.168.122.102: icmp_seq=2 ttl=64 time=0.402 ms
64 bytes from 192.168.122.102: icmp_seq=3 ttl=64 time=0.558 ms

--- 192.168.122.102 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.343/0.434/0.558/0.092 ms

å¾Â 2.18.Â éâè¿âIPå°âåâæ¥âæ£âæ¥âè¿âæ¥â


ç°âå¨âæâä»¬âéâè¦âç¡®âè®¤âæâä»¬âè½âéâè¿âæºâå¨âåâè®¿âé®âè¿âä¸¤âå°âæºâå¨âï¼å¦âæâä½ âæâä¸âä¸ªâDNSæâå¡âå¨âï¼ä¸ºâè¿âä¸¤âå°âèâç¹âåâåâåâè§£âæâãâ

          grep pcmk /etc/hosts[root@pcmk-1 ~]# grep pcmk /etc/hosts
192.168.122.101 pcmk-1.clusterlabs.org pcmk-1
192.168.122.102 pcmk-2.clusterlabs.org pcmk-2

å¾Â 2.19.Â å¦âåâï¼æâä»¬âä¿®âæ¹â/etc/hostsæâä»¶âæ¥âè¾¾âå°âç¸âåâçâæâæâ:


ç°âå¨âè®©âæâä»¬âpingä¸âä¸â:

          ping -c 3 pcmk-2[root@pcmk-1 ~]# ping -c 3 pcmk-2
PING pcmk-2.clusterlabs.org (192.168.122.101) 56(84) bytes of data.
64 bytes from pcmk-1.clusterlabs.org (192.168.122.101): icmp_seq=1 ttl=64 time=0.164 ms
64 bytes from pcmk-1.clusterlabs.org (192.168.122.101): icmp_seq=2 ttl=64 time=0.475 ms
64 bytes from pcmk-1.clusterlabs.org (192.168.122.101): icmp_seq=3 ttl=64 time=0.186 ms

--- pcmk-2.clusterlabs.org ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.164/0.275/0.475/0.141 ms

å¾Â 2.20.Â éâè¿âæºâå¨âåâæ£âæ¥âè¿âæ¥â


2.4.2.Â éâç½®âSSH

SSH
æ¯âä¸âä¸ªâæ¹âä¾¿âåâå®âå¨âæ¥âçâç¨âæ¥âè¿âç¨âä¼ âè¾âæâä»¶âæâè¿âè¡âå½âä»¤â
çâå·¥âå·â. å¨âè¿âä¸ªâæâæ¡£âä¸â,
æâä»¬âåâå»ºâssh key(ç¨â -N ââââ
éâé¡¹â)æ¥âåâå»âç»âå¥âè¦âè¾âå¥âå¯âç âçâéº»âç¦âãâ


è¦å
-----

ä¸âæ¨âèâå¨âå¬âç½âçâæºâå¨âä¸âéâç¨âæªâç¨âå¯âç âä¿âæ¤âçâssh-key
åâå»ºâä¸âä¸ªâå¯âé¥âå¹¶âåâè®¸âæâæâæâè¿âä¸ªâå¯âé¥âçâç¨âæ·âç»âå¥â

[root@pcmk-1 ~]# ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""Generating public/private dsa key pair.Your identification has been saved in /root/.ssh/id_dsa.Your public key has been saved in /root/.ssh/id_dsa.pub.The key fingerprint is:
91:09:5c:82:5a:6a:50:08:4e:b2:0c:62:de:cc:74:44 root@pcmk-1.clusterlabs.org

The key's randomart image is:
+--[ DSA 1024]----+
|==.ooEo..        |
|X O + .o o       |
| * A    +        |
|  +      .       |
| .      S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+
[root@pcmk-1 ~]# cp .ssh/id_dsa.pub .ssh/authorized_keys[root@pcmk-1 ~]#

å¾Â 2.21.Â åâå»ºâå¹¶âæ¿âæ´»âä¸âä¸ªâæ°âçâSSHå¯âé¥â


å¨âå¶âä»âèâç¹âå®âè£âè¿âä¸ªâå¯âé¥âå¹¶âæµâè¯âä½ âæ¯âå¦âå¯âä»¥âæ§âè¡âå½âä»¤âèâä¸âç¨âè¾âå¥âå¯âç â

[root@pcmk-1 ~]# scp -r .ssh pcmk-2:The authenticity of host 'pcmk-2 (192.168.122.102)' can't be established.
RSA key fingerprint is b1:2b:55:93:f1:d9:52:2b:0f:f2:8a:4e:ae:c6:7c:9a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pcmk-2,192.168.122.102' (RSA) to the list of known hosts.root@pcmk-2's password: 
id_dsa.pub                           100%  616     0.6KB/s   00:00    
id_dsa                               100%  672     0.7KB/s   00:00    
known_hosts                          100%  400     0.4KB/s   00:00    
authorized_keys                      100%  616     0.6KB/s   00:00    
[root@pcmk-1 ~]# ssh pcmk-2 -- uname -npcmk-2
[root@pcmk-1 ~]#

å¾Â 2.22.Â å¨âå¦âä¸âä¸ªâæºâå¨âä¸âé¢âå®âè£âSSHå¯âé¥â


2.4.3.Â ç®âåâèâç¹âåâç§°â

å¨âå®âè£âè¿âç¨âä¸âï¼æâä»¬âåâç°âFQDNåâåâå¤ªâé¿âäºâï¼ä¸âå©âäºâå¨âæ¥âå¿âæâç¶âæâçâé¢âä¸âæ¥âçâï¼æâä»¬âç¨âä»¥âä¸âæâä½âæ¥âç®âåâæºâå¨âåâ:

[root@pcmk-1 ~]# uname -npcmk-1.clusterlabs.org[root@pcmk-1 ~]# dnsdomainname clusterlabs.org

ç¬¬âäºâä¸ªâå½âä»¤âçâè¾âåºâæ¯âæ£âå¸¸âçâï¼ä½âæ¯âæâä»¬âçâçâä¸âéâè¦âè¿âä¹âè¯¦âç»âçâè¾âåºâï¼æâä»¬âæ´âæ¹â/etc/sysconfig/networkæâä»¶âæ¥âè¾¾âå°âç®âåâçâç®âçâãâ

[root@pcmk-1 ~]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=pcmk-1.clusterlabs.orgGATEWAY=192.168.122.1

æâä»¬âè¦âåâçâåªâæ¯âè¦âæâåâåâåâé¢âçâé¨âåâå»âæâãâ

[root@pcmk-1 ~]# sed -i.bak 's/\.[a-z].*//g' /etc/sysconfig/network

ç°âå¨âcatä¸âä¸âçâçâæ´âæ¹âæ¯âå¦âæâåâäºâãâ

[root@pcmk-1 ~]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=pcmk-1GATEWAY=192.168.122.1

ç¶âèâå°âè¿âéâè¿âæ²¡âç»âæâï¼æºâå¨âè¿âæ²¡âæ¥âåâæ°âçâéâç½®âæâä»¶âï¼æâä»¬âå¼ºâå¶âå®âçâæâãâ

[root@pcmk-1 ~]# source /etc/sysconfig/network[root@pcmk-1 ~]# hostname $HOSTNAME

ç°âå¨âæâä»¬âçâçâæ¯âå¦âæâè¾¾âå°âæâä»¬âé¢âæâçâæâæâ:

[root@pcmk-1 ~]# uname -npcmk-1
[root@pcmk-1 ~]# dnsdomainname clusterlabs.org

ç°âå¨âå¨âpcmk-2ä¸âé¢âéâå¤âä»¥âä¸âæâä½â.


2.4.4.Â éâç½®â Corosync

éâæ©âä¸âä¸ªâç»âæâ[9]ç«¯âå£âåâå°âåâãâ[10]
è¯·âæ³¨âæâä½ âéâæ©âçâç«¯âå£âåâå°âåâä¸âè½âè·âå·²âåâå¨âçâéâç¾¤âå²âçªâï¼å³âäºâç»âæâå°âåâçâéâæ©âï¼å¯âä»¥âåâèâ
http://www.29west.com/docs/THPM/multicast-address-assignment.html
å¨âè¿âä¸ªâæâæ¡£âä¸âï¼æâéâæ©âç«¯âå£â4000å¹¶âä¸âç¨â226.94.1.1ä½âä¸ºâç»âæâå°âåâ:


éè¦
------

The instructions below only apply for a machine with a single NIC. If you
have a more complicated setup, you should edit the configuration
manually.

[root@pcmk-1 ~]# export ais_port=4000[root@pcmk-1 ~]# export ais_mcast=226.94.1.1

ç¶âåâæâä»¬âç¨âä¸âé¢âçâå½âä»¤âèªâå¨âè·âå¾âæºâå¨âçâå°âåâãâä¸ºâäºâè®©âéâç½®âæâä»¶âè½âå¤âå¨âæºâå¨âä¸âé¢âçâåâä¸ªâæºâå¨âéâç¨âï¼æâä»¬âä¸âä½¿âç¨âå®âæ´âçâIPå°âåâèâä½¿âç¨âç½âç»âå°âåâãâï¼è¯âèâæ³¨â:corosyncéâç½®âæâä»¶âä¸âçâçâå¬âå°âåâä¸âé¡¹âå¯âä»¥âå¡«âåâç½âç»âå°âåâï¼corosyncä¼âèªâå¨âå¹âéâåºâè¯¥âçâå¬âå¨âåªâä¸ªâå°âåâèâä¸âæ¯â0.0.0.0ï¼

[root@pcmk-1 ~]# export ais_addr=`ip addr | grep "inet " | tail -n 1 | awk '{print $4}' | sed s/255/0/`

æ¾âç¤ºâå¹¶âæ£âæ¥âéâç½®âçâç¯âå¢âåâéâæ¯âå¦âæ£âç¡®â

[root@pcmk-1 ~]# env | grep ais_ais_mcast=226.94.1.1
ais_port=4000
ais_addr=192.168.122.0

Once you're happy with the chosen values, update the Corosync
configuration

[root@pcmk-1 ~]# cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf[root@pcmk-1 ~]# sed -i.bak "s/.*mcastaddr:.*/mcastaddr:\ $ais_mcast/g" /etc/corosync/corosync.conf[root@pcmk-1 ~]# sed -i.bak "s/.*mcastport:.*/mcastport:\ $ais_port/g" /etc/corosync/corosync.conf[root@pcmk-1 ~]# sed -i.bak "s/.*bindnetaddr:.*/bindnetaddr:\ $ais_addr/g" /etc/corosync/corosync.conf

Finally, tell Corosync to load the Pacemaker plugin.

[root@pcmk-1 ~]# cat <<-END >>/etc/corosync/service.d/pcmkservice {
        # Load the Pacemaker Cluster Resource Manager
        name: pacemaker
        ver:  1
}
END

The final configuration should look something like the sample in
éå½Â B, Sample Corosync Configuration.


éè¦
------

When run in version 1 mode, the plugin does not start the Pacemaker
daemons. Instead it just sets up the quorum and messaging interfaces
needed by the rest of the stack. Starting the dameons occurs when the
Pacemaker init script is invoked. This resolves two long standing issues:

  1.  Forking inside a multi-threaded process like Corosync causes all
    sorts of pain. This has been problematic for Pacemaker as it needs a
    number of daemons to be spawned.

  2.  Corosync was never designed for staggered shutdown - something
    previously needed in order to prevent the cluster from leaving before
    Pacemaker could stop all active resources.


2.4.5.Â ä¼ âéâéâç½®âæâä»¶â

ç¶âåâæâä»¬âæâéâç½®âæâä»¶âæ·âè´âå°âå¶âä»âèâç¹â:

[root@pcmk-1 ~]# for f in /etc/corosync/corosync.conf /etc/corosync/service.d/pcmk /etc/hosts; do scp $f pcmk-2:$f ; donecorosync.conf                            100% 1528     1.5KB/s   00:00
hosts                                    100%  281     0.3KB/s   00:00
[root@pcmk-1 ~]#


------------------------------------------------------------------------

[3] http://docs.fedoraproject.org/readme-burning-isos/en-US.html

[4]
http://docs.fedoraproject.org/install-guide/f13/en-US/html/s1-langselection-x86.html

[5]
http://docs.fedoraproject.org/install-guide/f13/en-US/html/sn-networkconfig-fedora.html

[6]
http://docs.fedoraproject.org/install-guide/f13/en-US/html/sn-account_configuration.html

[7]
http://docs.fedoraproject.org/install-guide/f13/en-US/html/s1-diskpartsetup-x86.html

[8]
http://docs.fedoraproject.org/install-guide/f13/en-US/html/ch-firstboot.html

[9] http://en.wikipedia.org/wiki/Multicast

[10] http://en.wikipedia.org/wiki/Multicast_address


ç¬¬Â 3Â ç« Â æ£âéªâéâç¾¤âçâå®âè£â
-------------------------------------------------------

3.1. æ£âéªâCorosyncçâå®âè£â

3.2. æ£âæ¥âPacemakerçâå®âè£â


3.1.Â æ£âéªâCorosyncçâå®âè£â
--------------------------------------------

å¨âç¬¬âä¸âä¸ªâèâç¹âå¯âå¨âCorosync:

[root@pcmk-1 ~]# /etc/init.d/corosync startStarting Corosync Cluster Engine (corosync): [ OK ]

æ¥âçâéâç¾¤âæ¯âå¦âæ£âç¡®âå¯âå¨âå¹¶âä¸âå·²âç»âå¯âä»¥âä¸âå¶âä»âèâç¹âå»ºâç«âéâç¾¤âå³âç³»â

[root@pcmk-1 ~]# grep -e "corosync.*network interface" -e "Corosync Cluster Engine" -e "Successfully read main configuration file" /var/log/messagesAug 27 09:05:34 pcmk-1 corosync[1540]: [MAIN Â ] Corosync Cluster Engine ('1.1.0'): started and ready to provide service.
Aug 27 09:05:34 pcmk-1 corosync[1540]: [MAIN Â ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
[root@pcmk-1 ~]# grep TOTEM /var/log/messagesAug 27 09:05:34 pcmk-1 corosync[1540]: [TOTEM ] Initializing transport (UDP/IP).
Aug 27 09:05:34 pcmk-1 corosync[1540]: [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
Aug 27 09:05:35 pcmk-1 corosync[1540]: [TOTEM ] The network interface [192.168.122.101] is now up.Aug 27 09:05:35 pcmk-1 corosync[1540]: [TOTEM ] A processor joined or left the membership and a new membership was formed.

ç¬¬âä¸âä¸ªâèâç¹âæ£âå¸¸âä»¥âåâï¼æâä»¬âå¯âä»¥âå®âå¨âå°âå¯âå¨âç¬¬âäºâä¸ªâèâç¹âãâ

[root@pcmk-1 ~]# ssh pcmk-2 -- /etc/init.d/corosync startStarting Corosync Cluster Engine (corosync): [ OK ][root@pcmk-1 ~]#

æ£âæ¥âéâç¾¤âå³âç³»âæâæ²¡âæâæ£âç¡®âå»ºâç«â:

[root@pcmk-1 ~]# grep TOTEM /var/log/messagesAug 27 09:05:34 pcmk-1 corosync[1540]: [TOTEM ] Initializing transport (UDP/IP).
Aug 27 09:05:34 pcmk-1 corosync[1540]: [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
Aug 27 09:05:35 pcmk-1 corosync[1540]: [TOTEM ] The network interface [192.168.122.101] is now up.Aug 27 09:05:35 pcmk-1 corosync[1540]: [TOTEM ] A processor joined or left the membership and a new membership was formed.Aug 27 09:12:11 pcmk-1 corosync[1540]: [TOTEM ] A processor joined or left the membership and a new membership was formed.


3.2.Â æ£âæ¥âPacemakerçâå®âè£â
---------------------------------------------

ç°âå¨âæâä»¬âå·²âç»âç¡®âè®¤âCorosyncæ£âå¸¸âï¼æâä»¬âå¯âä»¥âå¼âå§âæ£âæ¥âå¶âä»âé¨âåâæ¯âå¦âæ£âå¸¸â.

[root@pcmk-1 ~]# grep pcmk_startup /var/log/messagesAug 27 09:05:35 pcmk-1 corosync[1540]: Â  [pcmk Â ] info: pcmk_startup: CRM: InitializedAug 27 09:05:35 pcmk-1 corosync[1540]: Â  [pcmk Â ] Logging: Initialized pcmk_startup
Aug 27 09:05:35 pcmk-1 corosync[1540]: Â  [pcmk Â ] info: pcmk_startup: Maximum core file size is: 18446744073709551615
Aug 27 09:05:35 pcmk-1 corosync[1540]: Â  [pcmk Â ] info: pcmk_startup: Service: 9Aug 27 09:05:35 pcmk-1 corosync[1540]: Â  [pcmk Â ] info: pcmk_startup: Local hostname: pcmk-1

Now try starting Pacemaker and check the necessary processes have been
started

[root@pcmk-1 ~]# /etc/init.d/pacemaker startStarting Pacemaker Cluster Manager: [ OK ]

[root@pcmk-1 ~]# grep -e pacemakerd.*get_config_opt -e pacemakerd.*start_child -e "Starting Pacemaker" /var/log/messagesFeb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Found 'pacemaker' for option: name
Feb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Found '1' for option: verFeb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Defaulting to 'no' for option: use_logd
Feb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Defaulting to 'no' for option: use_mgmtd
Feb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Found 'on' for option: debug
Feb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Found 'yes' for option: to_logfile
Feb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Found '/var/log/corosync.log' for option: logfile
Feb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Found 'yes' for option: to_syslog
Feb  8 13:31:24 pcmk-1 pacemakerd: [13155]: info: get_config_opt: Found 'daemon' for option: syslog_facility
Feb  8 16:50:38 pcmk-1 pacemakerd: [13990]: info: main: Starting Pacemaker 1.1.5 (Build: 31f088949239+):  docbook-manpages publican ncurses trace-logging cman cs-quorum heartbeat corosync snmp libesmtp
Feb  8 16:50:38 pcmk-1 pacemakerd: [13990]: info: start_child: Forked child 14022 for process stonith-ngFeb  8 16:50:38 pcmk-1 pacemakerd: [13990]: info: start_child: Forked child 14023 for process cibFeb  8 16:50:38 pcmk-1 pacemakerd: [13990]: info: start_child: Forked child 14024 for process lrmdFeb  8 16:50:38 pcmk-1 pacemakerd: [13990]: info: start_child: Forked child 14025 for process attrdFeb  8 16:50:38 pcmk-1 pacemakerd: [13990]: info: start_child: Forked child 14026 for process pengineFeb  8 16:50:38 pcmk-1 pacemakerd: [13990]: info: start_child: Forked child 14027 for process crmd

[root@pcmk-1 ~]# ps axfÂ  PID TTY Â  Â  Â STAT Â  TIME COMMAND
Â  Â  2 ? Â  Â  Â  Â S< Â  Â  0:00 [kthreadd]
Â  Â  3 ? Â  Â  Â  Â S< Â  Â  0:00 Â \_ [migration/0]
... lots of processes ...
Â 13990 ? Â  Â S  Â  Â  Â 0:01 pacemakerdÂ 14022 ? Â  Â Sa Â  Â  Â 0:00 Â \_ /usr/lib64/heartbeat/stonithdÂ 14023 ? Â  Â Sa Â  Â  Â 0:00 Â \_ /usr/lib64/heartbeat/cibÂ 14024 ? Â  Â Sa Â  Â  Â 0:00 Â \_ /usr/lib64/heartbeat/lrmdÂ 14025 ? Â  Â Sa Â  Â  Â 0:00 Â \_ /usr/lib64/heartbeat/attrdÂ 14026 ? Â  Â Sa Â  Â  Â 0:00 Â \_ /usr/lib64/heartbeat/pengineÂ 14027 ? Â  Â Sa Â  Â  Â 0:00 Â \_ /usr/lib64/heartbeat/crmd

Next, check for any ERRORs during startup - there shouldnâât be any.

[root@pcmk-1 ~]# grep ERROR: /var/log/messages | grep -v unpack_resources[root@pcmk-1 ~]#

Repeat on the other node and display the cluster's status.

[root@pcmk-1 ~]# ssh pcmk-2 -- /etc/init.d/pacemaker startStarting Pacemaker Cluster Manager: [ OK ][root@pcmk-1 ~]# crm_mon============
Last updated: Thu Aug 27 16:54:55 2009Stack: openaisCurrent DC: pcmk-1 - partition with quorumVersion: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f2 Nodes configured, 2 expected votes0 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]


ç¬¬Â 4Â ç« Â ä½¿âç¨âPacemakerå·¥âå·â
----------------------------------------------

å¨âä¸âæ¶âçâæ§âç¤¾âä¼âï¼éâç½®âPacemakeréâè¦âç®¡âçâåâå·âå¤âè¯»âåâXMLçâè½âåâãâ
æ ¹âæ®âUNIXç²¾âç¥âï¼ä¹âæâè®¸âå¤âä¸âåâçâæ¥âè¯¢âåâéâç½®âéâç¾¤âçâå½âä»¤âãâ
èªâä»âPacemaker
1.0ï¼è¿âä¸âåâé½âæ¹âåâäºâï¼æâä»¬âæâäºâä¸âä¸ªâéâæâçâèâæ¬âåâçâéâç¾¤âæ§âå¶âshell,å®âæâéº»âç¦âçâXMLéâç½®âéâèâäºâèµ·âæ¥âãâå®âçâè³âåâè®¸âä½ âä¸âæ¬¡âåâåºâè®¸âå¤âä¿®âæ¹âå¹¶âèªâå¨âæâäº¤â(å¹¶âæ£âæµâæ¯âå¦âåâæ³â)ãâ
è®©âæâä»¬âè±âç¹âæ¶âé´âçâæâä¸âä¸âå®âè½âåâä»âä¹âãâ

[root@pcmk-1 ~]# crm --help
usage:
Â  Â  crm [-D display_type]
Â  Â  crm [-D display_type] args
Â  Â  crm [-D display_type] [-f file]

Â  Â  Use crm without arguments for an interactive session.
Â  Â  Supply one or more arguments for a "single-shot" use.
Â  Â  Specify with -f a file which contains a script. Use '-' for
Â  Â  standard input or use pipe/redirection.

Â  Â  crm displays cli format configurations using a color scheme
Â  Â  and/or in uppercase. Pick one of "color" or "uppercase", or
Â  Â  use "-D color,uppercase" if you want colorful uppercase.
Â  Â  Get plain output by "-D plain". The default may be set in
Â  Â  user preferences (options).

Examples:

Â  Â  # crm -f stopapp2.cli
Â  Â  # crm < stopapp2.cli
Â  Â  # crm resource stop global_www
Â  Â  # crm status

çâæ§âéâç¾¤âç¶âæâçâä¸»âè¦âå½âä»¤âæ¯â
crm_mon(è·âcrm
statusæ¯âä¸âæ ·âçâæâæâ)ãâå®âå¯âä»¥âè¿âè¡âå¨âå¾âå¤âæ¨¡âå¼âä¸âå¹¶âä¸âæâè®¸âå¤âè¾âåºâéâé¡¹âãâå¦âæâè¦âæ¥âçâPacemakerç¸âåºâçâå·¥âå·âï¼å¯âä»¥âéâè¿â--helpæâèâman
pagesæ¥âæ¥âçâãâè¿âäºâè¾âåºâé½âæ¯âé âå½âä»¤âæ¥âçâæâçâï¼æâä»¥âå®âæ»âæ¯âä¼âå¨âåâä¸ªâèâç¹âåâå·¥âå·âä¹âé´âåâæ¥âãâ
æ¤âå¤âï¼Pacemakerçâçâæ¬âåâæ¯âæâçâstack(æ¬âæâä¸âæ¯âcorosync)å¯âä»¥âéâè¿â
--versionéâé¡¹âçâå°â

[root@pcmk-1 ~]# crm_mon --versionPacemaker 1.1.5
Written by Andrew Beekhof
[root@pcmk-1 ~]# crm_mon --helpcrm_mon - Provides a summary of cluster's current state.

Outputs varying levels of detail in a number of different formats.

Usage: crm_mon mode [options]
Options:
Â -?, --help Â  Â  Â  Â  Â  Â  Â  Â  This text
Â -$, --version Â  Â  Â  Â  Â  Â   Version information
Â -V, --verbose Â  Â  Â  Â  Â  Â   Increase debug output

Modes:
Â -h, --as-html=valueÂ  Â  Â  Â  Write cluster status to the named file
Â -w, --web-cgi Â  Â  Â  Â  Â  Â   Web mode with output suitable for cgi
Â -s, --simple-status Â  Â  Â   Display the cluster status once as a simple one line output (suitable for nagios)
Â -S, --snmp-traps=valueÂ  Â   Send SNMP traps to this station
Â -T, --mail-to=valueÂ  Â  Â  Â  Send Mail alerts to this user. Â See also --mail-from, --mail-host, --mail-prefix

Display Options:
Â -n, --group-by-node  Â  Â  Â  Group resources by node
Â -r, --inactive Â  Â  Â  Â  Â  Â  Display inactive resources
Â -f, --failcounts Â  Â  Â  Â  Â  Display resource fail counts
Â -o, --operations Â  Â  Â  Â  Â  Display resource operation history
Â -t, --timing-details Â  Â  Â  Display resource operation history with timing details


Additional Options:
Â -i, --interval=valueÂ  Â  Â  Â  Â  Â Update frequency in seconds
Â -1, --one-shot Â  Â  Â  Â  Â  Â  Â  Â  Display the cluster status once on the console and exit
Â -N, --disable-ncurses Â  Â  Â  Â  Â Disable the use of ncurses
Â -d, --daemonize Â  Â  Â  Â  Â  Â  Â  Â Run in the background as a daemon
Â -p, --pid-file=valueÂ  Â  Â  Â  Â  Â (Advanced) Daemon pid file location
Â -F, --mail-from=valueÂ  Â  Â  Â  Â  Mail alerts should come from the named user
Â -H, --mail-host=valueÂ  Â  Â  Â  Â  Mail alerts should be sent via the named host
Â -P, --mail-prefix=valueÂ  Â  Â  Â  Subjects for mail alerts should start with this string
Â -E, --external-agent=valueÂ  Â  Â A program to run when resource operations take place.
Â -e, --external-recipient=valueÂ A recipient for your program (assuming you want the program to send something to someone).

Examples:

Display the clusterÂ´s status on the console with updates as they occur:
Â  Â  Â  Â  # crm_mon

Display the clusterÂ´s status on the console just once then exit:
Â  Â  Â  Â  # crm_mon -1

Display your clusterÂ´s status, group resources by node, and include inactive resources in the list:
Â  Â  Â  Â  # crm_mon --group-by-node --inactive

Start crm_mon as a background daemon and have it write the clusterÂ´s status to an HTML file:
Â  Â  Â  Â  # crm_mon --daemonize --as-html /path/to/docroot/filename.html

Start crm_mon as a background daemon and have it send email alerts:
Â  Â  Â  Â  # crm_mon --daemonize --mail-to user@example.com --mail-host mail.example.com

Start crm_mon as a background daemon and have it send SNMP alerts:
Â  Â  Â  Â  # crm_mon --daemonize --snmp-traps snmptrapd.example.com

Report bugs to pacemaker@oss.clusterlabs.org


æ³¨æ
------

å¦âæâSNMPæâèâemailéâé¡¹âæ²¡âæâåºâç°âå¨âéâé¡¹âä¸âï¼è¯´âæâpacemakerç¼âè¯âçâæ¶âåâæ²¡âæâæâå¼âå¯¹âä»âä»¬âçâæ¯âæâï¼ä½ âéâè¦âèâç³»âæâä¾âè¿âä¸ªâåâè¡âçâæ¬âçâäººâï¼æâèâèªâå·±âç¼âè¯âãâ


ç¬¬Â 5Â ç« Â åâå»ºâä¸âä¸ªâä¸»â/å¤âéâç¾¤â
--------------------------------------------------------------

5.1. æµâè§âç°âæâéâç½®â

5.2. æ·»âå âä¸âä¸ªâèµâæºâ

5.3. åâä¸âæ¬¡âå¤±âæâå¤âæ´â

      5.3.1. æ³âå®âäººâæ°âåâåâèâç¹âéâç¾¤â

      5.3.2.
      é²âæ¢âèµâæºâå¨âèâç¹âæ¢âå¤âåâç§»âå¨â


5.1.Â æµâè§âç°âæâéâç½®â
------------------------------------------

å½âPacemakerå¯âå¨âçâæ¶âåâï¼å®âä¼âèªâå¨âè®°âå½âèâç¹âçâæ°âéâåâè¯¦âç»âä¿¡âæ¯âï¼ä»¥âåâåºâå±âè½¯âä»¶â(æ¬âæâä¸âæ¯âcorosync)åâPacemakerçâçâæ¬âãâ
è¿âæ¯âåâå§âéâç½®âæâä»¶âçâæ¨¡âæ ·â:

[root@pcmk-2 ~]# crm configure shownode pcmk-1
node pcmk-2
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2"

å¦âæâæâè°âæ³âçâçâXMLæ ¼âå¼âçâï¼ä½ âå¯âä»¥âæ·»âå âxmléâé¡¹âæ¥âçâå°âåâå§âçâéâç½®âæâä»¶â

[root@pcmk-2 ~]# crm configure show xml<?xml version="1.0" ?>
<cib admin_epoch="0" crm_feature_set="3.0.1" dc-uuid="pcmk-1" epoch="13" have-quorum="1" num_updates="7" validate-with="pacemaker-1.0">
Â  <configuration>
Â  Â  <crm_config>
Â  Â  Â  <cluster_property_set id="cib-bootstrap-options">
Â  Â  Â  Â  <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f"/>
Â  Â  Â  Â  <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="openais"/>
Â  Â  Â  Â  <nvpair id="cib-bootstrap-options-expected-quorum-votes" name="expected-quorum-votes" value="2"/>
Â  Â  Â  </cluster_property_set>
Â  Â  </crm_config>
Â  Â  <rsc_defaults/>
Â  Â  <op_defaults/>
Â  Â  <nodes>
Â  Â  Â  <node id="pcmk-1" type="normal" uname="pcmk-1"/>
Â  Â  Â  <node id="pcmk-2" type="normal" uname="pcmk-2"/>
Â  Â  </nodes>
Â  Â  <resources/>
Â  Â  <constraints/>
Â  </configuration>
</cib>

è¿âæ¯âæ¬âæâæ¡£âæâåâä¸âæ¬¡âæ¾âç¤ºâXMLãâ(ä½âèâæ¨âå¿µâå¾âæ·±âåâ)
å¨âæâä»¬âåâåºâä»»âä½âæ¹âåâä¹âåâï¼æâä»¬âæâå¥½âæ£âæ¥âä¸âéâç½®âæâä»¶âãâ

[root@pcmk-1 ~]# crm_verify -Lcrm_verify[2195]: 2009/08/27_16:57:12 ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been definedcrm_verify[2195]: 2009/08/27_16:57:12 ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
crm_verify[2195]: 2009/08/27_16:57:12 ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrityErrors found during check: config not validÂ  -V may provide more details
[root@pcmk-1 ~]#

å°±âåâä½ âçâå°âçâï¼è¿âä¸ªâå·¥âå·âåâç°âäºâä¸âäºâéâè¯¯âãâ
ä¸ºâäºâç¡®âä¿âæ¨âæ°âæ®âçâå®âå¨âæ§â [11]
ï¼è¯·âä½¿âç¨âéâå¤âSTONITH [12]çâPacemakerãâä½âæ¯âå½âæ²¡âæâéâç½®âSTONITHçâæ¶âåâä¹âä¼âæ¥âè¿âä¸ªâéâè¯¯â(å âä¸ºâå½âéâç¾¤âä¸âæâä¸ªâèâç¹âéâè¦âè¢«âéâç¦»âçâæ¶âåâï¼éâç¾¤âå°±âæ âæ³âå·¥âä½âäºâ)ãâ
ç®âåâï¼æâä»¬âç¦âç¨âè¿âä¸ªâç¹âæ§âï¼ç¶âåâå¨â
éâç½®âSTONISH
ç« âèâæ¥âéâç½®âå®âãâè¿âéâè¦âæâåºâï¼ä½¿âç¨âSTONITHæ¯âéâå¸¸âæâå¿âè¦âçâãâå³âéâè¿âä¸ªâç¹âæ§âå°±âæ¯âåâè¯âéâç¾¤â:åâè£âæâéâçâèâç¹âå·²âç»âå®âå¨âçâå³âæºâäºâãâä¸âäºâä¾âåºâåâçâè³âä¸âåâè®¸âè¿âä¸ªâç¹âæ§âè¢«âå³âéâãâ
æâä»¬âå°â stonith-enabledè®¾âç½®âä¸ºâ false
æ¥âå³âéâSTONITH

  crm configure property stonith-enabled=falsecrm_verify -L

è®¾âç½®âå®âè¿âä¸ªâéâé¡¹âä»¥âåâï¼æ ¡âéªâéâç½®âæâä»¶âå°±âæ£âå¸¸âäºâãâ


è¦å
-----

The use of stonith-enabled=false is completely inappropriate for a
production cluster. We use it here to defer the discussion of its
configuration which can differ widely from one installation to the next.
See ç¬¬Â 9Â ç«  éâç½®â STONITH for information on why STONITH is
important and details on how to configure it.


5.2.Â æ·»âå âä¸âä¸ªâèµâæºâ
------------------------------------------

é¦âåâè¦âåâçâæ¯âéâç½®âä¸âä¸ªâIPå°âåâï¼ä¸âç®¡âéâç¾¤âæâå¡âå¨âåªâè¿âè¡âï¼æâä»¬âè¦âä¸âä¸ªâåºâå®âçâå°âåâæ¥âæâä¾âæâå¡âãâå¨âè¿âéâæâéâæ©â192.168.122.101ä½âä¸ºâæµ®âå¨âIPï¼ç»âå®âåâä¸âä¸ªâå¥½âè®°âçâåâåâ
ClusterIP å¹¶âä¸âåâè¯âéâç¾¤â
æ¯â30ç§âæ£âæ¥âå®âä¸âæ¬¡â


éè¦
------

éâæ©âçâIPå°âåâä¸âè½âè¢«âèâç¹âæâå âç¨â

crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \ Â  Â  Â  Â  params ip=192.168.122.101 cidr_netmask=32 \ Â  Â  Â  Â  op monitor interval=30s

å¦âå¤âä¸âä¸ªâéâè¦âçâä¿¡âæ¯âæ¯â
ocf:heartbeat:IPaddr2ãâè¿âåâè¯âPacemakerä¸âä»¶âäºâæâï¼ç¬¬âä¸âä¸ªâé¨âåâï¼ocfï¼æâæâäºâè¿âä¸ªâèµâæºâéâç¨âçâæ âåâ(ç±»âåâ)ä»¥âåâå¨âåªâè½âæ¾âå°âå®âãâç¬¬âäºâä¸ªâé¨âåâæ âæâè¿âä¸ªâèµâæºâèâæ¬âçâå¨âOCFä¸âçâåâåâç©ºâé´âï¼å¨âè¿âä¸ªâä¾âåâä¸âæ¯âheartbeatãâæâåâä¸âä¸ªâé¨âåâæâæâäºâèµâæºâèâæ¬âçâåâç§°âãâ
å¯âä»¥âè¿âè¡âä¸âé¢âçâå½âä»¤âæ¥âè·âå¾âå¯âç¨âçâèµâæºâç±»â

[root@pcmk-1 ~]# crm ra classesheartbeat
lsbocf / heartbeat pacemakerstonith

æ¾âå°âOCFä¸âPacemakeråâHeartbeatæâä¾âçâèµâæºâèâæ¬âï¼è¿âè¡âä¸âé¢âçâå½âä»¤â

[root@pcmk-1 ~]# crm ra list ocf pacemakerClusterMon Â  Â  Dummy Â  Â  Â  Â  Â Stateful Â  Â  Â  SysInfo Â  Â  Â  Â SystemHealth Â  controld
ping Â  Â  Â  Â  Â  pingd Â  Â  Â  Â  Â 
[root@pcmk-1 ~]# crm ra list ocf heartbeatAoEtarget Â  Â  Â  Â  Â  Â  Â AudibleAlarm Â  Â  Â  Â  Â  ClusterMon Â  Â  Â  Â  Â  Â  Delay
Dummy Â  Â  Â  Â  Â  Â  Â  Â  Â EvmsSCC Â  Â  Â  Â  Â  Â  Â  Â Evmsd Â  Â  Â  Â  Â  Â  Â  Â  Â Filesystem
ICP Â  Â  Â  Â  Â  Â  Â  Â  Â  Â IPaddr Â  Â  Â  Â  Â  Â  Â  Â  IPaddr2 Â  Â  Â  Â  Â  Â  Â  Â IPsrcaddr
LVM Â  Â  Â  Â  Â  Â  Â  Â  Â  Â LinuxSCSI Â  Â  Â  Â  Â  Â  Â MailTo Â  Â  Â  Â  Â  Â  Â  Â  ManageRAID
ManageVE Â  Â  Â  Â  Â  Â  Â  Pure-FTPd Â  Â  Â  Â  Â  Â  Â Raid1 Â  Â  Â  Â  Â  Â  Â  Â  Â Route
SAPDatabase Â  Â  Â  Â  Â  Â SAPInstance Â  Â  Â  Â  Â  Â SendArp Â  Â  Â  Â  Â  Â  Â  Â ServeRAID
SphinxSearchDaemon Â  Â  Squid Â  Â  Â  Â  Â  Â  Â  Â  Â Stateful Â  Â  Â  Â  Â  Â  Â  SysInfo
VIPArip Â  Â  Â  Â  Â  Â  Â  Â VirtualDomain Â  Â  Â  Â  Â WAS Â  Â  Â  Â  Â  Â  Â  Â  Â  Â WAS6
WinPopup Â  Â  Â  Â  Â  Â  Â  Xen Â  Â  Â  Â  Â  Â  Â  Â  Â  Â Xinetd Â  Â  Â  Â  Â  Â  Â  Â  anything
apache Â  Â  Â  Â  Â  Â  Â  Â  db2 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â drbd Â  Â  Â  Â  Â  Â  Â  Â  Â  eDir88
iSCSILogicalUnit Â  Â  Â  iSCSITarget Â  Â  Â  Â  Â  Â ids Â  Â  Â  Â  Â  Â  Â  Â  Â  Â iscsi
ldirectord Â  Â  Â  Â  Â  Â  mysql Â  Â  Â  Â  Â  Â  Â  Â  Â mysql-proxy Â  Â  Â  Â  Â  Â nfsserver
oracle Â  Â  Â  Â  Â  Â  Â  Â  oralsnr Â  Â  Â  Â  Â  Â  Â  Â pgsql Â  Â  Â  Â  Â  Â  Â  Â  Â pingd
portblock Â  Â  Â  Â  Â  Â  Â rsyncd Â  Â  Â  Â  Â  Â  Â  Â  scsi2reservation Â  Â  Â  sfex
tomcat Â  Â  Â  Â  Â  Â  Â  Â  vmware Â  Â  Â  Â  Â  Â  Â  Â  
[root@pcmk-1 ~]#

ç°âå¨âæ£âæ¥âä¸âIP
èµâæºâæ¯âä¸âæ¯âå·²âç»âæ·»âå âäºâï¼å¹¶âä¸âçâçâæ¯âå¦âå¤âå¨âå¯âç¨âç¶âæâãâ

[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2primitive ClusterIP ocf:heartbeat:IPaddr2 \ params ip="192.168.122.101" cidr_netmask="32" \ op monitor interval="30s"property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
[root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 15:23:48 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]ClusterIP (ocf::heartbeat:IPaddr): Started pcmk-1


5.3.Â åâä¸âæ¬¡âå¤±âæâå¤âæ´â
------------------------------------------------

5.3.1. æ³âå®âäººâæ°âåâåâèâç¹âéâç¾¤â

5.3.2.
é²âæ¢âèµâæºâå¨âèâç¹âæ¢âå¤âåâç§»âå¨â

ä½âä¸ºâä¸âä¸ªâé«âå¯âç¨âçâéâç¾¤âï¼æâä»¬âå¨âç»§âç»âæ¬âæâæ¡£âä¹âåâï¼æâä»¬âè¦âéâè¦âæµâè¯âå¤±âæâå¤âæ´â
ãâ
é¦âåâï¼æ¾âå°âIPèµâæºâç°âå¨âå¨âåªâä¸ªâèâç¹âä¸âè¿âè¡âãâ

[root@pcmk-1 ~]# crm resource status ClusterIPresource ClusterIP is running on: pcmk-1
[root@pcmk-1 ~]#

Shut down Pacemaker and Corosync on that machine.

[root@pcmk-1 ~]# ssh pcmk-1 -- /etc/init.d/pacemaker stopSignaling Pacemaker Cluster Manager to terminate: [ OK ]Waiting for cluster services to unload:. [ OK ][root@pcmk-1 ~]# ssh pcmk-1 -- /etc/init.d/corosync stopStopping Corosync Cluster Engine (corosync): [ OK ]Waiting for services to unload: [ OK ][root@pcmk-1 ~]#

å½âCorosyncåâæ¢âè¿âè¡âä»¥âåâï¼æâä»¬âå°âå¦âå¤âä¸âä¸ªâèâç¹âç¨âcrm_monæ¥âæ£âæ¥âéâç¾¤âç¶âæâ.

[root@pcmk-2 ~]# crm_mon============
Last updated: Fri Aug 28 15:27:35 2009
Stack: openais
Current DC: pcmk-2 - partition WITHOUT quorumVersion: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ pcmk-2 ]OFFLINE: [ pcmk-1 ]

å³âäºâéâç¾¤âç¶âæâï¼æâä»¬âæâä¸âä¸ªâå°âæ¹âéâè¦âæ³¨âæâï¼é¦âåâï¼å¦âæâä»¬âæâæâpcmk-1å·²âç»âä¸âçº¿âäºâï¼ç¶âèâæâä»¬âåâç°âClusterIPä¸âå¨âä»»âä½âå°âæ¹âè¿âè¡âï¼


5.3.1.Â æ³âå®âäººâæ°âåâåâèâç¹âéâç¾¤â

è¿âæ¯âå âä¸ºâéâç¾¤âå·²âç»âè¾¾âä¸âå°âââæ³âå®âäººâæ°âââäºâï¼å°±âåâæâä»¬âçâå°âçâââpartition
WITHOUT quorumââ
(ç¨âç»¿âè²âå¼ºâè°âçâ)ãâä¸ºâäºâé¿âåâæ°âæ®âéâå°âç ´âåâï¼å½âPacemakeråâç°âéâç¾¤âè¾¾âä¸âå°âæ³âå®âäººâæ°âæ¶âï¼å°±âä¼âåâæ¢âæâæâçâèµâæºâãâ
å½âæâåâæ°âä»¥âä¸âçâèâç¹âå¨âçº¿âæ¶âï¼è¿âä¸ªâéâç¾¤âå°±âè®¤âä¸ºâèªâå·±âæ¥âæâæ³âå®âäººâæ°âäºâï¼æ¯âââåâæ³âââçâï¼æ¢âèâè¨âä¹âå°±âæ¯âä¸âé¢âçâå¬âå¼â:
total_nodes - 1 < 2 * active_nodes
å âæ¤âå¨âåâèâç¹âçâéâç¾¤âä¸âï¼åªâæâå½âä¸¤âèâé½âå¨âçº¿âæ¶âæâæ¯âåâæ³âçâãâ
è¿âä¸ªâè§âåâä¼âè®©â åâèâç¹âçâéâç¾¤â
æ¯«âæ âæâä¹âï¼ä½âæ¯âæâä»¬âå¯âä»¥âæ§âå¶âPacemakeråâç°âéâç¾¤âè¾¾âä¸âå°âæ³âå®âäººâæ°âæ¶âåâçâè¡âä¸ºâãâç®âåâæ¥âè¯´âï¼æâä»¬âåâè¯âéâç¾¤âå¿½âç¥âå®â
ãâ

[root@pcmk-1 ~]# crm configure property no-quorum-policy=ignore[root@pcmk-1 ~]# crm configure show node pcmk-1
node pcmk-2
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"

è¿âäºâä¸âä¼âï¼éâç¾¤âä¼âå¨âå©âä¸âçâé£âä¸ªâèâç¹âä¸âå¯âå¨âè¿âä¸ªâIPãâè¯·âæ³¨âæâéâç¾¤âç°âå¨âä¾âç¶âæ²¡âæâè¾¾âå°âæ³âå®âäººâæ°âãâ

[root@pcmk-2 ~]# crm_mon============
Last updated: Fri Aug 28 15:30:18 2009
Stack: openais
Current DC: pcmk-2 - partition WITHOUT quorumVersion: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ pcmk-2 ]OFFLINE: [ pcmk-1 ]ClusterIP (ocf::heartbeat:IPaddr): Started pcmk-2

ç°âå¨âæ¨¡âæâèâç¹âæ¢âå¤âï¼æâä»¬âå¯âå¨â
pcmk-1
ä¸âé¢âçâCorosyncæâå¡âï¼ç¶âåâæ£âæ¥âéâç¾¤âç¶âæâãâ

[root@pcmk-1 ~]# /etc/init.d/corosync startStarting Corosync Cluster Engine (corosync): [ OK ]      
[root@pcmk-1 ~]# /etc/init.d/pacemaker startStarting Pacemaker Cluster Manager: [ OK ][root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 15:32:13 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-1

ç°âå¨âæâä»¬âå¯âä»¥âçâå°âè®©âæâäºâäººâæâå¥âçâäºâæâï¼IPèµâæºâåâå°âåâæ¥âé£âä¸ªâèâç¹â(pcmk-1)ä¸âå»âäºâãâ


5.3.2.Â é²âæ¢âèµâæºâå¨âèâç¹âæ¢âå¤âåâç§»âå¨â

ä¸âäºâç¯âå¢âä¸âä¼âè¦âæ±âå°½âéâé¿âåâèµâæºâå¨âèâç¹âä¹âé´âç§»âå¨âãâç§»âå¨âèµâæºâéâå¸¸âæâå³âçâä¸âæ®µâæ¶âé´âåâæ âæ³âæâä¾âæâå¡âï¼æâäºâå¤âæâçâæâå¡âï¼æ¯âå¦âOracleæ°âæ®âåºâï¼è¿âä¸ªâæ¶âé´âå¯âè½âä¼âå¾âé¿âãâ
ä¸ºâäºâè¾¾âå°âè¿âä¸ªâæâæâï¼Pacemaker
æâä¸âä¸ªâå«âåâ èµâæºâé»âæ§âå¼â
çâæ¦âå¿µâï¼å®âè½âå¤âæ§âå¶âä¸âä¸ªâæâå¡â(èµâæºâ)æâå¤âæ³âåâå¨âå®âæ£âå¨âè¿âè¡âçâèâç¹âä¸âãâä½ âå¯âä»¥âæâå®âè®¤âä¸ºâæ¯âæ âæ³âæâä¾âæâå¡âçâââä»£âä»·âââ[13]ââãâ
Pacemakerä¸ºâäºâè¾¾âå°âæâä¼âåâå¸âåâä¸ªâèµâæºâçâç®âçâï¼é»âè®¤âè®¾âç½®âè¿âä¸ªâå¼âä¸ºâ0ãâæâä»¬âå¯âä»¥âä¸ºâæ¯âä¸ªâèµâæºâå®âä¹âä¸âåâçâé»âæ§âå¼âï¼ä½âä¸âè¬âæ¥âè¯´âï¼æ´âæ¹âé»âè®¤âé»âæ§âå¼âå°±âå¤âäºâãâ

crm configure rsc_defaults resource-stickiness=100
[root@pcmk-2 ~]# crm configure shownode pcmk-1
node pcmk-2
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"rsc_defaults $id="rsc-options" \ resource-stickiness="100"

ç°âå¨âæâä»¬âéâæ°âå°âè¯âå¤±âæâæ´âå¤âæµâè¯âï¼æâä»¬âå¯âä»¥âçâå°âï¼æ£âå¦âæâä»¬âæâæâï¼å½âpcmk-1ä¸âå¨âçº¿âçâæ¶âåâClusterIPè¿âæ¯âç§»âå¨âå°âäºâpcmk-2

[root@pcmk-1 ~]# ssh pcmk-1 -- /etc/init.d/pacemaker stopSignaling Pacemaker Cluster Manager to terminate:          [  OK  ]
Waiting for cluster services to unload:.                   [  OK  ]
[root@pcmk-1 ~]# ssh pcmk-1 -- /etc/init.d/corosync stopStopping Corosync Cluster Engine (corosync): Â  Â  Â  Â  Â  Â  Â  [ Â OK Â ]
Waiting for services to unload: Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â [ Â OK Â ]
[root@pcmk-1 ~]# ssh pcmk-2 -- crm_mon -1============
Last updated: Fri Aug 28 15:39:38 2009
Stack: openais
Current DC: pcmk-2 - partition WITHOUT quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ pcmk-2 ]OFFLINE: [ pcmk-1 ]
ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr):Â  Â  Â  Â  Started pcmk-2

ä½âæ¯âå½âæâä»¬âæâpcmk-1æ¢âå¤âå¨âçº¿âåâï¼ClusterIPç°âå¨âè¿âæ¯âè·âå¨âpcmk-2ä¸âé¢âãâ

[root@pcmk-1 ~]# /etc/init.d/corosync startStarting Corosync Cluster Engine (corosync): [ OK ][root@pcmk-1 ~]# /etc/init.d/pacemaker startStarting Pacemaker Cluster Manager: [ OK ][root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 15:41:23 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-2


------------------------------------------------------------------------

[11]
å¦âæâæ°âæ®âæ¯âæâåâçâï¼é£âä¿âè¯âå®âçâå¯âç¨âæ§âæ¯âæ²¡âæâæâä¹âçâ

[12]
ä¸âä¸ªâå¸¸âè§âçâéâç¦»âæâæ®µâãâç¨âå³âæâåâèâç¹âçµâæºâçâåâæ³âæ¥âä¿âè¯âæ°âæ®âå®âæ´â

[13]
è¿âéâè¦âæ³¨âæâçâæ¯âPacemakerå®âä¹âçâä»£âä»·âè·âäººâä»¬âæâæ³âçâä¸âä¸âæ ·âãâå¦âæâç®¡âçâåâæ²¡âæâæâç¡®âçâæâå®âåâæ°â(åâå»ºâç¨³âå®âç¯âå¢âæâå¿âé¡»âçâ)ï¼é£âä¹âèµâæºâä¸ªâèâç¹âå¨âPacemakerå¤âçâåâè¡¨âä¸âçâé¡ºâåºâä¼âéâå¼âå°âåâå»ºâåâæ°â


ç¬¬Â 6Â ç« Â Apache - æ·»âå âæ´âå¤âçâæâå¡â
----------------------------------------------------------------

6.1. å®âè£âApache

6.2. åâå¤âå·¥âä½â

6.3. å¼âå¯â Apache status URL

6.4. æ´âæ°âéâç½®âæâä»¶â

6.5.
ç¡®âä¿âèµâæºâå¨âåâä¸âä¸ªâèâç¹âè¿âè¡â

6.6. æ§âå¶âèµâæºâçâå¯âå¨âåâæ¢âé¡ºâåºâ

6.7. æâå®âä¼âåâçâ Location

6.8. å¨âéâç¾¤âä¸âæâå·¥âå°âç§»âå¨âèµâæºâ

      6.8.1. æâæ§âå¶âæâäº¤âè¿âç»âéâç¾¤â


æ³¨æ
------

ç°âå¨âæâä»¬âæâäºâä¸âä¸ªâåºâæ¬âçâä½âæ¯âåâè½âé½âå¨âçâåâèâç¹âéâç¾¤â,æâä»¬âå·²âç»âå¯âä»¥âå¾âéâé¢âå âäºâçâçâæâå¡âäºâãâæâä»¬âåâå¤âå¯âå¨âä¸âä¸ªâApacheæâå¡âï¼å âä¸ºâå®âæ¯âè®¸âå¤âéâç¾¤âçâä¸»âè§âï¼å¹¶âä¸âç¸âå¯¹âæ¥âè¯´âæ¯âè¾âå®¹âæâéâç½®âãâ


6.1.Â å®âè£âApache
------------------------

å¨âç»§âç»âä¹âåâï¼æâä»¬âåâç¡®âä¿âä¸¤âä¸ªâèâç¹âé½âå®âè£âäºâApache.

[root@ppcmk-1 ~]# yum install -y httpdSetting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.13-2.fc12 set to be updated
--> Processing Dependency: httpd-tools = 2.2.13-2.fc12 for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.13-2.fc12.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-2.fc12 set to be updated
---> Package apr-util.x86_64 0:1.3.9-2.fc12 set to be updated
---> Package apr-util-ldap.x86_64 0:1.3.9-2.fc12 set to be updated
---> Package httpd-tools.x86_64 0:2.2.13-2.fc12 set to be updated
---> Package mailcap.noarch 0:2.1.30-1.fc12 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================
Â Package Â  Â  Â  Â  Â  Â  Â  Arch Â  Â  Â  Â  Â  Â  Version Â  Â  Â  Â  Â  Â  Â  Â Repository Â  Â  Â  Â  Size
=======================================================================================
Installing:
Â httpd Â  Â  Â  Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  2.2.13-2.fc12 Â  Â  Â  Â  Â  Â rawhide Â  Â  Â  Â  Â  735 k
Installing for dependencies:
Â apr Â  Â  Â  Â  Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  1.3.9-2.fc12 Â  Â  Â  Â  Â  Â  rawhide Â  Â  Â  Â  Â  117 k
Â apr-util Â  Â  Â  Â  Â  Â x86_64 Â  Â  Â  Â  Â  1.3.9-2.fc12 Â  Â  Â  Â  Â  Â  rawhide Â  Â  Â  Â  Â  Â 84 k
Â apr-util-ldap Â  Â  Â  x86_64 Â  Â  Â  Â  Â  1.3.9-2.fc12 Â  Â  Â  Â  Â  Â  rawhide Â  Â  Â  Â  Â  Â 15 k
Â httpd-tools Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  2.2.13-2.fc12 Â  Â  Â  Â  Â  Â rawhide Â  Â  Â  Â  Â  Â 63 k
Â mailcap Â  Â  Â  Â  Â  Â  noarch Â  Â  Â  Â  Â  2.1.30-1.fc12 Â  Â  Â  Â  Â  Â rawhide Â  Â  Â  Â  Â  Â 25 k

Transaction Summary
=======================================================================================
Install Â  Â  Â  6 Package(s)
Upgrade Â  Â  Â  0 Package(s)

Total download size: 1.0 M
Downloading Packages:
(1/6): apr-1.3.9-2.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â  Â  Â Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | 117 kB Â  Â  00:00 Â  Â  
(2/6): apr-util-1.3.9-2.fc12.x86_64.rpm Â  Â  Â  Â  Â   Â  Â  Â  Â  Â  Â  Â  Â  Â  | Â 84 kB Â  Â  00:00 Â  Â  
(3/6): apr-util-ldap-1.3.9-2.fc12.x86_64.rpm Â  Â  Â Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | Â 15 kB Â  Â  00:00 Â  Â  
(4/6): httpd-2.2.13-2.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â   Â  Â  Â  Â  Â  Â  Â  Â  Â  | 735 kB Â  Â  00:00 Â  Â  
(5/6): httpd-tools-2.2.13-2.fc12.x86_64.rpm Â  Â  Â   Â  Â  Â  Â  Â  Â  Â  Â  Â  | Â 63 kB Â  Â  00:00 Â  Â  
(6/6): mailcap-2.1.30-1.fc12.noarch.rpm Â  Â  Â  Â  Â   Â  Â  Â  Â  Â  Â  Â  Â  Â  | Â 25 kB Â  Â  00:00 Â  Â  
----------------------------------------------------------------------------------------
Total Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â Â  Â  Â  Â  Â 875 kB/s | 1.0 MB Â  Â  00:01 Â  Â  
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Â  Installing Â  Â  : apr-1.3.9-2.fc12.x86_64 Â  Â  Â  Â   Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  1/6 
Â  Installing Â  Â  : apr-util-1.3.9-2.fc12.x86_64 Â  Â  Â Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 2/6 
Â  Installing Â  Â  : apr-util-ldap-1.3.9-2.fc12.x86_64  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  3/6 
Â  Installing Â  Â  : httpd-tools-2.2.13-2.fc12.x86_64 Â Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 4/6 
Â  Installing Â  Â  : mailcap-2.1.30-1.fc12.noarch Â  Â  Â Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 5/6 
Â  Installing Â  Â  : httpd-2.2.13-2.fc12.x86_64 Â  Â  Â  Â Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 6/6 

Installed:
Â  httpd.x86_64 0:2.2.13-2.fc12 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â   Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  

Dependency Installed:
Â  apr.x86_64 0:1.3.9-2.fc12 Â  Â  Â  Â  Â  Â apr-util.x86_64 0:1.3.9-2.fc12
Â  apr-util-ldap.x86_64 0:1.3.9-2.fc12Â  httpd-tools.x86_64 0:2.2.13-2.fc12
Â  mailcap.noarch 0:2.1.30-1.fc12 Â 

Complete!
[root@pcmk-1 ~]#

åâæ ·âçâï¼ä¸ºâäºâæ£âæµâApacheæâå¡âå¨âï¼æâä»¬âè¦âå®âè£âwgetè¿âä¸ªâå·¥âå·âãâ

[root@pcmk-1 ~]# yum install -y wgetSetting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.11.4-5.fc12 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================
Â Package Â  Â  Â  Â Arch Â  Â  Â  Â  Â  Â  Version Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â Repository Â  Â  Â  Â  Â  Â  Â  Size
===========================================================================================
Installing:
Â wget Â  Â  Â  Â   x86_64Â  Â  Â  Â  Â  1.11.4-5.fc12 Â  Â  Â  Â  Â  Â  Â  Â  Â Â rawhideÂ  Â  Â  Â  Â  Â  Â  Â  393 k

Transaction Summary
===========================================================================================
Install Â  Â  Â  1 Package(s)
Upgrade Â  Â  Â  0 Package(s)

Total download size: 393 k
Downloading Packages:
wget-1.11.4-5.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | 393 kB Â  Â  00:00 Â  Â  
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Â  Installing Â  Â  : wget-1.11.4-5.fc12.x86_64 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 1/1 

Installed:
Â  wget.x86_64 0:1.11.4-5.fc12

Complete!
[root@pcmk-1 ~]#


6.2.Â åâå¤âå·¥âä½â
------------------------------

é¦âåâæâä»¬âä¸ºâApacheåâå»ºâä¸âä¸ªâä¸»âé¡µâãâå¨âFedoraä¸âé¢âé»âè®¤âçâApache
docrootæ¯â/var/www/htmlï¼æâä»¥âæâä»¬âå¨âè¿âä¸ªâç®âå½âä¸âé¢âå»ºâç«âä¸âä¸ªâä¸»âé¡µâãâ

[root@pcmk-1 ~]# cat <<-END >/var/www/html/index.html <html>
 <body>My Test Site - pcmk-1</body>
 </html>
 END
[root@pcmk-1 ~]#

ä¸ºâäºâæ¹âä¾¿âï¼æâä»¬âç®âåâæâç¨âçâé¡µâé¢âå¹¶âäººâå·¥âå°âå¨âä¸¤âä¸ªâèâç¹âç´âæ¥âåâæ¥âæ°âæ®âãâæâä»¥âå¨âpcmk-2ä¸âé¢âè¿âè¡âè¿âä¸ªâå½âä»¤âãâ

[root@pcmk-2 ~]# cat <<-END >/var/www/html/index.html <html>
 <body>My Test Site - pcmk-2</body>
 </html>
 END
[root@pcmk-2 ~]#


6.3.Â å¼âå¯â Apache status URL
------------------------------------

ä¸ºâäºâçâæ§âApacheå®âä¾âçâå¥âåº·âç¶âæâ,å¹¶âå¨âå®âæâæâçâæ¶âåâæ¢âå¤âApacheæâå¡âï¼èµâæºâagentä¼âåâè®¾â
server-status
URLæ¯âå¯âç¨âçâãâæ¥âçâ/etc/httpd/conf/httpd.confå¹¶âç¡®âä¿âä¸âé¢âçâéâé¡¹âæ²¡âæâè¢«âç¦âç¨âæâæ³¨âéâæâãâ

<Location /server-status>
   SetHandler server-status
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
</Location>


6.4.Â æ´âæ°âéâç½®âæâä»¶â
------------------------------------------

ç°âå¨â
ï¼Apacheå·²âç»âå¯âä»¥âæ·»âå âå°âéâç¾¤âä¸âäºâãâæâä»¬âç®¡âè¿âä¸ªâèµâæºâå«âWebSiteãâæâä»¬âéâè¦âç¨âä¸âä¸ªâå«âåâapacheçâOCFèâæ¬âï¼è¿âä¸ªâèâæ¬âå¨âheartbeatè¿âä¸ªâåâåâç©ºâé´âéâï¼å¯âä¸âä¸âä¸ªâéâè¦âè®¾âå®âçâåâæ°âå°±âæ¯âApacheçâä¸»âéâç½®âæâä»¶âè·¯âå¾âï¼å¹¶âä¸âæâä»¬âåâè¯âéâç¾¤âæ¯âä¸âåâéâæ£âæµâä¸âæ¬¡âApacheæ¯âå¦âè¿âè¡âãâ

[root@pcmk-1 ~]# crm configure primitive WebSite ocf:heartbeat:apache params configfile=/etc/httpd/conf/httpd.conf op monitor interval=1min[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2primitive WebSite ocf:heartbeat:apache \ params configfile="/etc/httpd/conf/httpd.conf" \ op monitor interval="1min"primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness="100"

è¿âäºâä¸âä¼âï¼æâä»¬âå¯âä»¥âçâå°âéâç¾¤âæâapacheå¯âå¨âèµ·âæ¥âäºâãâ

[root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 16:12:49 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr):Â  Â  Â  Â  Started pcmk-2
WebSiteÂ  Â  Â  Â  (ocf::heartbeat:apache):Â  Â  Â  Â  Started pcmk-1

çâçâï¼WebSiteè¿âä¸ªâèµâæºâè·âIPæ²¡âæâè·âå¨âåâä¸âä¸ªâèâç¹âä¸âé¢âï¼


6.5.Â ç¡®âä¿âèµâæºâå¨âåâä¸âä¸ªâèâç¹âè¿âè¡â
------------------------------------------------------------------------------

ä¸ºâäºâåâå°âæ¯âä¸ªâæºâå¨âçâè´âè½½âï¼Pacemakerä¼âæºâè½âå°âå°âè¯âå°âèµâæºâåâæ£âå°âåâä¸ªâèâç¹âä¸âé¢âãâ
ç¶âèâæâä»¬âå¯âä»¥âåâè¯âéâç¾¤âæâä¸¤âä¸ªâèµâæºâæ¯âæâèâç³»âå¹¶âä¸âè¦âå¨âåâä¸âä¸ªâèâç¹âè¿âè¡â(æâä¸âåâçâèâç¹âè¿âè¡â)ãâè¿âéâæâä»¬âåâè¯âéâç¾¤âWebSiteåªâè½âå¨âæâClusterIPçâèâç¹âä¸âè¿âè¡âãâå¦âæâClusterIPå¨âåªâä¸ªâèâç¹âé½âä¸âåâå¨âï¼é£âä¹âWebSiteä¹âä¸âè½âè¿âè¡âãâ

[root@pcmk-1 ~]# crm configure colocation website-with-ip INFINITY: WebSite ClusterIP[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"colocation website-with-ip inf: WebSite ClusterIPproperty $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness="100"
[root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 16:14:34 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr):Â  Â  Â  Â  Started pcmk-2
WebSiteÂ  Â  Â  Â  (ocf::heartbeat:apache):Â  Â  Â  Â  Started pcmk-2


6.6.Â æ§âå¶âèµâæºâçâå¯âå¨âåâæ¢âé¡ºâåºâ
-----------------------------------------------------------------------

å½âApacheå¯âå¨âäºâï¼å®âè·âå¯âç¨âçâIPç»âå¨âäºâä¸âèµ·âãâå®âä¸âä¼âç¥âéâæâä»¬âåâæ¥âæ·»âå âçâIPï¼æâä»¥âæâä»¬âä¸âä»âéâè¦âæ§âå¶âä»âä»¬âå¨âç¸âåâçâèâç¹âè¿âè¡âï¼ä¹âè¦âç¡®âä¿âClusterIPå¨âWebSiteä¹âåâå°±âå¯âå¨âäºâãâæâä»¬âç¨âæ·»âå âorderingçº¦âæâæ¥âè¾¾âå°âè¿âä¸ªâæâæâãâæâä»¬âéâè¦âç»âè¿âä¸ªâorderåâä¸ªâåâåâ(apache-after-ipä¹âç±»â
æâè¿°âæ§âçâ)ï¼å¹¶âæâåºâä»âæ¯âæâç®¡âçâ(è¿âæ ·âå½âClusterIPæ¢âå¤âäºâï¼åâæ¶âä¼âè§¦âåâWebSiteçâæ¢âå¤â)
å¹¶âä¸âåâæâäºâè¿âä¸¤âä¸ªâèµâæºâçâå¯âå¨âé¡ºâåºâãâ

[root@pcmk-1 ~]# crm configure order apache-after-ip mandatory: ClusterIP WebSite[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
colocation website-with-ip inf: WebSite ClusterIPorder apache-after-ip inf: ClusterIP WebSiteproperty $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness="100"


6.7.Â æâå®âä¼âåâçâ Location
---------------------------------------------

Pacemaker
å¹¶âä¸âè¦âæ±âä½ âæºâå¨âçâç¡¬âä»¶âéâç½®âæ¯âç¸âåâçâï¼å¯âè½âæâäºâæºâå¨âæ¯âå¦âå¤âçâæºâå¨âéâç½®âè¦âå¥½âãâè¿âç§âç¶âåµâä¸âæâä»¬âä¼âå¸âæâè®¾âç½®â:å½âæâä¸ªâèâç¹âå¯âç¨âæ¶âï¼èµâæºâå°±âè¦âè·âå¨âä¸âé¢âä¹âç±»âçâè§âåâãâä¸ºâäºâè¾¾âå°âè¿âä¸ªâæâæâæâä»¬âåâå»ºâlocationçº¦âæâãâåâæ ·âçâï¼æâä»¬âç»âä»âåâä¸âä¸ªâæâè¿°âæ§âçâåâåâ(prefer-pcmk-1)ï¼æâæâæâä»¬âæ³âå¨âä¸âé¢âè·âWebSiteè¿âä¸ªâæâå¡âï¼å¤âæ³âå¨âä¸âé¢âè·â(æâä»¬âç°âå¨âæâå®âåâå¼âä¸ºâ50ï¼ä½âæ¯âå¨âåâèâç¹âçâéâç¾¤âç¶âæâä¸âï¼ä»»âä½âå¤§âäºâ0çâå¼âé½âå¯âä»¥âè¾¾âå°âæ³âè¦âçâæâæâ)ï¼ä»¥âåâç®âæ âèâç¹âçâåâåâ:

[root@pcmk-1 ~]# crm configure location prefer-pcmk-1 WebSite 50: pcmk-1[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"location prefer-pcmk-1 WebSite 50: pcmk-1colocation website-with-ip inf: WebSite ClusterIP
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness="100"
[root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 16:17:35 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr):Â  Â  Â  Â  Started pcmk-2WebSiteÂ  Â  Â  Â  (ocf::heartbeat:apache):Â  Â  Â  Â  Started pcmk-2

çâçâï¼èµâæºâè¿âæ¯âå¨âpcmk-2ä¸âé¢âè·âçâï¼
å³âä½¿âæâä»¬âæ´âå¸âæâèµâæºâå¨âpcmk-1ä¸âé¢âè¿âè¡âï¼ä½âæ¯â
è¿âä¸ªâä¼âåâå¼âè¿âæ¯âæ¯âèµâæºâé»âæ§âå¼âè¦âå°âãâ
å¦âæâè¦âçâç°âå¨âçâåâå¼âï¼å¯âä»¥âç¨âptestè¿âä¸ªâå½âä»¤â
ptest -sL


æ³¨æ
------

Include output
è¿âéâæâä¸ªâåâæ³âå¼ºâå¶âå°âç§»âå¨âèµâæºâ


6.8.Â å¨âéâç¾¤âä¸âæâå·¥âå°âç§»âå¨âèµâæºâ
-----------------------------------------------------------------------

6.8.1. æâæ§âå¶âæâäº¤âè¿âç»âéâç¾¤â

ç»âå¸¸âæ§âçâä¼âæâç®¡âçâåâæ³âè¦âæ âè§âéâç¾¤âç¶âåâå¼ºâå¶âæâèµâæºâç§»âå¨âå°âæâå®âçâå°âæ¹âãâ
åºâå±âçâæâä½âå°±âåâæâä»¬âä¸âé¢âåâå»ºâçâlocationçº¦âæâä¸âæ ·âãâåªâè¦âæâä¾âèµâæºâåâç®âæ âå°âåâï¼æâä»¬âä¼âè¡¥âå¨âå©âä½âé¨âåâãâ

[root@pcmk-1 ~]# crm resource move WebSite pcmk-1[root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 16:19:24 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr):Â  Â  Â  Â  Started pcmk-1
WebSiteÂ  Â  Â  Â  (ocf::heartbeat:apache):Â  Â  Â  Â  Started pcmk-1
Notice how the colocation rule we created has ensured that ClusterIP was also moved to pcmk-1.
For the curious, we can see the effect of this command by examining the configuration
crm configure show
[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"location cli-prefer-WebSite WebSite \ rule $id="cli-prefer-rule-WebSite" inf: #uname eq pcmk-1location prefer-pcmk-1 WebSite 50: pcmk-1
colocation website-with-ip inf: WebSite ClusterIP
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness="100"

æâä½âé¨âåâæ¯âç¨âæ¥âç§»âå¨âèµâæºâå°âpcmk-1çº¦âæâï¼å®âæ¯âèªâå¨âçâæâçâãâ


6.8.1.Â æâæ§âå¶âæâäº¤âè¿âç»âéâç¾¤â

å½âæâä»¬âå®âæâé£âäºâè¦âæ±âè¦âèµâæºâç§»âå¨âå°âpcmk-1çâæâä½âï¼ï¼å¨âæâä»¬âçâä¾âåâéâé¢âå¥âé½âæ²¡âå¹²â
ï¼ï¼æâä»¬âå¯âä»¥âç¨âunmoveå½âä»¤âæâéâç¾¤âæ¢âå¤âå°âå¼ºâå¶âç§»âå¨âåâçâç¶âæâãâå âä¸ºâæâä»¬âä¹âåâéâç½®âäºâé»âè®¤âçâèµâæºâé»âæ§âå¼âï¼æ¢âå¤âäºâä»¥âåâèµâæºâè¿âæ¯âä¼âå¨âpcmk-1ä¸âé¢âãâ

[root@pcmk-1 ~]# crm resource unmove WebSite[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
location prefer-pcmk-1 WebSite 50: pcmk-1
colocation website-with-ip inf: WebSite ClusterIP
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes="2" \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness="100"

å¯âä»¥âçâå°âèªâå¨âçâæâçâçº¦âæâå·²âç»âæ²¡âæâäºâãâå¦âæâæâä»¬âæ¥âçâéâç¾¤âçâç¶âæâï¼æâä»¬âä¹âå¯âä»¥âçâå°âå°±âå¦âæâä»¬âæâé¢âæâçâï¼èµâæºâè¿âæ¯âå¨âpcmk-1ä¸âé¢âè·â

[root@pcmk-1 ~]# crm_mon============
Last updated: Fri Aug 28 16:20:53 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

 ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr):Â  Â  Â  Â  Started pcmk-1 WebSiteÂ  Â  Â  Â  (ocf::heartbeat:apache):Â  Â  Â  Â  Started pcmk-1


ç¬¬Â 7Â ç« Â ç¨âDRBDåâæ¥âåâå¨â
---------------------------------------------

7.1. å®âè£âDRBDè½¯âä»¶âåâ

7.2. éâç½®âDRBD

      7.2.1. ä¸ºâDRBDåâå»ºâä¸âä¸ªâåâåºâ

      7.2.2. éâç½®âDRBD

      7.2.3. åâå§âåâå¹¶âè½½âå¥âDRBD

      7.2.4. åâDRBDä¸âæ·»âå âæ°âæ®â

7.3. å¨âéâç¾¤âä¸âéâç½®âDRBD

      7.3.1. è¿âç§»âæµâè¯â

å°±âç®âä½ âç¨âçâæ¯âéâæâç«âç¹âï¼æâå·¥âå¨âåâä¸ªâèâç¹âä¹âé´âåâæ¥âæâä»¶âä¹âä¸âæ¯âä¸ªâå¥½âä¸»âæâãâå¦âæâæ¯âå¨âæâç«âç¹âï¼é£âæ ¹âæ¬âä¸âä¼âèâèâè¿âä¸ªâãâç¨âNASä¸âæ¯âæâæâäººâé½âè½âè´âæâå¾âèµ·âï¼ä½âæ¯âæâäºâæ°âæ®âè¿âæ¯âè¦âåâæ¥âãâç¨âç¨âDRBD:
å®âè¢«âè®¤âä¸ºâæ¯âç½âç»âRAID-1ãâè®¿âé®â See
http://www.drbd.org/è·âå¾âæ´âè¯¦âç»âä»âç»â


7.1.Â å®âè£âDRBDè½¯âä»¶âåâ
----------------------------------------

å¨â2.6.33ä»¥âä¸âçâåâæ ¸âä¸âï¼æâä»¥âDRBDè¦âçâä¸âè¥¿âé½âå¨â
Fedora
13ä¸âåâå¨âäºâï¼ä½ âåªâè¦âå®âè£âå®âå°±âå¥½âäºâãâ

[root@pcmk-1 ~]# yum install -y drbd-pacemakerLoaded plugins: presto, refresh-packagekit
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package drbd-pacemaker.x86_64 0:8.3.7-2.fc13 set to be updated
--> Processing Dependency: drbd-utils = 8.3.7-2.fc13 for package: drbd-pacemaker-8.3.7-2.fc13.x86_64
--> Running transaction check
---> Package drbd-utils.x86_64 0:8.3.7-2.fc13 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================
 Package                Arch           Version              Repository      Size
=================================================================================
Installing:
 drbd-pacemaker         x86_64         8.3.7-2.fc13         fedora          19 k
Installing for dependencies:
 drbd-utils             x86_64         8.3.7-2.fc13         fedora         165 k

Transaction Summary
=================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)

Total download size: 184 k
Installed size: 427 k
Downloading Packages:
Setting up and reading Presto delta metadata
fedora/prestodelta                                        | 1.7 kB     00:00     
Processing delta metadata
Package(s) data still to download: 184 k
(1/2): drbd-pacemaker-8.3.7-2.fc13.x86_64.rpm             |  19 kB     00:01     
(2/2): drbd-utils-8.3.7-2.fc13.x86_64.rpm                 | 165 kB     00:02     
---------------------------------------------------------------------------------
Total                                             45 kB/s | 184 kB     00:04     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : drbd-utils-8.3.7-2.fc13.x86_64                            1/2 
  Installing     : drbd-pacemaker-8.3.7-2.fc13.x86_64                        2/2 

Installed:
  drbd-pacemaker.x86_64 0:8.3.7-2.fc13                                           

Dependency Installed:
  drbd-utils.x86_64 0:8.3.7-2.fc13                                               

Complete!
[root@pcmk-1 ~]#


7.2.Â éâç½®âDRBD
----------------------

7.2.1. ä¸ºâDRBDåâå»ºâä¸âä¸ªâåâåºâ

7.2.2. éâç½®âDRBD

7.2.3. åâå§âåâå¹¶âè½½âå¥âDRBD

7.2.4. åâDRBDä¸âæ·»âå âæ°âæ®â

å¨âæâä»¬âè®¾âç½®âä¹âåâï¼æâä»¬âè¦âåâå»ºâä¸âäºâç©ºâçâç£âçâåâåºâç»âå®âãâ


7.2.1.Â ä¸ºâDRBDåâå»ºâä¸âä¸ªâåâåºâ

å¦âæâä½ âæâ1Gbä»¥âä¸âçâç©ºâé´âï¼å°±âç¨âé£âä¹âå¤âå§âï¼
å¨âè¿âä¸ªâæâåâä¸âæ ¹âæ¬âç¨âä¸âå°âè¿âä¹âå¤âç©ºâé´âãâ

[root@pcmk-1 ~]# lvcreate -n drbd-demo -L 1G VolGroupÂ  Logical volume "drbd-demo" created
[root@pcmk-1 ~]# lvsÂ  LV Â  Â  Â  Â VG Â  Â  Â  Attr Â  LSize Â  Origin Snap% Â Move Log Copy% Â Convert
Â  drbd-demo VolGroup -wi-a- 1.00G Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 
Â  lv_root Â  VolGroup -wi-ao Â  7.30G Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 
Â  lv_swap Â  VolGroup -wi-ao 500.00M

å¨âå¦âå¤âä¸âä¸ªâèâç¹âä¸âé¢âæ§âè¡âç¸âåâçâæâä½âï¼è¯·âç¡®âä¿âä½¿âç¨âäºâç¸âåâå¤§âå°âçâåâåºâãâ

[root@pcmk-2 ~]# lvsÂ  LV Â  Â  Â VG Â  Â  Â  Attr Â  LSize Â  Origin Snap% Â Move Log Copy% Â Convert
Â  lv_root VolGroup -wi-ao Â  7.30G Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 
Â  lv_swap VolGroup -wi-ao 500.00M Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 
[root@pcmk-2 ~]# lvcreate -n drbd-demo -L 1G VolGroupÂ  Logical volume "drbd-demo" created[root@pcmk-2 ~]# lvsÂ  LV Â  Â  Â  Â VG Â  Â  Â  Attr Â  LSize Â  Origin Snap% Â Move Log Copy% Â Convert
Â  drbd-demo VolGroup -wi-a- 1.00G Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 
Â  lv_root Â  VolGroup -wi-ao Â  7.30G Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 
Â  lv_swap Â  VolGroup -wi-ao 500.00M


7.2.2.Â éâç½®âDRBD

æ²¡âæâå½âä»¤âæ¥âèªâå¨âçâæâDRBDéâç½®âæâä»¶âï¼æâä»¥âæâä»¬âè¦âç®âåâçâæ·âè´âä¸âé¢âçâéâç½®âæâä»¶âå¹¶âç²âè´´âå°â/etc/drbd.conf
æ³âç¥âéâéâç½®âæâä»¶âçâè¯¦âç»âä¿¡âæ¯âï¼è¯·âè®¿âé®â
http://www.drbd.org/users-guide/ch-configure.html


è¦å
-----

è¯·âæ³¨âæâè¦âæ¿âæ¢âæânameåâaddresséâé¡¹âä»¥âç¬¦âåâæ¨âçâè¯âéªâç¯âå¢âãâ

global { 
Â  usage-count yes; 
}
common {
Â  protocol C;
}
resource wwwdata {
Â  meta-disk internal;
Â  device Â  Â /dev/drbd1;
Â  syncer {
Â  Â  verify-alg sha1;
Â  }
Â  net { 
Â  Â  allow-two-primaries; 
Â  }
Â  on pcmk-1 {
Â  Â  disk Â  Â  Â /dev/mapper/VolGroup-drbd--demo;
Â  Â  address Â  192.168.122.101:7789; 
Â  }
Â  on pcmk-2 {
Â  Â  disk Â  Â  Â /dev/mapper/VolGroup-drbd--demo;
Â  Â  address Â  192.168.122.102:7789;      
Â  }
}


æ³¨æ
------

TODO: Explain the reason for the allow-two-primaries option


7.2.3.Â åâå§âåâå¹¶âè½½âå¥âDRBD

éâç½®âå®âæâä»¥âåâï¼æâä»¬âå¯âä»¥âæ¥âæ§âè¡âåâå§âåâäºâ

[root@pcmk-1 ~]# drbdadm create-md wwwdatamd_offset 12578816
al_offset 12546048
bm_offset 12541952

Found some data 
Â ==> This might destroy existing data! <==

Do you want to proceed?
[need to type 'yes' to confirm] yes
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success

ç°âå¨âè®²âDRBDçâæ¨¡âåâè½½âå¥âåâæ ¸âå¹¶âæ£âæµâæ¯âä¸âæ¯âé½âæ£âå¸¸â

[root@pcmk-1 ~]# modprobe drbd[root@pcmk-1 ~]# drbdadm up wwwdata[root@pcmk-1 ~]# cat /proc/drbdversion: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
 1: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----
Â  Â  ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12248
[root@pcmk-1 ~]# 

Repeat on the second node
drbdadm --force create-md wwwdata 
modprobe drbd
drbdadm up wwwdata
cat /proc/drbd
[root@pcmk-2 ~]# drbdadm --force create-md wwwdataWriting meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success
[root@pcmk-2 ~]# modprobe drbdWARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
[root@pcmk-2 ~]# drbdadm up wwwdata[root@pcmk-2 ~]# cat /proc/drbdversion: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
 1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----Â  Â  ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12248

ç°âå¨âæâä»¬âè¦âåâè¯âDRBDè¦âç¨âé£âä¸ªâæ°âæ®â(é£âä¸ªâèâç¹âä½âä¸ºâä¸»â)ãâå âä¸ºâä¸¤âè¾¹âé½âæâä¸âäºâåºâæ°âæ®âï¼æâä»¬âè¦âå¨âpcmk-1ä¸âé¢âæ§âè¡âä¸âä¸âå½âä»¤âãâ

[root@pcmk-1 ~]# drbdadm -- --overwrite-data-of-peer primary wwwdata[root@pcmk-1 ~]# cat /proc/drbdversion: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
Â 1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
Â  Â  ns:2184 nr:0 dw:0 dr:2472 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:10064
Â  Â  Â  Â  [=====>..............] sync'ed: 33.4% (10064/12248)K
Â  Â  Â  Â  finish: 0:00:37 speed: 240 (240) K/sec
[root@pcmk-1 ~]# cat /proc/drbdversion: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
Â 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
Â  Â  ns:12248 nr:0 dw:0 dr:12536 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

pcmk-1ç°âå¨âæ¯âå¤âäºâPrimary(ä¸»â)ç¶âæâäºâï¼å®âåâè®¸âåâå¥âäºâãâè¿âæâå³âçâå¯âä»¥âå¨âä¸âé¢âåâå»ºâæâä»¶âç³»âç»âå¹¶âæâä¸âäºâæ°âæ®âæ¾âè¿âå»âï¼å¹¶âä¸âç¨âWebSiteè¿âä¸ªâèµâæºâæ¥âå±âç°âãâ


7.2.4.Â åâDRBDä¸âæ·»âå âæ°âæ®â

[root@pcmk-1 ~]# mkfs.ext4 /dev/drbd1mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
3072 inodes, 12248 blocks
612 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=12582912
2 block groups
8192 blocks per group, 8192 fragments per group
1536 inodes per group
Superblock backups stored on blocks: 
Â  Â  Â  Â  8193

Writing inode tables: done Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Â Use tune2fs -c or -i to override.

Now mount the newly created filesystem so we can create our index file
mount /dev/drbd1 /mnt/
cat <<-END >/mnt/index.html
<html>
<body>My Test Site - drbd</body>
</html>
END
umount /dev/drbd1
[root@pcmk-1 ~]# mount /dev/drbd1 /mnt/[root@pcmk-1 ~]# cat <<-END >/mnt/index.html> <html>
> <body>My Test Site - drbd</body>
> </html>
> END
[root@pcmk-1 ~]# umount /dev/drbd1


7.3.Â å¨âéâç¾¤âä¸âéâç½®âDRBD
---------------------------------------------

7.3.1. è¿âç§»âæµâè¯â

crm
shellä¸âä¸ªâä¾¿âæ·âçâç¹âæ§âæ¯âå¯âä»¥âå·¥âä½âå¨âäº¤âäºâæ¨¡âå¼âä¸âå¹¶âèªâå¨âçâåâæ´âéâç½®âä¸âçâç¸âå³âé¨âåâãâ
é¦âåâæâä»¬âæâå¼âshellãâæâç¤ºâä¼âæâåºâä½ âç°âå¨âæ¯âå¨âäº¤âäºâæ¨¡âå¼âä¸âãâ

[root@pcmk-1 ~]# crmcib crm(live)#

ç¶âåâæâä»¬âåâå»ºâä¸âä¸ªâå½âåâéâç½®âæâä»¶âçâå¯âæ¬âãâæâä»¬âå¨âè¿âä¸ªâå¯âæ¬âéâæ´âæ¹âéâç½®âãâç´âå°âæâä»¬âæâäº¤âè¿âä¸ªâå¯âæ¬âä¹âåâéâç¾¤âä¸âä¼âåºâç¨âè¿âäºâæ´âæ¹âãâè¯·âæ³¨âæâæâç¤ºâç¬¦âçâåâæ´âï¼ç°âå¨âå®âæâåºâæâä»¬âçâå°âçâå·²âç»âä¸âæ¯âå½âåâ(live)éâç¾¤âçâéâç½®âæâä»¶âãâ

cib crm(live)# cib new drbdINFO: drbd shadow CIB created
crm(drbd)#

ç°âå¨âæâä»¬âå¯âä»¥âåâå»ºâDRBD
clone,ç¶âåâçâçâä¿®âæ¹âè¿âåâçâéâç½®âæâä»¶âãâ

crm(drbd)# configure primitive WebData ocf:linbit:drbd params drbd_resource=wwwdata \Â  Â  Â  Â  op monitor interval=60scrm(drbd)# configure ms WebDataClone WebData meta master-max=1 master-node-max=1 \Â  Â  Â  Â  clone-max=2 clone-node-max=1 notify=truecrm(drbd)# configure shownode pcmk-1
node pcmk-2primitive WebData ocf:linbit:drbd \ params drbd_resource="wwwdata" \ op monitor interval="60s"primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"ms WebDataClone WebData \ meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"location prefer-pcmk-1 WebSite 50: pcmk-1
colocation website-with-ip inf: WebSite ClusterIP
order apache-after-ip inf: ClusterIP WebSite
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â

ä¸âæ¦âä½ âç¡®âè®¤âè¿âäºâä¿®âæ¹âæ²¡âé®âé¢âï¼æâä»¬âå°±âæâäº¤âè¿âä¸ªâå¯âæ¬âï¼ç¶âåâç¨âcrm_monæ¥âçâçâä¿®âæ¹âæ¯âå¦âçâæâäºâãâ

crm(drbd)# cib commit drbdINFO: commited 'drbd' shadow CIB to the cluster
crm(drbd)# quitbye
[root@pcmk-1 ~]# crm_mon============
Last updated: Tue Sep Â 1 09:37:13 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
3 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-1
WebSite (ocf::heartbeat:apache): Â  Â  Â  Â Started pcmk-1Master/Slave Set: WebDataClone Masters: [ pcmk-2 ] Slaves: [ pcmk-1 ]


æ³¨æ
------

Include details on adding a second DRBD resource
ç°âå¨âDRBDå·²âç»âå·¥âä½âäºâï¼æâä»¬âå¯âä»¥âéâç½®âä¸âä¸ªâFilesystemèµâæºâæ¥âä½¿âç¨âå®âãâ
æ¤âå¤âï¼å¯¹âäºâè¿âä¸ªâæâä»¶âç³»âç»âçâå®âä¹âï¼åâæ ·âçâæâä»¬âåâè¯âéâç¾¤âè¿âä¸ªâæâä»¶âç³»âç»âè½âå¨âåªâè¿âè¡â(ä¸»âDRBDè¿âè¡âçâèâç¹â)ä»¥âåâä»âä¹âæ¶âåâå¯âä»¥âå¯âå¨â(å¨âä¸»âDRBDå¯âå¨âä»¥âåâ)ãâ
æâä»¬âåâä¸âæ¬¡âçâä½¿âç¨âäº¤âäºâæ¨¡âå¼âçâcrm
shell

[root@pcmk-1 ~]# crmcrm(live)# cib new fsINFO: fs shadow CIB created
crm(fs)# configure primitive WebFS ocf:heartbeat:Filesystem \Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="ext4"crm(fs)# configure colocation fs_on_drbd inf: WebFS WebDataClone:Mastercrm(fs)# configure order WebFS-after-WebData inf: WebDataClone:promote WebFS:start

æâä»¬âä¹âè¦âåâè¯âéâç¾¤âApacheä¹âè¦âè¿âè¡âå¨âåâæ ·âçâèâç¹âä¸âï¼èâä¸âæâä»¶âç³»âç»âè¦âå¨âApacheä¹âåâå¯âå¨âãâ

crm(fs)# configure colocation WebSite-with-WebFS inf: WebSite WebFScrm(fs)# configure order WebSite-after-WebFS inf: WebFS WebSite

å®¡âè§âä¸âä¸âä½ âçâéâç½®â:

[root@pcmk-1 ~]# crm configure shownode pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="ext4"
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
location prefer-pcmk-1 WebSite 50: pcmk-1
colocation WebSite-with-WebFS inf: WebSite WebFS
colocation fs_on_drbd inf: WebFS WebDataClone:Master
colocation website-with-ip inf: WebSite ClusterIP
order WebFS-after-WebData inf: WebDataClone:promote WebFS:start
order WebSite-after-WebFS inf: WebFS WebSite
order apache-after-ip inf: ClusterIP WebSite
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â

çâå®âä»¥âåâï¼æâä»¬âæâäº¤âå®âå¹¶âçâçâæâæ²¡âæâçâæâãâ

crm(fs)# cib commit fsINFO: commited 'fs' shadow CIB to the cluster
crm(fs)# quitbye
[root@pcmk-1 ~]# crm_mon============
Last updated: Tue Sep Â 1 10:08:44 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
4 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-1WebSite (ocf::heartbeat:apache): Started pcmk-1Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-1 ]
Â  Â  Â  Â  Slaves: [ pcmk-2 ]WebFS (ocf::heartbeat:Filesystem): Started pcmk-1


7.3.1.Â è¿âç§»âæµâè¯â

æâä»¬âå¯âä»¥âåâæ¬¡âå³âæâå¨âè¿âè¡âçâé£âä¸ªâèâç¹âï¼ä½âæ¯âå®âå¨âçâæ¹âæ³âæ¯âæâèâç¹âè®¾âç½®âä¸ºâstandbyæ¨¡âå¼âãâèâç¹âå¨âè¿âä¸ªâç¶âæâä¸âé¢âçâäºâåâè¯âéâç¾¤âå®âä¸âè½âè¿âè¡âä»»âä½âèµâæºâï¼ä»»âä½âå¨âè¿âä¸ªâèâç¹âä¸âé¢âè¿âè¡âçâèµâæºâé½âä¼âè¢«âç§»âå¨âå°âå¶âä»âå°âæ¹âãâè¿âä¸ªâç¹âæ§âå¨âæ´âæ°âèµâæºâå®âè£âåâçâæ¶âåâç¹âå«âçâæ¹âä¾¿âãâ(ç¡®âå®âï¼)
æâä¸âä¸ªâæ¬âå°âèâç¹âè®¾âç½®âä¸ºâstandbyæ¨¡âå¼âå¹¶âè§âå¯âéâç¾¤âæâæâæâèµâæºâç§»âå¨âå°âå¦âå¤âä¸âä¸ªâèâç¹âäºâãâå¹¶âä¸âæ³¨âæâèâç¹âçâç¶âæâæ¹âåâä¸ºâä¸âè½âè¿âè¡âä»»âä½âçâèµâæºâãâ

[root@pcmk-1 ~]# crm node standby[root@pcmk-1 ~]# crm_mon============
Last updated: Tue Sep Â 1 10:09:57 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
4 Resources configured.
============
Node pcmk-1: standbyOnline: [ pcmk-2 ]

ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-2WebSite (ocf::heartbeat:apache): Â  Â  Â  Â Started pcmk-2Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-2 ]Â  Â  Â  Â  Stopped: [ WebData:1 ]
WebFS Â  (ocf::heartbeat:Filesystem): Â  Â Started pcmk-2

å½âæâå¨âpcmk-1ä¸âé¢âæâä½âå®âäºâï¼ï¼æ¬âä¾âä¸âæ²¡âæâä»»âä½âæâä½âï¼æâä»¬âåªâæ¯âæ³âè®©âèµâæºâç§»âå¨âç§»âå¨âï¼ï¼æâä»¬âå¯âä»¥âè®©âèâç¹âåâåâæ£âå¸¸âçâéâç¾¤âæâåâãâ

[root@pcmk-1 ~]# crm node online[root@pcmk-1 ~]# crm_mon============
Last updated: Tue Sep Â 1 10:13:25 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
4 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-2
WebSite (ocf::heartbeat:apache): Â  Â  Â  Â Started pcmk-2
Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-2 ]
Â  Â  Â  Â  Slaves: [ pcmk-1 ]
WebFS Â  (ocf::heartbeat:Filesystem): Â  Â Started pcmk-2

æ³¨âæâæâä»¬âè®¾âç½®âçâèµâæºâé»âæ§âå¼âé»âæ¢âäºâèµâæºâè¿âç§»âåâpcmk-1


ç¬¬Â 8Â ç« Â è½¬âåâä¸ºâActive/Active
--------------------------------------------

8.1. éâæ±â

8.2. å®âè£âä¸âä¸ªâéâç¾¤âæâä»¶âç³»âç»â - GFS2

8.3. æ´âåâ Pacemaker-GFS2

      8.3.1. æ·»âå â DLM æâå¡â

      8.3.2. æ·»âå â GFS2 æâå¡â

8.4. åâå»ºâä¸âä¸ªâ GFS2 æâä»¶âç³»âç»â

      8.4.1. åâå¤âå·¥âä½â

      8.4.2. åâå»ºâå¹¶âè¿âç§»âæ°âæ®âå°â GFS2
      åâåºâ

8.5. 8.5. éâæ°âä¸ºâéâç¾¤âéâç½®âGFS2

8.6. éâæ°âéâç½®â Pacemaker ä¸ºâ Active/Active

      8.6.1. æ¢âå¤âæµâè¯â


8.1.Â éâæ±â
------------------

Active/Activeéâç¾¤âä¸âä¸ªâä¸»âè¦âçâéâæ±âå°±âæ¯âæ°âæ®âå¨âä¸¤âå°âæºâå¨âä¸âé¢âé½âæ¯âå¯âç¨âå¹¶âä¸âæ¯âåâæ¥âçâãâPacemakeræ²¡âæâè¦âæ±âä½ âæâä¹âå®âç°âï¼ä½ âå¯âä»¥âç¨âSANï¼ä½âæ¯âèªâä»âDRBDæ¯âæâå¤âä¸»âæ¨¡âå¼âï¼æâä»¬âä¹âå¯âä»¥âç¨âè¿âä¸ªâæ¥âå®âç°âãâ
å¯âä¸âçâéâå¶âæ¯âæâä»¬âè¦âç¨âä¸âä¸ªâéâå¯¹âéâç¾¤âçâæâä»¶âç³»âç»â(æâä»¬âä¹âåâç¨âçâext4ï¼å®âå¹¶âä¸âæ¯âè¿âæ ·âä¸âä¸ªâæâä»¶âç³»âç»â)ãâ
OCFS2æâèâGFS2é½âæ¯âå¯âä»¥âçâï¼ä½âæ¯âå¨âFedora
13ä¸âé¢âï¼æâä»¬âç¨âGFS2ãâ


8.2.Â å®âè£âä¸âä¸ªâéâç¾¤âæâä»¶âç³»âç»â - GFS2
-------------------------------------------------------------------------

é¦âåâæâä»¬âå¨âåâä¸ªâèâç¹âä¸âé¢âå®âè£âGFS2ãâ

[root@pcmk-1 ~]# yum install -y gfs2-utils gfs-pcmkSetting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package gfs-pcmk.x86_64 0:3.0.5-2.fc12 set to be updated
--> Processing Dependency: libSaCkpt.so.3(OPENAIS_CKPT_B.01.01)(64bit) for package: gfs-pcmk-3.0.5-2.fc12.x86_64
--> Processing Dependency: dlm-pcmk for package: gfs-pcmk-3.0.5-2.fc12.x86_64
--> Processing Dependency: libccs.so.3()(64bit) for package: gfs-pcmk-3.0.5-2.fc12.x86_64
--> Processing Dependency: libdlmcontrol.so.3()(64bit) for package: gfs-pcmk-3.0.5-2.fc12.x86_64
--> Processing Dependency: liblogthread.so.3()(64bit) for package: gfs-pcmk-3.0.5-2.fc12.x86_64
--> Processing Dependency: libSaCkpt.so.3()(64bit) for package: gfs-pcmk-3.0.5-2.fc12.x86_64
---> Package gfs2-utils.x86_64 0:3.0.5-2.fc12 set to be updated
--> Running transaction check
---> Package clusterlib.x86_64 0:3.0.5-2.fc12 set to be updated
---> Package dlm-pcmk.x86_64 0:3.0.5-2.fc12 set to be updated
---> Package openaislib.x86_64 0:1.1.0-1.fc12 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================
Â Package Â  Â  Â  Â  Â  Â  Â  Â Arch Â  Â  Â  Â  Â  Â  Â  Version Â  Â  Â  Â  Â  Â  Â  Â  Â  Repository Â  Â  Â  Â Size
===========================================================================================
Installing:
Â gfs-pcmk Â  Â  Â  Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  Â  3.0.5-2.fc12 Â  Â  Â  Â  Â  Â  Â custom Â  Â  Â  Â  Â  101 k
Â gfs2-utils Â  Â  Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  Â  3.0.5-2.fc12 Â  Â  Â  Â  Â  Â  Â custom Â  Â  Â  Â  Â  208 k
Installing for dependencies:
Â clusterlib Â  Â  Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  Â  3.0.5-2.fc12 Â  Â  Â  Â  Â  Â  Â custom Â  Â  Â  Â  Â  Â 65 k
Â dlm-pcmk Â  Â  Â  Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  Â  3.0.5-2.fc12 Â  Â  Â  Â  Â  Â  Â custom Â  Â  Â  Â  Â  Â 93 k
Â openaislib Â  Â  Â  Â  Â  Â  x86_64 Â  Â  Â  Â  Â  Â  1.1.0-1.fc12 Â  Â  Â  Â  Â  Â  Â fedora Â  Â  Â  Â  Â  Â 76 k

Transaction Summary
===========================================================================================
Install Â  Â  Â  5 Package(s)
Upgrade Â  Â  Â  0 Package(s)

Total download size: 541 k
Downloading Packages:
(1/5): clusterlib-3.0.5-2.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | Â 65 kB Â  Â  00:00
(2/5): dlm-pcmk-3.0.5-2.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | Â 93 kB Â  Â  00:00
(3/5): gfs-pcmk-3.0.5-2.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | 101 kB Â  Â  00:00
(4/5): gfs2-utils-3.0.5-2.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | 208 kB Â  Â  00:00
(5/5): openaislib-1.1.0-1.fc12.x86_64.rpm Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â | Â 76 kB Â  Â  00:00
-------------------------------------------------------------------------------------------
Total Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  992 kB/s | 541 kB Â  Â  00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Â  Installing Â  Â  : clusterlib-3.0.5-2.fc12.x86_64 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  1/5 
Â  Installing Â  Â  : openaislib-1.1.0-1.fc12.x86_64 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  2/5 
Â  Installing Â  Â  : dlm-pcmk-3.0.5-2.fc12.x86_64 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  3/5 
Â  Installing Â  Â  : gfs-pcmk-3.0.5-2.fc12.x86_64 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  4/5 
Â  Installing Â  Â  : gfs2-utils-3.0.5-2.fc12.x86_64 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  5/5 

Installed:
Â  gfs-pcmk.x86_64 0:3.0.5-2.fc12 Â  Â  Â  Â  Â  Â  Â  Â  Â  Â gfs2-utils.x86_64 0:3.0.5-2.fc12

Dependency Installed:
Â  clusterlib.x86_64 0:3.0.5-2.fc12 Â  dlm-pcmk.x86_64 0:3.0.5-2.fc12 
Â  openaislib.x86_64 0:1.1.0-1.fc12 Â 

Complete!
[root@pcmk-1 x86_64]#


è¦å
-----

If this step fails, it is likely that your version/distribution does not
ship the "Pacemaker" versions of dlm_controld and/or gfs_controld.
Normally these files would be called dlm_controld.pcmk and
gfs_controld.pcmk and live in the /usr/sbin directory. If you cannot
locate an installation source for these files, you will need to install a
package called cman and reconfigure Corosync to use it as outlined in
éå½Â C, Using CMAN for Cluster Membership and Quorum. When using CMAN,
you can skip ç¬¬Â 8.3Â è âæ´âåâ Pacemaker-GFS2â where
dlm-clone and gfs-clone are created, and proceed directly to
ç¬¬Â 8.4Â è âåâå»ºâä¸âä¸ªâ GFS2
æâä»¶âç³»âç»ââ.


8.3.Â æ´âåâ Pacemaker-GFS2
---------------------------------

8.3.1. æ·»âå â DLM æâå¡â

8.3.2. æ·»âå â GFS2 æâå¡â

GFS2è¦âæ±âè¿âè¡âä¸¤âä¸ªâæâå¡âï¼é¦âåâæ¯âç¨âæ·âç©ºâé´âè®¿âé®âåâæ ¸âçâåâå¸âå¼âéâç®¡âçâ(DLM)çâæ¥âå£âãâ
DLMæ¯âç¨âæ¥âç»âç¹âåªâä¸ªâèâç¹âå¯âä»¥âå¤âçâæâä¸ªâç¹âå®âçâæâä»¶âï¼å¹¶âä¸âä¸âPacemakeréâæâæ¥âå¾âå°âèâç¹âä¹âé´âçâå³âç³»â[14]åâéâç¦»âè½âåâãâ
å¦âå¤âä¸âä¸ªâæâå¡âæ¯âGFS2èªâèº«âçâæ§âå¶âè¿âç¨âï¼ä¹âæ¯âä¸âPacemakeréâæâæ¥âå¾âå°âèâç¹âä¹âé´âçâå³âç³»âãâ


8.3.1.Â æ·»âå â DLM æâå¡â

DLMæ§âå¶âè¿âç¨âéâè¦âå¨âæâæâå¯âç¨âçâéâç¾¤âèâç¹âä¸âé¢âè¿âè¡âï¼æâä»¥âæâä»¬âç¨âshelläº¤âäºâæ¨¡âå¼âæ¥âæ·»âå âä¸âä¸ªâclonedç±»âåâçâèµâæºâãâ

[root@pcmk-1 ~]# crmcrm(live)# cib new stack-glueINFO: stack-glue shadow CIB created
crm(stack-glue)# configure primitive dlm ocf:pacemaker:controld op monitor interval=120scrm(stack-glue)# configure clone dlm-clone dlm meta interleave=truecrm(stack-glue)# configure show xmlcrm(stack-glue)# configure shownode pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="ext4"
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"primitive dlm ocf:pacemaker:controld \ op monitor interval="120s"ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"clone dlm-clone dlm \ meta interleave="true"location prefer-pcmk-1 WebSite 50: pcmk-1
colocation WebSite-with-WebFS inf: WebSite WebFS
colocation fs_on_drbd inf: WebFS WebDataClone:Master
colocation website-with-ip inf: WebSite ClusterIP
order WebFS-after-WebData inf: WebDataClone:promote WebFS:start
order WebSite-after-WebFS inf: WebFS WebSite
order apache-after-ip inf: ClusterIP WebSite
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â


æ³¨æ
------

TODO: Explain the meaning of the interleave option
çâçâéâç½®âæâä»¶âæâæ²¡âæâéâè¯¯âï¼ç¶âåâéâåºâshellçâçâéâç¾¤âçâåâåºâãâ

crm(stack-glue)# cib commit stack-glueINFO: commited 'stack-glue' shadow CIB to the cluster
crm(stack-glue)# quitbye
[root@pcmk-1 ~]# crm_mon============
Last updated: Thu Sep Â 3 20:49:54 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
5 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

WebSite (ocf::heartbeat:apache): Â  Â  Â  Â Started pcmk-2
Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-1 ]
Â  Â  Â  Â  Slaves: [ pcmk-2 ]
ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-2Clone Set: dlm-clone Started: [ pcmk-2 pcmk-1 ]WebFS Â  (ocf::heartbeat:Filesystem): Â  Â Started pcmk-2


8.3.2.Â æ·»âå â GFS2 æâå¡â

ä¸âæ¦âDLMå¯âå¨âäºâï¼æâä»¬âå¯âä»¥âå âä¸âGFS2çâæ§âå¶âè¿âç¨âäºâãâ
ç¨âcrm
shellæ¥âåâå»ºâgfs-controlè¿âä¸ªâéâç¾¤âèµâæºâ:

[root@pcmk-1 ~]# crmcrm(live)# cib new gfs-glue --forceINFO: gfs-glue shadow CIB created
crm(gfs-glue)# configure primitive gfs-control ocf:pacemaker:controld params daemon=gfs_controld.pcmk args="-g 0" op monitor interval=120scrm(gfs-glue)# configure clone gfs-clone gfs-control meta interleave=true

ç°âå¨âç¡®âä¿âPacemakeråªâå¨âæâdlmæâå¡âè¿âè¡âçâèâç¹âä¸âé¢âå¯âå¨â
gfs-control æâå¡â

crm(gfs-glue)# configure colocation gfs-with-dlm INFINITY: gfs-clone dlm-clonecrm(gfs-glue)# configure order start-gfs-after-dlm mandatory: dlm-clone gfs-clone

çâçâéâç½®âæâä»¶âæâæ²¡âæâéâè¯¯âï¼ç¶âåâéâåºâshellçâçâéâç¾¤âçâåâåºâãâ

crm(gfs-glue)# configure shownode pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="ext4"
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
primitive dlm ocf:pacemaker:controld \
Â  Â  Â  Â  op monitor interval="120s"primitive gfs-control ocf:pacemaker:controld \ params daemon=ââgfs_controld.pcmkââ args=ââ-g 0ââ \ op monitor interval="120s"ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
clone dlm-clone dlm \
Â  Â  Â  Â  meta interleave="true"clone gfs-clone gfs-control \ meta interleave="true"location prefer-pcmk-1 WebSite 50: pcmk-1
colocation WebSite-with-WebFS inf: WebSite WebFS
colocation fs_on_drbd inf: WebFS WebDataClone:Mastercolocation gfs-with-dlm inf: gfs-clone dlm-clonecolocation website-with-ip inf: WebSite ClusterIP
order WebFS-after-WebData inf: WebDataClone:promote WebFS:start
order WebSite-after-WebFS inf: WebFS WebSite
order apache-after-ip inf: ClusterIP WebSiteorder start-gfs-after-dlm inf: dlm-clone gfs-cloneproperty $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â
crm(gfs-glue)# cib commit gfs-glueINFO: commited 'gfs-glue' shadow CIB to the cluster
crm(gfs-glue)# quitbye
[root@pcmk-1 ~]# crm_mon============
Last updated: Thu Sep Â 3 20:49:54 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
6 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

WebSite (ocf::heartbeat:apache): Â  Â  Â  Â Started pcmk-2
Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-1 ]
Â  Â  Â  Â  Slaves: [ pcmk-2 ]
ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-2
Clone Set: dlm-clone
Â  Â  Â  Â  Started: [ pcmk-2 pcmk-1 ]Clone Set: gfs-clone Started: [ pcmk-2 pcmk-1 ]WebFS Â  (ocf::heartbeat:Filesystem): Â  Â Started pcmk-1


8.4.Â åâå»ºâä¸âä¸ªâ GFS2 æâä»¶âç³»âç»â
------------------------------------------------------------

8.4.1. åâå¤âå·¥âä½â

8.4.2. åâå»ºâå¹¶âè¿âç§»âæ°âæ®âå°â GFS2 åâåºâ


8.4.1.Â åâå¤âå·¥âä½â

å¨âæâä»¬âå¯¹âä¸âä¸ªâå·²âåâå¨âçâåâåºâåâä»»âä½âæâä½âä¹âåâï¼æâä»¬âè¦âç¡®âä¿âå®âæ²¡âæâè¢«âæâè½½âãâæâä»¬âåâè¯âéâç¾¤âåâæ¢âWebFSè¿âä¸ªâèµâæºâæ¥âç¡®âä¿âè¿âä¸âç¹âãâè¿âå¯âä»¥âç¡®âä¿âå¶âä»âä½¿âç¨âWebFSçâèµâæºâä¼âæ£âç¡®âçâä¾âæ¬¡âå³âéâãâ

[root@pcmk-1 ~]# crm_resource --resource WebFS --set-parameter target-role --meta --parameter-value Stopped[root@pcmk-1 ~]# crm_mon============
Last updated: Thu Sep Â 3 15:18:06 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
6 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-1 ]
Â  Â  Â  Â  Slaves: [ pcmk-2 ]
ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr):Â  Â  Â  Â  Started pcmk-1
Clone Set: dlm-clone
Â  Â  Â  Â  Started: [ pcmk-2 pcmk-1 ]
Clone Set: gfs-clone
Â  Â  Â  Â  Started: [ pcmk-2 pcmk-1 ]


æ³¨æ
------

æ³¨âæâ Apache and WebFS
ä¸¤âèâé½âå·²âç»âåâæ¢âäºâãâ


8.4.2.Â åâå»ºâå¹¶âè¿âç§»âæ°âæ®âå°â GFS2
åâåºâ

ç°âå¨âéâç¾¤âçâåºâå±âåâéâæâé¨âåâé½âæ£âå¸¸âè¿âè¡âï¼æâä»¬âç°âå¨âåâå»ºâä¸âä¸ªâGFS2åâåºâ


è¦å
-----

è¿âä¸ªâæâä½âä¼âæ¸âé¤âDRBDåâåºâä¸âé¢âçâæâæâæ°âæ®âï¼è¯·âå¤âä»½âéâè¦âçâæ°âæ®âãâ
æâä»¬âè¦âä¸ºâGFS2åâåºâæâå®âä¸âç³»âåâéâå âçâåâæ°âãâ
é¦âåâæâä»¬âè¦âç¨â
-péâé¡¹âæ¥âæâå®âæâä»¬âç¨âçâæ¯âåâæ ¸âçâDLMï¼ç¶âåâæâä»¬âç¨â-jæ¥âè¡¨âç¤ºâæâä»¬âä¸ºâä¸¤âä¸ªâæ¥âå¿âä¿âçâè¶³âå¤âçâç©ºâé´â(æ¯âä¸ªâæâä½âæâä»¶âç³»âç»âçâèâç¹âåâä¸âä¸ªâ)ãâ
æâåâï¼æâä»¬âç¨â-tæ¥âæâå®âlock
tableçâåâç§°âãâè¿âä¸ªâåâæ®µâçâæ ¼âå¼âæ¯â
clustername:fsname(éâç¾¤âåâç§°â:æâä»¶âç³»âç»âåâç§°â)ãâfsnameçâè¯âï¼æâä»¬âåªâè¦âç¨âä¸âä¸ªâå¯âä¸âçâå¹¶âä¸âè½âæâè¿°âæâä»¬âè¿âä¸ªâéâç¾¤âçâåâç§°âå°±âå¥½âäºâï¼æâä»¬âç¨âé»âè®¤âçâpcmkãâ
å¦âæâè¦âæ´âæ¹âéâç¾¤âçâåâç§°âï¼æ¾âå°âåâå«âname:pacemakerçâéâç½®âæâä»¶âåºâåâï¼ç¶âåâæ·»âå âå¦âä¸âæâç¤ºâçâéâé¡¹âå³âå¯âãâ
clustername: myname
å¨âæ¯âä¸ªâèâç¹âé½âæ§âè¡âä»¥âä¸âå½âä»¤âãâ

mkfs.gfs2 -p lock_dlm -j 2 -t pcmk:web /dev/drbd1
[root@pcmk-1 ~]# mkfs.gfs2 -t pcmk:web -p lock_dlm -j 2 /dev/vdb This will destroy any data on /dev/vdb.
It appears to contain: data

Are you sure you want to proceed? [y/n] y

Device: Â  Â  Â  Â  Â  Â  Â  Â  Â  Â /dev/vdb
Blocksize: Â  Â  Â  Â  Â  Â  Â  Â  4096
Device Size Â  Â  Â  Â  Â  Â  Â  Â 1.00 GB (131072 blocks)
Filesystem Size: Â  Â  Â  Â  Â  1.00 GB (131070 blocks)
Journals: Â  Â  Â  Â  Â  Â  Â  Â  Â 2
Resource Groups: Â  Â  Â  Â  Â  2
Locking Protocol: Â  Â  Â  Â  Â "lock_dlm"
Lock Table: Â  Â  Â  Â  Â  Â  Â  Â "pcmk:web"
UUID: Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 6B776F46-177B-BAF8-2C2B-292C0E078613

[root@pcmk-1 ~]#

ç¶âåâåâè¿âç§»âæ°âæ®âå°âè¿âä¸ªâæ°âçâæâä»¶âç³»âç»âãâç°âå¨âæâä»¬âåâå»ºâä¸âä¸ªâè·âä¸âæ¬¡âä¸âä¸âæ ·âçâä¸»âé¡µâãâ

[root@pcmk-1 ~]# mount /dev/drbd1 /mnt/[root@pcmk-1 ~]# cat <<-END >/mnt/index.html<html>
<body>My Test Site - GFS2</body>
</html>
END
[root@pcmk-1 ~]# umount /dev/drbd1[root@pcmk-1 ~]# drbdadmÂ verifyÂ wwwdata[root@pcmk-1 ~]#


8.5.Â 8.5. éâæ°âä¸ºâéâç¾¤âéâç½®âGFS2
---------------------------------------------------------

[root@pcmk-1 ~]# crmcrm(live)# cib new GFS2INFO: GFS2 shadow CIB created
crm(GFS2)# configure delete WebFScrm(GFS2)# configure primitive WebFS ocf:heartbeat:Filesystem params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype=ââgfs2ââ

ç°âå¨âæâä»¬âéâæ°âåâå»ºâè¿âä¸ªâèµâæºâï¼
æâä»¬âä¹âè¦âéâå»ºâè·âè¿âä¸ªâèµâæºâç¸âå³âçâçº¦âæâæ¡âä»¶âï¼å âä¸ºâshellä¼âèªâå¨âå âé¤âè·âWebFSç¸âå³âçâçº¦âæâæ¡âä»¶âãâ

crm(GFS2)# configure colocation WebSite-with-WebFS inf: WebSite WebFScrm(GFS2)# configure colocation fs_on_drbd inf: WebFS WebDataClone:Mastercrm(GFS2)# configure order WebFS-after-WebData inf: WebDataClone:promote WebFS:startcrm(GFS2)# configure order WebSite-after-WebFS inf: WebFS WebSitecrm(GFS2)# configure colocation WebFS-with-gfs-control INFINITY: WebFS gfs-clonecrm(GFS2)# configure order start-WebFS-after-gfs-control mandatory: gfs-clone WebFScrm(GFS2)# configure shownode pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"primitive WebFS ocf:heartbeat:Filesystem \ params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype=ââgfs2ââprimitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" \
Â  Â  Â  Â  op monitor interval="30s"
primitive dlm ocf:pacemaker:controld \
Â  Â  Â  Â  op monitor interval="120s"
primitive gfs-control ocf:pacemaker:controld \
Â  Â params daemon=âgfs_controld.pcmkâ args=â-g 0â \
Â  Â  Â  Â  op monitor interval="120s"
ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
clone dlm-clone dlm \
Â  Â  Â  Â  meta interleave="true"
clone gfs-clone gfs-control \
Â  Â  Â  Â  meta interleave="true"
colocation WebFS-with-gfs-control inf: WebFS gfs-clone
colocation WebSite-with-WebFS inf: WebSite WebFS
colocation fs_on_drbd inf: WebFS WebDataClone:Master
colocation gfs-with-dlm inf: gfs-clone dlm-clone
colocation website-with-ip inf: WebSite ClusterIP
order WebFS-after-WebData inf: WebDataClone:promote WebFS:start
order WebSite-after-WebFS inf: WebFS WebSite
order apache-after-ip inf: ClusterIP WebSite
order start-WebFS-after-gfs-control inf: gfs-clone WebFS
order start-gfs-after-dlm inf: dlm-clone gfs-clone
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â

çâçâéâç½®âæâä»¶âæâæ²¡âæâéâè¯¯âï¼ç¶âåâéâåºâshellçâçâéâç¾¤âçâåâåºâãâ

crm(GFS2)# cib commit GFS2INFO: commited 'GFS2' shadow CIB to the cluster
crm(GFS2)# quitbye
[root@pcmk-1 ~]# crm_mon============
Last updated: Thu Sep Â 3 20:49:54 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
6 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

WebSite (ocf::heartbeat:apache): Â  Â  Â  Â Started pcmk-2
Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-1 ]
Â  Â  Â  Â  Slaves: [ pcmk-2 ]
ClusterIPÂ  Â  Â  Â  (ocf::heartbeat:IPaddr): Â  Â  Â  Â Started pcmk-2
Clone Set: dlm-clone
Â  Â  Â  Â  Started: [ pcmk-2 pcmk-1 ]
Clone Set: gfs-clone
Â  Â  Â  Â  Started: [ pcmk-2 pcmk-1 ]WebFS (ocf::heartbeat:Filesystem): Started pcmk-1


8.6.Â éâæ°âéâç½®â Pacemaker ä¸ºâ Active/Active
-------------------------------------------------------------

8.6.1. æ¢âå¤âæµâè¯â

åºâæ¬âä¸âæâæâçâäºâæâé½âå·²âç»âåâå¤âå°±âç»ªâäºâãâæâæ°âçâDRBDæ¯âæ¯âæâ
Primary/Primary(ä¸»â/ä¸»â)æ¨¡âå¼âçâï¼å¹¶âä¸âæâä»¬âçâæâä»¶âç³»âç»âçâæ¯âéâå¯¹âéâç¾¤âçâãâæâæâæâä»¬âè¦âåâçâäºâæâå°±âæ¯âéâæ°âéâç½®âæâä»¬âçâéâç¾¤âæ¥âä½¿âç¨âå®âä»¬â(çâåâè¿âåâè½â)ãâ
è¿âæ¬¡âæâä½âä¼âæ¹âå¾âå¤âä¸âè¥¿âï¼æâä»¥âæâä»¬âåâæ¬¡âä½¿âç¨âäº¤âäºâæ¨¡âå¼â

[root@pcmk-1 ~]# crm[root@pcmk-1 ~]# cib new active

å¦âæâæâä»¬âä¸âè½âè®¿âé®âè¿âäºâæâå¡âï¼é£âåâæâ
Active/Activeæ¯âæ²¡âæâå¿âè¦âçâï¼æâä»¥âæâä»¬âè¦âåâcloneè¿âä¸ªâIPå°âåâï¼åâéâçâIPaddr2èµâæºâç¨âçâæ¯âiptablesè§âåâæ¥âä¿âè¯âæ¯âä¸ªâè¯·âæ±âé½âåªâç±âä¸âä¸ªâèâç¹âæ¥âå¤âçâãâéâä»¶âçâmetaéâé¡¹âåâè¯âéâç¾¤âæâä»¬âè¦âåâéâå¤âå°âä¸ªâå®âä¾â(æ¯âä¸ªâèâç¹âä¸âä¸ªâ"è¯·âæ±âæ¡¶â")ãâå¹¶âä¸âå¦âæâå¶âä»âèâç¹âæâäºâï¼å©âä¸âçâèâç¹âå¯âä»¥âå¤âçâæâæâçâè¯·âæ±âãâå¦âåâè¿âäºâè¯·âæ±âé½âä¼âè¢«âä¸¢âå¼âãâ

[root@pcmk-1 ~]# configure clone WebIP ClusterIP Â \Â  Â  Â  Â  meta globally-unique=ââtrueââ clone-max=ââ2ââ clone-node-max=ââ2ââ

ç°âå¨âæâä»¬âè¦âåâè¯âéâç¾¤âå¦âä½âå³âå®âè¯·âæ±âæâæ ·âåâéâç»âèâç¹âãâæâä»¬âè¦âè®¾âç½®â
clusterip_hashè¿âä¸ªâåâæ°âæ¥âå®âç°âå®âãâ
æâå¼âClusterIPçâéâç½®â

[root@pcmk-1 ~]# configure edit Â ClusterIP

å¨âåâæ°âè¡âæ·»âå âä»¥âä¸âåâå®¹â:

clusterip_hash="sourceip"

å®âæ´âçâå®âä¹âå°±âåâä¸âé¢âä¸âæ ·â:

primitive ClusterIP ocf:heartbeat:IPaddr2 \ 
Â  Â  Â  Â  params ip="192.168.122.101" cidr_netmask="32" clusterip_hash="sourceip" \
Â  Â  Â  Â  op monitor interval="30s"

ä»¥âä¸âæ¯âå®âæ´âçâéâç½®â

[root@pcmk-1 ~]# crm crm(live)# cib new activeINFO: active shadow CIB created
crm(active)# configure clone WebIP ClusterIP Â \Â  Â  Â  Â  meta globally-unique=âtrueâ clone-max=â2â clone-node-max=â2â
crm(active)# configure shownode pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype=âgfs2â
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip=â192.168.122.101â cidr_netmask=â32â clusterip_hash=âsourceipâ \
Â  Â  Â  Â  op monitor interval="30s"
primitive dlm ocf:pacemaker:controld \
Â  Â  Â  Â  op monitor interval="120s"
primitive gfs-control ocf:pacemaker:controld \
Â  Â params daemon=âgfs_controld.pcmkâ args=â-g 0â \
Â  Â  Â  Â  op monitor interval="120s"
ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"clone WebIP ClusterIP \ meta globally-unique=ââtrueââ clone-max=ââ2ââ clone-node-max=ââ2ââclone dlm-clone dlm \
Â  Â  Â  Â  meta interleave="true"
clone gfs-clone gfs-control \
Â  Â  Â  Â  meta interleave="true"
colocation WebFS-with-gfs-control inf: WebFS gfs-clone
colocation WebSite-with-WebFS inf: WebSite WebFS
colocation fs_on_drbd inf: WebFS WebDataClone:Master
colocation gfs-with-dlm inf: gfs-clone dlm-clonecolocation website-with-ip inf: WebSite WebIPorder WebFS-after-WebData inf: WebDataClone:promote WebFS:start
order WebSite-after-WebFS inf: WebFS WebSiteorder apache-after-ip inf: WebIP WebSiteorder start-WebFS-after-gfs-control inf: gfs-clone WebFS
order start-gfs-after-dlm inf: dlm-clone gfs-clone
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â

è¯·âæ³¨âæâæâæâè·âClusterIPç¸âå³âçâéâå¶âé½âå·²âç»âè¢«âæ´âæ°âå°âä¸âWebIPç¸âå³âï¼è¿âæ¯âä½¿âç¨âcrm
shellçâå¦âä¸âä¸ªâå¥½âå¤âãâ
ç¶âåâæâä»¬âè¦âæâæâä»¶âç³»âç»âåâapacheèµâæºâåâæâclonesãâåâæ ·âçâ
crm shellä¼âèªâå¨âæ´âæ°âç¸âå³âçº¦âæâãâ

crm(active)# configure clone WebFSClone WebFScrm(active)# configure clone WebSiteClone WebSite

æâåâè¦âåâè¯âéâç¾¤âç°âå¨âåâè®¸âæâä¸¤âä¸ªâèâç¹âé½âæâåâä¸ºâ
Primary(æ¢âå¥âè¯âè¯´â Master).

crm(active)# configure edit WebDataClone

æâ master-max æ¹âä¸ºâ 2

crm(active)# configure shownode pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype=âgfs2â
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip=â192.168.122.101â cidr_netmask=â32â clusterip_hash=âsourceipâ \
Â  Â  Â  Â  op monitor interval="30s"
primitive dlm ocf:pacemaker:controld \
Â  Â  Â  Â  op monitor interval="120s"
primitive gfs-control ocf:pacemaker:controld \
Â  Â params daemon=âgfs_controld.pcmkâ args=â-g 0â \
Â  Â  Â  Â  op monitor interval="120s"
ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="2" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"clone WebFSClone WebFSclone WebIP ClusterIP Â \
Â  Â  Â  Â  meta globally-unique=âtrueâ clone-max=â2â clone-node-max=â2âclone WebSiteClone WebSiteclone dlm-clone dlm \
Â  Â  Â  Â  meta interleave="true"
clone gfs-clone gfs-control \
Â  Â  Â  Â  meta interleave="true"colocation WebFS-with-gfs-control inf: WebFSClone gfs-clonecolocation WebSite-with-WebFS inf: WebSiteClone WebFSClonecolocation fs_on_drbd inf: WebFSClone WebDataClone:Mastercolocation gfs-with-dlm inf: gfs-clone dlm-clonecolocation website-with-ip inf: WebSiteClone WebIPorder WebFS-after-WebData inf: WebDataClone:promote WebFSClone:startorder WebSite-after-WebFS inf: WebFSClone WebSiteCloneorder apache-after-ip inf: WebIP WebSiteCloneorder start-WebFS-after-gfs-control inf: gfs-clone WebFSClone
order start-gfs-after-dlm inf: dlm-clone gfs-clone
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="false" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â

çâçâéâç½®âæâä»¶âæâæ²¡âæâéâè¯¯âï¼ç¶âåâéâåºâshellçâçâéâç¾¤âçâåâåºâãâ

crm(active)# cib commit activeINFO: commited 'active' shadow CIB to the cluster
crm(active)# quitbye
[root@pcmk-1 ~]# crm_mon============
Last updated: Thu Sep Â 3 21:37:27 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
6 Resources configured.
============

Online: [ pcmk-1 pcmk-2 ]

Master/Slave Set: WebDataClone
Â  Â  Â  Â  Masters: [ pcmk-1 pcmk-2 ]
Clone Set: dlm-clone
Â  Â  Â  Â  Started: [ pcmk-2 pcmk-1 ]
Clone Set: gfs-clone
Â  Â  Â  Â  Started: [ pcmk-2 pcmk-1 ]Clone Set: WebIP Started: [ pcmk-1 pcmk-2 ]Clone Set: WebFSClone Started: [ pcmk-1 pcmk-2 ]Clone Set: WebSiteClone Started: [ pcmk-1 pcmk-2 ]


8.6.1.Â æ¢âå¤âæµâè¯â


æ³¨æ
------

TODO: Put one node into standby to demonstrate failover

------------------------------------------------------------------------

[14] The list of nodes the cluster considers to be available


ç¬¬Â 9Â ç« Â éâç½®â STONITH
---------------------------------

9.1. ä¸ºâä»âä¹âéâè¦â STONITH

9.2. ä½ âè¯¥âç¨âä»âä¹âæ ·âçâSTONITHè®¾âå¤âãâ

9.3. éâç½®âSTONITH

      9.3.1. ä¾âåâ


9.1.Â ä¸ºâä»âä¹âéâè¦â STONITH
--------------------------------------------

STONITH æ¯âçâå¶âä»âèâç¹âçâå¤´âï¼
Shoot-The-Other-Node-In-The-Headï¼çâç¼©âåâï¼å®âè½âä¿âæ¤âä½ âçâæ°âæ®âä¸âè¢«âä¸âæ£âå¸¸âçâèâç¹âç ´âåâæâæ¯âå¹¶âåâåâå¥âãâ
å âä¸ºâå¦âæâä¸âä¸ªâèâç¹âæ²¡âæâç¸âåºâï¼ä½âå¹¶âä¸âä»£âè¡¨âå®âæ²¡âæâå¨âæâä½âä½ âçâæ°âæ®âï¼100%ä¿âè¯âæ°âæ®âå®âå¨âçâåâæ³âå°±âæ¯âå¨âåâè®¸âå¦âå¤âä¸âä¸ªâèâç¹âæâä½âæ°âæ®âä¹âåâï¼ä½¿âç¨âSTONITHæ¥âä¿âè¯âèâç¹âçâçâä¸âçº¿âäºâãâ
STONITHå¦âå¤âä¸âä¸ªâç¨âåºâæ¯âå¨âå½âéâç¾¤âæâå¡âæ âæ³âåâæ¢âçâæ¶âåâãâè¿âä¸ªâæ¶âåâï¼éâç¾¤âå¯âä»¥âç¨âSTONITHæ¥âå¼ºâå¶âä½¿âèâç¹âä¸âçº¿âï¼ä»âèâå¯âä»¥âå®âå¨âçâå¾âå¨âå¶âä»âå°âæ¹âå¯âå¨âæâå¡âãâ


9.2.Â ä½ âè¯¥âç¨âä»âä¹âæ ·âçâSTONITHè®¾âå¤âãâ
-------------------------------------------------------------------------

éâè¦âçâä¸âç¹âæ¯âSTONITHè®¾âå¤âå¯âä»¥âè®©âéâç¾¤âåºâåâèâç¹âæâéâåâç½âç»âæâéâãâ
äººâä»¬âå¸¸âå¸¸âç¯âå¾âä¸âä¸ªâéâè¯¯âå°±âæ¯âéâæ©âè¿âç¨âçµâæºâå¼âå³âä½âä¸ºâSTONITHè®¾âå¤â(æ¯âå¦âè®¸âå¤âä¸»âæ¿âèªâå¸¦âçâIPMIæ§âå¶âå¨â)
ãâå¨âé£âç§âæâåµâä¸âï¼éâç¾¤âä¸âè½âåâè¾¨âèâç¹âæ¯âçâæ£âçâä¸âçº¿âäºâï¼è¿âæ¯âç½âç»âæ âæ³âè¿âéâäºâãâ
åâæ ·âå°âï¼
ä»»âä½âä¾âé âå¯âç¨âèâç¹âçâè®¾âå¤âï¼æ¯âå¦âæµâè¯âç¨âçâåºâäºâSSHçâââè®¾âå¤âââï¼é½âæ¯âä¸âéâå½âçâãâ


9.3.Â éâç½®âSTONITH
-------------------------

9.3.1. ä¾âåâ

  1.  æ¾âå°âæ£âç¡®âçâSTONITHé©±âå¨â: stonith -L

  2.  å âä¸ºâè®¾âå¤âçâä¸âåâ,
    éâç½®âçâåâæ°âä¹âä¸âä¸âæ ·âãâ
    æ³âçâè®¾âå¤âæâéâè®¾âç½®âçâåâæ°âï¼å¯âä»¥âç¨â:
    stonith -t {type} -n

å¸âæâå¼âåâèâéâæ©âäºâåâéâçâåâç§°âï¼å¦âæâä¸âæ¯âè¿âæ ·âï¼ä½ âå¯âä»¥âå¨âæ´»âå¨âçâæºâå¨âä¸âé¢âæ§âè¡âä»¥âä¸âå½âä»¤âæ¥âè·âå¾âæ´âå¤âä¿¡âæ¯âãâ

lrmadmin -M stonith {type} pacemaker

è¾âåºâåºâè¯¥âæ¯âXMLæ ¼âå¼âçâæâæ¬âæâä»¶âï¼å®âåâå«âäºâæ´âè¯¦âç»âçâæâè¿°â

  1.  åâå»ºâstonith.xmlæâä»¶â
    åâå«âäºâä¸âä¸ªâåâå§âçâæºâï¼å®âå®âä¹âäºâèµâstonithç±»âä¸âé¢âçâæâä¸ªâtypeåâè¿âä¸ªâtypeæâéâçâåâæ°âãâ

  2. 
    å¦âæâè¿âä¸ªâè®¾âå¤âå¯âä»¥âå»âæâå¤âä¸ªâè®¾âå¤âå¹¶âä¸âæ¯âæâä»âå¤âä¸ªâèâç¹âè¿âæ¥âè¿âæ¥âï¼é£âæâä»¬âä»âè¿âä¸ªâåâå§âèµâæºâåâå»ºâä¸âä¸ªâåâéâãâ

  3. 
    ä½¿âç¨âcibadminæ¥âæ´âæ°âCIBéâç½®âæâä»¶â:cibadmin
    -C -o resources --xml-file stonith.xml


9.3.1.Â ä¾âåâ

åâè®¾âæâä»¬âæâä¸âä¸ªâ
åâå«âä¸¤âä¸ªâèâç¹âçâIBM
BladeCenterï¼æ§âå¶âçâé¢âçâIPæ¯â192.168.122.31,ç¶âåâæâä»¬âéâæ©â
external/ibmrsaä½âä¸ºâé©±âå¨âï¼ç¶âåâéâç½®âä¸âé¢âåâè¡¨âå½âä¸âçâåâæ°âãâ

stonith -t external/ibmrsa -n
[root@pcmk-1 ~]# stonith -t external/ibmrsa -nhostname Â ipaddr Â userid Â passwd Â type

åâè®¾âæâä»¬âç¥âéâç®¡âçâçâé¢âçâç¨âæ·âåâåâå¯âç âï¼æâä»¬âè¦âåâå»ºâä¸âä¸ªâSTONITHçâèµâæºâ:

[root@pcmk-1 ~]# crm crm(live)# cib new stonithINFO: stonith shadow CIB created
crm(stonith)# configure primitive rsa-fencing stonith::external/ibmrsa \Â  Â  Â  Â  params hostname=ââpcmk-1 pcmk-2" ipaddr=192.168.122.31 userid=mgmt passwd=abc123 type=ibm \Â  Â  Â  Â  op monitor interval="60s"crm(stonith)# configure clone Fencing rsa-fencing

æâåâï¼æâä»¬âè¦âéâæ°âæâå¼âä¹âåâç¦âç¨âçâSTONITH:

crm(stonith)# configure property stonith-enabled="true"crm(stonith)# configure shownode pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype=âgfs2â
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip=â192.168.122.101â cidr_netmask=â32â clusterip_hash=âsourceipâ \
Â  Â  Â  Â  op monitor interval="30s"
primitive dlm ocf:pacemaker:controld \
Â  Â  Â  Â  op monitor interval="120s"
primitive gfs-control ocf:pacemaker:controld \
Â  Â params daemon=âgfs_controld.pcmkâ args=â-g 0â \
Â  Â  Â  Â  op monitor interval="120s"primitive rsa-fencing stonith::external/ibmrsa \ params hostname=ââpcmk-1 pcmk-2" ipaddr=192.168.122.31 userid=mgmt passwd=abc123 type=ibm \ op monitor interval="60s"ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="2" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"clone Fencing rsa-fencing clone WebFSClone WebFS
clone WebIP ClusterIP Â \
Â  Â  Â  Â  meta globally-unique=âtrueâ clone-max=â2â clone-node-max=â2â
clone WebSiteClone WebSite
clone dlm-clone dlm \
Â  Â  Â  Â  meta interleave="true"
clone gfs-clone gfs-control \
Â  Â  Â  Â  meta interleave="true"
colocation WebFS-with-gfs-control inf: WebFSClone gfs-clone
colocation WebSite-with-WebFS inf: WebSiteClone WebFSClone
colocation fs_on_drbd inf: WebFSClone WebDataClone:Master
colocation gfs-with-dlm inf: gfs-clone dlm-clone
colocation website-with-ip inf: WebSiteClone WebIP
order WebFS-after-WebData inf: WebDataClone:promote WebFSClone:start
order WebSite-after-WebFS inf: WebFSClone WebSiteClone
order apache-after-ip inf: WebIP WebSiteClone
order start-WebFS-after-gfs-control inf: gfs-clone WebFSClone
order start-gfs-after-dlm inf: dlm-clone gfs-clone
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled="true" \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â



éâç½®âæ¼âè¦âéâè¿°â
====================================


A.1.Â æâç»âçâéâç¾¤âéâç½®âæâä»¶â
------------------------------------------------------------

[root@pcmk-1 ~]# crm configure show
node pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype=âgfs2â
primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip=â192.168.122.101â cidr_netmask=â32â clusterip_hash=âsourceipâ \
Â  Â  Â  Â  op monitor interval="30s"
primitive dlm ocf:pacemaker:controld \
Â  Â  Â  Â  op monitor interval="120s"
primitive gfs-control ocf:pacemaker:controld \
Â  Â params daemon=âgfs_controld.pcmkâ args=â-g 0â \
Â  Â  Â  Â  op monitor interval="120s"
primitive rsa-fencing stonith::external/ibmrsa \
Â  Â  Â  Â  params hostname=âpcmk-1 pcmk-2" ipaddr=192.168.122.31 userid=mgmt passwd=abc123 type=ibm \
Â  Â  Â  Â  op monitor interval="60s"
ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="2" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
clone Fencing rsa-fencing 
clone WebFSClone WebFS
clone WebIP ClusterIP Â \
Â  Â  Â  Â  meta globally-unique=âtrueâ clone-max=â2â clone-node-max=â2â
clone WebSiteClone WebSite
clone dlm-clone dlm \
Â  Â  Â  Â  meta interleave="true"
clone gfs-clone gfs-control \
Â  Â  Â  Â  meta interleave="true"
colocation WebFS-with-gfs-control inf: WebFSClone gfs-clone
colocation WebSite-with-WebFS inf: WebSiteClone WebFSClone
colocation fs_on_drbd inf: WebFSClone WebDataClone:Master
colocation gfs-with-dlm inf: gfs-clone dlm-clone
colocation website-with-ip inf: WebSiteClone WebIP
order WebFS-after-WebData inf: WebDataClone:promote WebFSClone:start
order WebSite-after-WebFS inf: WebFSClone WebSiteClone
order apache-after-ip inf: WebIP WebSiteClone
order start-WebFS-after-gfs-control inf: gfs-clone WebFSClone
order start-gfs-after-dlm inf: dlm-clone gfs-clone
property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled=âtrueâ \
Â  Â  Â  Â  no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â


A.2.Â èâç¹âåâè¡¨â
------------------------------

è¿âä¸ªâåâè¡¨âä¸âçâéâç¾¤âèâç¹âæ¯âéâç¾¤âèªâå¨âæ·»âå âçâãâ

node pcmk-1
node pcmk-2


A.3.Â éâç¾¤âéâé¡¹â
------------------------------

è¿âæ¯âéâç¾¤âèªâå¨âåâå¨âéâç¾¤âä¿¡âæ¯âçâå°âæ¹â

  1.  dc-version -
    DCä½¿âç¨âçâPacemakerçâçâæ¬â(åâæ¬âæºâä»£âç âçâhash)

  2.  éâç¾¤â-åºâå±â -
    éâç¾¤âä½¿âç¨âçâåºâå±âè½¯âä»¶â (heartbeat or
    openais/corosync)

  3.  expected-quorum-votes -
    é¢âæâçâéâç¾¤âæâå¤§âæâåâæ°â

ä»¥âåâç®¡âçâåâè®¾âç½®âéâç¾¤âæâä½âçâæ¹âæ³âéâé¡¹â

  1.  stonith-enabled=true - ä½¿âç¨âSTONITH

  2.  no-quorum-policy=ignore -
    å¿½âç¥âè¾¾âä¸âå°âæ³âå®âäººâæ°âçâæâåµâï¼ç»§âç»âè¿âè¡âèµâæºâ

property $id="cib-bootstrap-options" \
Â  Â  Â  Â  dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
Â  Â  Â  Â  cluster-infrastructure="openais" \
Â  Â  Â  Â  expected-quorum-votes=â2â \
Â  Â  Â  Â  stonith-enabled=âtrueâ \
Â  Â  Â  Â  no-quorum-policy="ignore"


A.4.Â èµâæºâ
------------------

A.4.1. é»âè®¤âéâé¡¹â

A.4.2. éâç¦»â

A.4.3. æâå¡âå°âåâ

A.4.4. åâå¸âå¼âéâæ§âå¶âå¨â

A.4.5. GFS æ§âå¶âå®âæ¤âè¿âç¨â

A.4.6. DRBD - å±âäº«âåâå¨â

A.4.7. éâç¾¤âæâä»¶âç³»âç»â

A.4.8. Apache


A.4.1.Â é»âè®¤âéâé¡¹â

è¿âéâæâä»¬âè®¾âç½®âæâæâèµâæºâå±âç¨âçâéâç¾¤âéâé¡¹â

  1.  resource-stickiness - èµâæºâç²âç¨ âå¼â

rsc_defaults $id="rsc-options" \
Â  Â  Â  Â  resource-stickiness=â100â


A.4.2.Â éâç¦»â


æ³¨æ
------

TODO: Add text here

primitive rsa-fencing stonith::external/ibmrsa \
Â  Â  Â  Â  params hostname=âpcmk-1 pcmk-2" ipaddr=192.168.122.31 userid=mgmt passwd=abc123 type=ibm \
Â  Â  Â  Â  op monitor interval="60s"
clone Fencing rsa-fencing


A.4.3.Â æâå¡âå°âåâ

ç¨âæ·âéâè¦âä¸âä¸ªâä¸âåâçâå°âåâæ¥âè®¿âé®âéâç¾¤âæâæâä¾âçâæâå¡âãâæ¤âå¤âï¼æâä»¬âcloneäºâå°âåâï¼ä»¥âä¾¿âå¨âä¸¤âä¸ªâèâç¹âä¸âé½âä½¿âç¨âè¿âä¸ªâIPãâä¸âä¸ªâiptablesè§âåâï¼resource
agentçâä¸âé¨âåâï¼æ¯âç¨âæ¥âç¡®âä¿âæ¯âä¸ªâè¯·âæ±âåªâè½âç±âä¸¤âä¸ªâèâç¹âä¸âçâæâä¸âä¸ªâå¤âçâãâè¿âäºâé¢âå¤âçâéâç¾¤âéâé¡¹âåâè¯âæâä»¬âæ³âè¦âä¸¤âä¸ªâcloneï¼æ¯âä¸ªâèâç¹âä¸âä¸ªâââè¯·âæ±âæ¡¶âââï¼å®âä¾âï¼å¦âæâä¸âä¸ªâèâç¹âå¤±âæâï¼é£âä¹âå©âä¸âçâèâç¹âå¤âçâè¿âä¸¤âä¸ªâè¯·âæ±âæ¡¶âãâ

primitive ClusterIP ocf:heartbeat:IPaddr2 \
Â  Â  Â  Â  params ip=â192.168.122.101â cidr_netmask=â32â clusterip_hash=âsourceipâ \
Â  Â  Â  Â  op monitor interval="30s"
clone WebIP ClusterIP Â 
Â  Â  Â  Â  meta globally-unique=âtrueâ clone-max=â2â clone-node-max=â2â


æ³¨æ
------

TODO: The RA should check for globally-unique=true when cloned


A.4.4.Â åâå¸âå¼âéâæ§âå¶âå¨â

åâGFS2éâç¾¤âæâä»¶âç³»âç»âéâè¦âä¸âä¸ªâéâç®¡âçâãâè¯¥âæâå¡âå¯âå¨âå®âæ¤âè¿âç¨âï¼æâä¾âäºâè®¿âé®âåâæ ¸âä¸âçâéâç®¡âçâå¨âçâç¨âæ·âç©ºâé´âåºâç¨âç¨âåºâï¼å¦âGFS2å®âæ¤âè¿âç¨âï¼ãâå âä¸ºâæâä»¬âéâè¦âå®âå¨âéâç¾¤âä¸âçâæâæâå¯âç¨âèâç¹âä¸âè¿âè¡âï¼æâä»¬âæâå®âcloneãâ

primitive dlm ocf:pacemaker:controld \
Â  Â  Â  Â  op monitor interval="120s"
clone dlm-clone dlm \
Â  Â  Â  Â  meta interleave="true


æ³¨æ
------

TODO: Confirm interleave is no longer needed


A.4.5.Â GFS æ§âå¶âå®âæ¤âè¿âç¨â

GFS2è¿âéâè¦âä¸âä¸ªâuser-spaceå°âkernelçâæ¡¥âæ¢âï¼æ¯âä¸ªâèâç¹âä¸âè¦âè¿âè¡âãâæâä»¥âå¨âè¿âéâæâä»¬âè¿âæâä¸âä¸ªâcloneï¼ä½âæ¯âè¿âä¸âæ¬¡âæâä»¬âè¿âå¿âé¡»âæâå®âå®âåªâè½âè¿âè¡âå¨âæâDLMçâæºâå¨âä¸âï¼colocation
çº¦âæâï¼ï¼å®âåªâè½âå¨âDLMåâå¯âå¨â
ï¼orderçº¦âæâï¼ãâæ¤âå¤âï¼gfs-control
cloneåºâè¯¥âåªâå³âç³»âä¸âå¶âéâå¯¹âçâDLMå®âä¾âï¼æâä»¥âæâä»¬âè¿âè¦âè®¾âç½®âinterleave
éâé¡¹â

primitive gfs-control ocf:pacemaker:controld \
Â  Â params daemon=âgfs_controld.pcmkâ args=â-g 0â \
Â  Â  Â  Â  op monitor interval="120s"
clone gfs-clone gfs-control \
Â  Â  Â  Â  meta interleave="true"
colocation gfs-with-dlm inf: gfs-clone dlm-clone
order start-gfs-after-dlm inf: dlm-clone gfs-clone


A.4.6.Â DRBD - å±âäº«âåâå¨â

å¨âè¿âéâï¼æâä»¬âå®âä¹âäºâDRBDæâæ¯âæâå¡âï¼å¹¶âæâå®âDRBDåºâè¯¥âç®¡âçâçâèµâæºâï¼ä»âdrbd.confï¼ãâæâä»¬âè®©âå®âä½âä¸ºâä¸»â/ä»âèµâæºâï¼å¹¶âä¸âä¸ºâäºâactive/activeï¼ç¨âè®¾âç½®âmaster-max=2æ¥âåâè®¸âä¸¤âèâé½âæâåâä¸ºâmasterãâæâä»¬âè¿âå¯âä»¥âè®¾âç½®âéâç¥âéâé¡¹âï¼è¿âæ ·âï¼å½âæ¶âéâç¾¤âçâèâç¹âçâç¶âæâåâçâæ¹âåâæ¶âï¼è¯¥âéâç¾¤âå°âåâè¯âDRBDçâagentãâ

primitive WebData ocf:linbit:drbd \
Â  Â  Â  Â  params drbd_resource="wwwdata" \
Â  Â  Â  Â  op monitor interval="60s"
ms WebDataClone WebData \
Â  Â  Â  Â  meta master-max="2" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"


A.4.7.Â éâç¾¤âæâä»¶âç³»âç»â

ç¾¤âéâæâä»¶âç³»âç»âå¯âç¡®âä¿âæâä»¶âè¯»âåâæ£âç¡®âãâæâä»¬âéâè¦âæâå®âæâä»¬âæ³âæâè½½âå¹¶âä½¿âç¨âGFS2çâåâè®¾âå¤âï¼ç±âDRBDæâä¾âï¼ãâè¿âåâæ¯âä¸âä¸ªâcloneï¼å âä¸ºâå®âçâç®âçâæ¯âå¨âä¸¤âä¸ªâèâç¹âä¸âé½âå¯âç¨âãâè¿âäºâé¢âå¤âçâéâå¶âç¡®âä¿âå®âåªâå¨âæâgfs-controlåâdrbd
å®âä¾âçâèâç¹âä¸âè¿âè¡âãâ

primitive WebFS ocf:heartbeat:Filesystem \
Â  Â  Â  Â  params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype=âgfs2â
clone WebFSClone WebFS
colocation WebFS-with-gfs-control inf: WebFSClone gfs-clone
colocation fs_on_drbd inf: WebFSClone WebDataClone:Master
order WebFS-after-WebData inf: WebDataClone:promote WebFSClone:start
order start-WebFS-after-gfs-control inf: gfs-clone WebFSClone


A.4.8.Â Apache

æâåâæâä»¬âæâäºâçâæ£âçâæâå¡âï¼Apacheï¼æâä»¬âåªâéâè¦âåâè¯âéâç¾¤âå¨âåªâéâå¯âä»¥âæ¾âå°âå®âçâä¸»âéâç½®âæâä»¶âï¼å¹¶âéâå¶âå¶âåªâå¨âæâè½½âäºâæâä»¶âç³»âç»âåâæâå¯âç¨âIPèâç¹âä¸âè¿âè¡â

primitive WebSite ocf:heartbeat:apache \
Â  Â  Â  Â  params configfile="/etc/httpd/conf/httpd.conf" \
Â  Â  Â  Â  op monitor interval="1min"
clone WebSiteClone WebSite
colocation WebSite-with-WebFS inf: WebSiteClone WebFSClone
colocation website-with-ip inf: WebSiteClone WebIP
order apache-after-ip inf: WebIP WebSiteClone
order WebSite-after-WebFS inf: WebFSClone WebSiteClone



Sample Corosync Configuration
=============================

        
# Please read the Corosync.conf.5 manual page
compatibility: whitetank

totem {
Â  Â  Â  Â  version: 2

Â  Â  Â  Â  # How long before declaring a token lost (ms)
Â  Â  Â  Â  token: Â  Â  Â  Â  Â 5000

Â  Â  Â  Â  # How many token retransmits before forming a new configuration
Â  Â  Â  Â  token_retransmits_before_loss_const: 10

Â  Â  Â  Â  # How long to wait for join messages in the membership protocol (ms)
Â  Â  Â  Â  join: Â  Â  Â  Â  Â  1000

Â  Â  Â  Â  # How long to wait for consensus to be achieved before starting a new
Â  Â  Â  Â  # round of membership configuration (ms)
Â  Â  Â  Â  consensus: Â  Â  Â 6000

Â  Â  Â  Â  # Turn off the virtual synchrony filter
Â  Â  Â  Â  vsftype: Â  Â  Â  Â none

Â  Â  Â  Â  # Number of messages that may be sent by one processor on receipt of the token
Â  Â  Â  Â  max_messages: Â  20

Â  Â  Â  Â  # Stagger sending the node join messages by 1..send_join ms
Â  Â  Â  Â  send_join: 45

Â  Â  Â  Â  # Limit generated nodeids to 31-bits (positive signed integers)
Â  Â  Â  Â  clear_node_high_bit: yes

Â  Â  Â  Â  # Disable encryption
Â  Â  Â  Â  secauth:Â  Â  Â  Â  off

Â  Â  Â  Â  # How many threads to use for encryption/decryption
Â  Â  Â  Â  threads: Â  Â  Â  Â  Â  0

Â  Â  Â  Â  # Optionally assign a fixed node id (integer)
Â  Â  Â  Â  # nodeid: Â  Â  Â  Â  1234

Â  Â  Â  Â  interface {
Â  Â  Â  Â  Â  Â  Â  Â  ringnumber: 0

Â  Â  Â  Â  Â  Â  Â  Â  # The following values need to be set based on your environment
Â  Â  Â  Â  Â  Â  Â  Â  bindnetaddr: 192.168.122.0
Â  Â  Â  Â  Â  Â  Â  Â  mcastaddr: 226.94.1.1
Â  Â  Â  Â  Â  Â  Â  Â  mcastport: 4000
Â  Â  Â  Â  }
}

logging {
Â  Â  Â  Â  debug: off
Â  Â  Â  Â  fileline: off
Â  Â  Â  Â  to_syslog: yes
Â  Â  Â  Â  to_stderr: off
Â  Â  Â  Â  syslog_facility: daemon
Â  Â  Â  Â  timestamp: on
}

amf {
Â  Â  Â  Â  mode: disabled
}
        

ä¾Â B.1.Â Sample Corosync.conf for a two-node cluster



Using CMAN for Cluster Membership and Quorum
============================================


C.1.Â Background
----------------

CMAN v3 is a Corsync plugin that monitors the names and number of active
cluster nodes in order to deliver membership and quorum information to
clients (such as the Pacemaker daemons). In a traditional
Corosync-Pacemaker cluster, a Pacemaker plugin is loaded to provide
membership and quorum information. The motivation for wanting to use CMAN
for this instead, is to ensure all elements of the cluster stack are
making decisions based on the same membership and quorum data. [15] CMAN
has been around longer than Pacemaker and is part of the Red Hat cluster
stack, so it is available and supported by many distributions and other
pieces of software (such as OCFS2 and GFS2). For this reason it makes
sense to support it.


C.2.Â Adding CMAN Support
-------------------------

C.2.1. Adding CMAN Support - cluster.conf

C.2.2. Adding CMAN Support - corosync.conf


è¦å
-----

Be sure to disable the Pacemaker plugin before continuing with this
section. In most cases, this can be achieved by removing
/etc/corosync/service.d/pcmk and stopping Corosync.


C.2.1.Â Adding CMAN Support - cluster.conf

The preferred approach for enabling CMAN is to configure cluster.conf and
use the /etc/init.d/cman script to start Corosync. Its far easier to
maintain and start automatically starts the necessary pieces for using
GFS2. You can find some documentation on Installing CMAN and Creating a
Basic Cluster Configuration File at the Red Hat website. However please
ignore the parts about Fencing, Failover Domains, or HA Services and
anything to do with rgmanager and fenced. All these continue to be
handled by Pacemaker in the normal manner.

        
<?xml version="1.0"?>
<cluster config_version="1" name="beekhof">
  <fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/>
  <clusternodes>
    <clusternode name="pcmk-1" nodeid="1">
      <fence/>
    </clusternode>
    <clusternode name="pcmk-2" nodeid="2">
      <fence/>
    </clusternode>
  </clusternodes>
  <cman/>
  <fencedevices/>
  <rm/>
</cluster>
        

ä¾Â C.1.Â Sample cluster.conf for a two-node cluster


C.2.2.Â Adding CMAN Support - corosync.conf

The alternative is to add the necessary cman configuration elements to
corosync.conf. We recommend you place these directives in
/etc/corosync/service.d/cman as they will differ between machines. If you
choose this approach, you would continue to start and stop Corosync with
it's init script as previously described in this document.

[root@pcmk-1 ~]# cat <<-END >>/etc/corosync/service.d/cmancluster {
    name: beekhof

    clusternodes {
            clusternode {
                    votes: 1
                    nodeid: 1
                    name: pcmk-1
            }
            clusternode {
                    votes: 1
                    nodeid: 2
                    name: pcmk-2
            }
    }
    cman {
            expected_votes: 2
            cluster_id: 123
            nodename: `uname -n`
            two_node: 1
            max_queued: 10
    }
}

service {
    name: corosync_cman
    ver: 0
}

quorum {
    provider: quorum_cman
}
END

ä¾Â C.2.Â Sample corosync.conf extensions for a two-node cluster


è¦å
-----

Verify that nodename was set appropriately on each host.

------------------------------------------------------------------------

[15] A failure to do this can lead to what is called internal split-brain
- a situation where different parts of the stack disagree about whether
some nodes are alive or dead - which quickly leads to unnecssary
down-time and/or data corruption.



å»¶âä¼¸âéâè¯»â
========================

Project Websitehttp://www.clusterlabs.orgCluster Commands
ä¸âä¸ªâç»¼âåâçâæâåâ,åâå«âäºâNovellæâåâçâéâç¾¤âå½âä»¤â,å¯âä»¥âå¨âè¿âéâè¢«âæ¾âå°â:
http://www.novell.com/documentation/sles11/book_sleha/index.html?page=/documentation/sles11/book_sleha/data/book_sleha.htmlCorosynchttp://www.corosync.org



ä¿®âè®¢âåâå²â
========================

ä¿®è®¢åå²

ä¿®è®¢ 1

Mon May 17 2010

Andrew Beekhof

Import from Pages.app


ç´¢å¼
------


F

feedback

      contact information for this manualï¼æâââä»¬âââéâââè¦âââæ¨âââçâââåâââé¦âââæâââè§âââï¼
