<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.chepkov.com/w/index.php?action=history&amp;feed=atom&amp;title=Pacemaker</id>
	<title>Pacemaker - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.chepkov.com/w/index.php?action=history&amp;feed=atom&amp;title=Pacemaker"/>
	<link rel="alternate" type="text/html" href="https://www.chepkov.com/w/index.php?title=Pacemaker&amp;action=history"/>
	<updated>2026-04-28T17:13:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.chepkov.com/w/index.php?title=Pacemaker&amp;diff=482&amp;oldid=prev</id>
		<title>Vvc: /* Pacemaker management */</title>
		<link rel="alternate" type="text/html" href="https://www.chepkov.com/w/index.php?title=Pacemaker&amp;diff=482&amp;oldid=prev"/>
		<updated>2011-04-23T18:27:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Pacemaker management&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
Pacemaker [http://www.clusterlabs.org/rpm/epel-5 repository]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| c20 || node ip || 10.10.10.20&lt;br /&gt;
|-&lt;br /&gt;
| || crossover || 10.0.0.1&lt;br /&gt;
|-&lt;br /&gt;
| c21 || node ip || 10.10.10.21&lt;br /&gt;
|-&lt;br /&gt;
| || crossover || 10.0.0.2&lt;br /&gt;
|-&lt;br /&gt;
| cl1 || virt ip|| 10.10.10.22&lt;br /&gt;
|-&lt;br /&gt;
| /u00 || FS ||/dev/drbd/by-res/u00 &lt;br /&gt;
|-&lt;br /&gt;
| cl2 || virt ip || 10.10.10.23&lt;br /&gt;
|-&lt;br /&gt;
| /u01 || FS || /dev/drbd/by-res/u01&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Cluster stack===&lt;br /&gt;
You can use either Heartbeat or Corosync, make sure only one is enabled during startup&lt;br /&gt;
&lt;br /&gt;
I suggest to change default priorities for the corosync service&lt;br /&gt;
 sed -i -e &amp;#039;s/.*chkconfig:.*/# chkconfig: 345 99 00/&amp;#039; /etc/rc.d/init.d/corosync&lt;br /&gt;
 chkconfig corosync resetpriorities&lt;br /&gt;
&lt;br /&gt;
====  Heartbeat ====&lt;br /&gt;
* /etc/ha.d/ha.cf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Logging&lt;br /&gt;
debug				1&lt;br /&gt;
use_logd			false&lt;br /&gt;
logfacility			daemon&lt;br /&gt;
 &lt;br /&gt;
# Misc Options&lt;br /&gt;
traditional_compression 	off&lt;br /&gt;
compression			bz2&lt;br /&gt;
coredumps			true&lt;br /&gt;
 &lt;br /&gt;
# Communications&lt;br /&gt;
udpport				694&lt;br /&gt;
bcast				eth1 eth0&lt;br /&gt;
node				c20&lt;br /&gt;
node				c21&lt;br /&gt;
   &lt;br /&gt;
# Thresholds (in seconds)&lt;br /&gt;
keepalive			1&lt;br /&gt;
warntime			6&lt;br /&gt;
deadtime			10&lt;br /&gt;
initdead			30&lt;br /&gt;
&lt;br /&gt;
pacemaker                     respawn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 1&lt;br /&gt;
1 sha1 SecretCode&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* fix permissions&lt;br /&gt;
 chmod 400 /etc/ha.d/authkeys&lt;br /&gt;
&lt;br /&gt;
* populate heartbeat configuration to c21&lt;br /&gt;
 [root@c21 ~]# rsync -av c20:/etc/ha.d/ /etc/ha.d/&lt;br /&gt;
&lt;br /&gt;
* start heartbeat daemon on both nodes&lt;br /&gt;
 service heartbeat start&lt;br /&gt;
&lt;br /&gt;
==== Corosync ====&lt;br /&gt;
* generate secure key&lt;br /&gt;
 corosync-keygen&lt;br /&gt;
&lt;br /&gt;
* create config file &amp;#039;&amp;#039;&amp;#039;/etc/corosync/corosync.conf&amp;#039;&amp;#039;&amp;#039; on c20&lt;br /&gt;
When you have multiple interfaces, separate port numbers by 2, corosync uses port N and N-1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatibility: none&lt;br /&gt;
&lt;br /&gt;
aisexec {&lt;br /&gt;
        user:   root&lt;br /&gt;
        group:  root&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
service {&lt;br /&gt;
        name: pacemaker&lt;br /&gt;
        clustername: chepkov&lt;br /&gt;
        ver:  0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
totem {&lt;br /&gt;
	version: 2&lt;br /&gt;
	token: 5000&lt;br /&gt;
	token_retransmits_before_loss_const: 20&lt;br /&gt;
	join: 1000&lt;br /&gt;
	consensus: 11000&lt;br /&gt;
	vsftype: none&lt;br /&gt;
	max_messages: 20&lt;br /&gt;
	secauth: on&lt;br /&gt;
	threads: 0&lt;br /&gt;
	clear_node_high_bit: yes&lt;br /&gt;
	rrp_mode: passive&lt;br /&gt;
	interface {&lt;br /&gt;
		ringnumber: 0&lt;br /&gt;
		broadcast: yes&lt;br /&gt;
		bindnetaddr: 10.0.0.0&lt;br /&gt;
		mcastport: 5405&lt;br /&gt;
	}&lt;br /&gt;
	interface {&lt;br /&gt;
		ringnumber: 1&lt;br /&gt;
		broadcast: yes&lt;br /&gt;
		bindnetaddr: 10.10.10.0&lt;br /&gt;
		mcastport: 5407&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
	fileline: off&lt;br /&gt;
	to_stderr: no&lt;br /&gt;
	to_syslog: yes&lt;br /&gt;
	debug: off&lt;br /&gt;
	timestamp: on&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
amf {&lt;br /&gt;
	mode: disabled&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* populate corosync configuration to c21&lt;br /&gt;
 [root@c21 ~]# rsync -av c20:/etc/corosync/ /etc/corosync/&lt;br /&gt;
&lt;br /&gt;
* start corosync daemon on both nodes&lt;br /&gt;
 service corosync start&lt;br /&gt;
&lt;br /&gt;
==Pacemaker config ==&lt;br /&gt;
=== Set default cluster options===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@c20 ~]# crm configure&lt;br /&gt;
property no-quorum-policy=ignore&lt;br /&gt;
property stonith-enabled=false&lt;br /&gt;
property default-resource-stickiness=1000&lt;br /&gt;
property dc-deadtime=2min&lt;br /&gt;
property default-action-timeout=120s&lt;br /&gt;
property shutdown-escalation=5min&lt;br /&gt;
property cluster-recheck-interval=10min&lt;br /&gt;
property start-failure-is-fatal=false&lt;br /&gt;
property pe-error-series-max=1000&lt;br /&gt;
property pe-input-series-max=1000&lt;br /&gt;
property pe-warn-series-max=1000&lt;br /&gt;
rsc_defaults failure-timeout=10min&lt;br /&gt;
commit&lt;br /&gt;
bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configure drbd resources===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@c20 ~]# crm configure&lt;br /&gt;
primitive drbd_u00 ocf:linbit:drbd params drbd_resource=&amp;quot;u00&amp;quot; \&lt;br /&gt;
	op start timeout=&amp;quot;240&amp;quot; \&lt;br /&gt;
        op monitor interval=&amp;quot;59s&amp;quot; role=&amp;quot;Master&amp;quot; timeout=&amp;quot;30s&amp;quot; \&lt;br /&gt;
	op monitor interval=&amp;quot;60s&amp;quot; role=&amp;quot;Slave&amp;quot; timeout=&amp;quot;30s&amp;quot;&lt;br /&gt;
primitive drbd_u01 ocf:linbit:drbd params drbd_resource=&amp;quot;u01&amp;quot; \&lt;br /&gt;
	op start timeout=&amp;quot;240&amp;quot; \&lt;br /&gt;
        op monitor interval=&amp;quot;59s&amp;quot; role=&amp;quot;Master&amp;quot; timeout=&amp;quot;30s&amp;quot; \&lt;br /&gt;
	op monitor interval=&amp;quot;60s&amp;quot; role=&amp;quot;Slave&amp;quot; timeout=&amp;quot;30s&amp;quot;&lt;br /&gt;
ms ms_drbd_u00 drbd_u00 \&lt;br /&gt;
        meta master-max=&amp;quot;1&amp;quot; master-node-max=&amp;quot;1&amp;quot; clone-max=&amp;quot;2&amp;quot; clone-node-max=&amp;quot;1&amp;quot; notify=&amp;quot;true&amp;quot;&lt;br /&gt;
ms ms_drbd_u01 drbd_u01 \&lt;br /&gt;
        meta master-max=&amp;quot;1&amp;quot; master-node-max=&amp;quot;1&amp;quot; clone-max=&amp;quot;2&amp;quot; clone-node-max=&amp;quot;1&amp;quot; notify=&amp;quot;true&amp;quot;&lt;br /&gt;
commit&lt;br /&gt;
bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure filesystems ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@c20 ~]# crm configure&lt;br /&gt;
primitive fs_u00 ocf:heartbeat:Filesystem \&lt;br /&gt;
        params device=&amp;quot;/dev/drbd/by-res/u00&amp;quot; directory=&amp;quot;/u00&amp;quot; fstype=&amp;quot;ext3&amp;quot; options=&amp;quot;noatime&amp;quot;&lt;br /&gt;
primitive fs_u01 ocf:heartbeat:Filesystem \&lt;br /&gt;
        params device=&amp;quot;/dev/drbd/by-res/u01&amp;quot; directory=&amp;quot;/u01&amp;quot; fstype=&amp;quot;ext3&amp;quot; options=&amp;quot;noatime&amp;quot;&lt;br /&gt;
colocation col_u00 inf: fs_u00 ms_drbd_u00:Master&lt;br /&gt;
colocation col_u01 inf: fs_u01 ms_drbd_u01:Master&lt;br /&gt;
order fs_after_drbd_u00 inf: ms_drbd_u00:promote fs_u00:start&lt;br /&gt;
order fs_after_drbd_u01 inf: ms_drbd_u01:promote fs_u01:start&lt;br /&gt;
commit&lt;br /&gt;
bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configure IP===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@c20 ~]# crm configure&lt;br /&gt;
primitive ip_rg0 ocf:heartbeat:IPaddr2 params nic=&amp;quot;eth0&amp;quot; ip=&amp;quot;10.10.10.22&amp;quot; cidr_netmask=&amp;quot;32&amp;quot;&lt;br /&gt;
primitive ip_rg1 ocf:heartbeat:IPaddr2 params nic=&amp;quot;eth0&amp;quot; ip=&amp;quot;10.10.10.23&amp;quot; cidr_netmask=&amp;quot;32&amp;quot;&lt;br /&gt;
commit&lt;br /&gt;
bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configure apache===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@c20 ~]# crm configure&lt;br /&gt;
primitive apache_rg0 ocf:heartbeat:apache \&lt;br /&gt;
	params configfile=&amp;quot;/u00/apache/conf/httpd.conf&amp;quot; \&lt;br /&gt;
        statusurl=&amp;quot;http://cl1.chepkov.lan/server-status&amp;quot; \&lt;br /&gt;
        op monitor interval=&amp;quot;2min&amp;quot; \&lt;br /&gt;
	meta target-role=&amp;quot;stopped&amp;quot;&lt;br /&gt;
primitive apache_rg1 ocf:heartbeat:apache \&lt;br /&gt;
	params configfile=&amp;quot;/u01/apache/conf/httpd.conf&amp;quot; \&lt;br /&gt;
        statusurl=&amp;quot;http://cl2.chepkov.lan/server-status&amp;quot; \&lt;br /&gt;
        op monitor interval=&amp;quot;2min&amp;quot; \&lt;br /&gt;
	meta target-role=&amp;quot;stopped&amp;quot;&lt;br /&gt;
commit&lt;br /&gt;
bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create groups of resources and their preferred location===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@c20 ~]# crm configure&lt;br /&gt;
group rg0 fs_u00 ip_rg0 apache_rg0&lt;br /&gt;
group rg1 fs_u01 ip_rg1 apache_rg1&lt;br /&gt;
location rg0_on_c20 rg0 100: c20.chepkov.lan&lt;br /&gt;
location rg1_on_c21 rg1 100: c21.chepkov.lan&lt;br /&gt;
commit&lt;br /&gt;
bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Start apache===&lt;br /&gt;
 crm resource start apache_rg0&lt;br /&gt;
 crm resource start apache_rg1&lt;br /&gt;
&lt;br /&gt;
===Define ping constraints===&lt;br /&gt;
&lt;br /&gt;
We don&amp;#039;t want to run any service if default router is unreachable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# crm configure&lt;br /&gt;
primitive ping ocf:pacemaker:ping \&lt;br /&gt;
  params name=&amp;quot;pingd&amp;quot; host_list=&amp;quot;10.10.10.250&amp;quot; multiplier=&amp;quot;200&amp;quot; timeout=&amp;quot;5&amp;quot; \&lt;br /&gt;
  op monitor interval=&amp;quot;10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
clone connected ping \&lt;br /&gt;
        meta globally-unique=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
location rg0-connected rg0 \&lt;br /&gt;
 rule -inf: not_defined pingd or pingd lte 0&lt;br /&gt;
&lt;br /&gt;
location rg1-connected rg1 \&lt;br /&gt;
 rule -inf: not_defined pingd or pingd lte 0&lt;br /&gt;
&lt;br /&gt;
commit&lt;br /&gt;
bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pacemaker management==&lt;br /&gt;
* Stop all resources&lt;br /&gt;
 crm configure property stop-all-resources=true&lt;br /&gt;
&lt;br /&gt;
* increase number of lrmd children&lt;br /&gt;
  /usr/sbin/lrmadmin -p max-children 10&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Vvc</name></author>
	</entry>
</feed>