PACEMAKER: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 233: | Zeile 233: | ||
stonith-enabled="false" \ | stonith-enabled="false" \ | ||
no-quorum-policy="ignore" | no-quorum-policy="ignore" | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=Links= | =Links= |
Version vom 8. September 2012, 15:44 Uhr
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"