PACEMAKER

Aus xinux.net
Zur Navigation springen Zur Suche springen

Installation

[ALL] Initial setup

Install required packages:

sudo apt-get install pacemaker cman resource-agents fence-agents gfs2-utils gfs2-cluster ocfs2-tools-cman openais drbd8-utils
Make sure each host can resolve all other hosts. Best way to achive this is by adding their IPs and hostnames to /etc/hosts on all nodes. In this example, that would be:
eth0
192.168.244.161 fix
192.168.244.162 foxy
eth1
10.168.244.161   fix-ha
10.168.244.162   foxy-ha
Disable o2cb from starting:
update-rc.d -f o2cb remove

[ALL] Create /etc/cluster/cluster.conf

Paste this into /etc/cluster/cluster.conf:

<?xml version="1.0"?>
<cluster config_version="4" name="pacemaker">
    <fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/>
    <clusternodes>
            <clusternode name="server1" nodeid="1" votes="1">
                <fence>
                        <method name="pcmk-redirect">
                                <device name="pcmk" port="server1"/>
                        </method>
                </fence>
            </clusternode>
            <clusternode name="server2" nodeid="2" votes="1">
                <fence>
                        <method name="pcmk-redirect">
                                <device name="pcmk" port="server2"/>
                        </method>
                </fence>
            </clusternode>
            <clusternode name="server3" nodeid="3" votes="1">
                <fence>
                        <method name="pcmk-redirect">
                                <device name="pcmk" port="server3"/>
                        </method>
                </fence>
            </clusternode>
    </clusternodes>
  <fencedevices>
    <fencedevice name="pcmk" agent="fence_pcmk"/>
  </fencedevices>
    <cman/>
</cluster> 

[ALL] Edit /etc/corosync/corosync.conf

Find pacemaker service in /etc/corosync/corosync.conf and bump version to 1:

service {
        # Load the Pacemaker Cluster Resource Manager
        ver:       1
        name:      pacemaker
}

Replace bindnetaddr with the IP of your network. For example:

                bindnetaddr: 10.168.244.0

'0' is not a typo.

[ALL] Enable pacemaker init scripts

update-rc.d -f pacemaker remove
update-rc.d pacemaker start 50 1 2 3 4 5 . stop 01 0 6 .

[ALL] Start cman service and then pacemaker service

service cman start
Starting cluster: 
   Checking if cluster has been disabled at boot... [  OK  ]
   Checking Network Manager... [  OK  ]
   Global setup... [  OK  ]
   Loading kernel modules... [  OK  ]
   Mounting configfs... [  OK  ]
   Starting cman... [  OK  ]
   Waiting for quorum... [  OK  ]
   Starting fenced... [  OK  ]
   Starting dlm_controld... [  OK  ]
   Unfencing self... [  OK  ]
   Joining fence domain... [  OK  ]
service pacemaker start
Starting Pacemaker Cluster Manager: [  OK  ]

[ONE] Setup resources

Wait for a minute until pacemaker declares all nodes online:
# crm status
============
Last updated: Fri Sep  7 21:18:12 2012
Last change: Fri Sep  7 21:17:17 2012 via crmd on fix
Stack: cman
Current DC: fix - partition with quorum
Version: 1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c
2 Nodes configured, unknown expected votes
0 Resources configured.
============ 

Online: [ fix foxy ]

[ALL]Set up dlm_controld and o2cb

node fix
node foxy
primitive resDLM ocf:pacemaker:controld \
        params daemon="dlm_controld" \
        op monitor interval="120s"
primitive resO2CB ocf:pacemaker:o2cb \
       params stack="cman" \
       op monitor interval="120s"
clone cloneDLM resDLM \
        meta globally-unique="false" interleave="true"
clone cloneO2CB resO2CB \
        meta globally-unique="false" interleave="true"
colocation colO2CBDLM inf: cloneO2CB cloneDLM
order ordDLMO2CB 0: cloneDLM cloneO2CB
property $id="cib-bootstrap-options" \
       dc-version="1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c" \
       cluster-infrastructure="cman" \
       stonith-enabled="false" \
       no-quorum-policy="ignore"

[ALL] Configure drbd

On both nodes create file /etc/drbd.d/disk0.res containing:

resource disk0 {
         protocol C;
        net {
                cram-hmac-alg sha1;
                shared-secret "lucid";
                allow-two-primaries;
        }
        startup {
                become-primary-on both;
       }
       on fix {
               device /dev/drbd0;
               disk /dev/sda3;
               address 10.168.244.161:7788;
               meta-disk internal;
       }
       on foxy {
               device /dev/drbd0;
               disk /dev/sda3;
               address 10.168.244.162:7788;
               meta-disk internal;
       }
}

Pacemaker will handle starting and stopping drbd services, so remove its init script:

sudo update-rc.d -f drbd remove

Create drbd resource:

sudo drbdadm create-md disk0
You should get:
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success

Start drbd:

sudo service drbd start

[ALL]Set up dlm_controld and o2cb with drbd

node fix
node foxy
primitive resDLM ocf:pacemaker:controld \
       params daemon="dlm_controld" \
       op monitor interval="120s"
primitive resDRBD ocf:linbit:drbd \
       params drbd_resource="disk0" \
       operations $id="resDRBD-operations" \
       op monitor interval="20" role="Master" timeout="20" \
       op monitor interval="30" role="Slave" timeout="20"
primitive resO2CB ocf:pacemaker:o2cb \
       params stack="cman" \
       op monitor interval="120s"
ms msDRBD resDRBD \
       meta resource-stickines="100" notify="true" master-max="2" interleave="true"
clone cloneDLM resDLM \
       meta globally-unique="false" interleave="true"
clone cloneO2CB resO2CB \
       meta globally-unique="false" interleave="true"
colocation colDLMDRBD inf: cloneDLM msDRBD:Master
colocation colO2CBDLM inf: cloneO2CB cloneDLM
order ordDLMO2CB 0: cloneDLM cloneO2CB
property $id="cib-bootstrap-options" \
       dc-version="1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c" \
       cluster-infrastructure="cman" \
       stonith-enabled="false" \
       no-quorum-policy="ignore"

[ONE]Now we format one site with ocfs2

sudo mkfs.ocfs2 /dev/drbd/by-res/disk0

[ALL]Set up dlm_controld and o2cb with drbd and mounting on both sites=

node fix
node foxy
primitive resDLM ocf:pacemaker:controld \
        params daemon="dlm_controld" \
        op monitor interval="120s"
primitive resDRBD ocf:linbit:drbd \
        params drbd_resource="disk0" \
        operations $id="resDRBD-operations" \
        op monitor interval="20" role="Master" timeout="20" \
       op monitor interval="30" role="Slave" timeout="20"
primitive resFS ocf:heartbeat:Filesystem \
        params device="/dev/drbd/by-res/disk0" directory="/opt" fstype="ocfs2" \
        op monitor interval="120s"
primitive resO2CB ocf:pacemaker:o2cb \
       params stack="cman" \
       op monitor interval="120s"
ms msDRBD resDRBD \
       meta resource-stickines="100" notify="true" master-max="2" interleave="true"
clone cloneDLM resDLM \
       meta globally-unique="false" interleave="true"
clone cloneFS resFS \
       meta interleave="true" ordered="true"
clone cloneO2CB resO2CB \
       meta globally-unique="false" interleave="true"
colocation colDLMDRBD inf: cloneDLM msDRBD:Master
colocation colFSO2CB inf: cloneFS cloneO2CB
colocation colO2CBDLM inf: cloneO2CB cloneDLM
order ordDLMO2CB 0: cloneDLM cloneO2CB
order ordO2CBFS 0: cloneO2CB cloneFS
property $id="cib-bootstrap-options" \
       dc-version="1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c" \
       cluster-infrastructure="cman" \
       stonith-enabled="false" \
       no-quorum-policy="ignore"

Links