How to configure Oracle DB cluster
Oracle Database (commonly referred to as Oracle RDBMS or simply as Oracle) is an object-relational database management system produced and marketed by Oracle Corporation.
This tutorial explains the detailed steps to configure cluster for oracle dba using corosync and pacemaker.
Please note that, we are using the following server details in this article.
192.168.10.1 – node01 – first cluster node – running CentOS 6.4
192.168.10.2 – node02 – second cluster node – running CentOS 6.4
192.168.10.20 – floating ipaddress
Step1: Disable iptables
# service iptables stop
# chkconfig iptables off
Step2: Disable selinux
#vi /etc/sysconfig/selinux
Update line as below and save the file. Server required a reboot as this stage
SELINUX = disabled
Step3: Configure the hosts files with the hostnames of both the servers
192.168.10.1 node01.localhost.com node01
192.168.10.2 node02.localhost.com node02
Steps4: Install cman and pacemaker
#yum -y cman pacemaker pacemaker-cli fence-agents resource-agents openais
Step5: Open the cluster configuration file "/etc/cluster/cluster.conf" and the update the below lines.
<?xml version="1.0"?>
<cluster config_version="1" name="pacemaker">
<cman two_node="1" expected_votes="1"/>
<fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/>
<clusternodes>
<clusternode name="fileserver-1" nodeid="1" votes="1">
<fence>
<method name="pcmk-redirect">
<device name="pcmk" port="node01"/>
</method>
</fence>
</clusternode>
<clusternode name="fileserver-2" nodeid="2" votes="1">
<fence>
<method name="pcmk-redirect">
<device name="pcmk" port="node02"/>
</method>
</fence>
</clusternode>
</clusternodes>
<fencedevices>
<fencedevice name="pcmk" agent="fence_pcmk"/>
</fencedevices>
</cluster>
Step6: Open the corosync configuration file "/etc/corosync/corosync.conf" and update the below lines.
compatibility: whitetank
totem {
version: 2
secauth: on
interface {
member {
memberaddr: 192.168.10.1
}
member {
memberaddr: 192.168.10.2
}
ringnumber: 0
bindnetaddr: 100.100.10.0
mcastport: 5405
ttl: 1
}
transport: udpu
}
logging {
fileline: off
to_logfile: yes
to_syslog: yes
debug: on
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
Step7: Create service definition for pacemaker resource manager
#vi /etc/corosync/service.d/pcmk
add the below line and save the file.
# Load the Pacemaker Cluster Resource Manager
name: pacemaker
ver: 1
Step8: Create key to encrypt the communicatoins.
On the first node,
#corosync-keygen
This command will sit waiting for entropy to be generated. A quick way of doing this is to ssh in to the node via another session and run,
#find / >/dev/null 2>&1
a few times. Once the key is generated, it’ll be available at /etc/corosync/authkey.
Step9: Copy key to other server
Copy it to the other cluster node, and secure it:
#cp /etc/corosync/authkey root@node02:/etc/corosync
#chmod 400 /etc/corosync/authkey
Step10: Start pacemaker and corosync services
#service pacemaker start
#service corosync start
The cman service will not start if NetworkManager is either running or has been configured to run with the chkconfig command.
Step11: Install CRM shell
#cd /etc/yum.repos.d/
#wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/network:ha-clustering:Stable.repo
#yum -y install crmsh graphviz
Step12: Disable STONITH
#crm configure
property stonith-enabled="false"
commit
exit
Step13: Configure crm properties
#crm configure show
node node01.localhost.com \
attributes standby=off
node node02.localhost.com \
attributes standby=on
primitive OraLSN oralsnr \
params sid=MSCCCDB home="/home/oracle/Oracle/product/12.1.0/" user=oracle listener=MSCCCDB \
op start interval=0s timeout=60s \
op stop interval=0s timeout=60s \
op monitor interval=30 timeout=60 depth=0 \
meta target-role=Started
primitive OraSrv oracle \
params sid=MSCCCDB home="/home/oracle/Oracle/product/12.1.0" user=oracle shutdown_method=immediate \
op start interval=0s timeout=120 \
op stop interval=0s timeout=120 \
op monitor interval=120s timeout=60s
primitive failover_ip IPaddr2 \
params ip=192.168.10.20 cidr_netmask=32 \
op monitor interval=30s
primitive fs_ora_archive Filesystem \
params run_fsck=no device="/dev/sde1" directory="/Ora_Archive" fstype=ext4 \
op start interval=0s timeout=60s \
op monitor interval=15 timeout=40s \
op stop interval=0 timeout=60s on-fail=ignore
primitive fs_ora_backup Filesystem \
params run_fsck=no device="/dev/sdc1" directory="/Ora_Backup" fstype=ext4 \
op start interval=0s timeout=60s \
op monitor interval=15 timeout=40s \
op stop interval=0 timeout=60s on-fail=ignore
primitive fs_ora_data Filesystem \
params run_fsck=no device="/dev/sdd1" directory="/Ora_Data" fstype=ext4 \
op start interval=0s timeout=60s \
op monitor interval=15 timeout=40s \
op stop interval=0 timeout=60s on-fail=ignore
primitive fs_ora_index Filesystem \
params run_fsck=no device="/dev/sdg1" directory="/Ora_Index" fstype=ext4 \
op start interval=0s timeout=60s \
op monitor interval=15 timeout=40s \
op stop interval=0 timeout=60s on-fail=ignore
primitive fs_ora_soft Filesystem \
params run_fsck=no device="/dev/sdf1" directory="/Ora_Soft" fstype=ext4 \
op start interval=0s timeout=60s \
op monitor interval=15 timeout=40s \
op stop interval=0 timeout=60s on-fail=ignore
order OraLSN-after-FS inf: failover_ip OraLSN
colocation OraLSN-with-FS inf: failover_ip OraLSN
colocation OraLSN-with-OraSrv inf: OraLSN OraSrv
order OraSrv-after-OraLSN inf: OraLSN OraSrv
order fs_ora_archive_before_ip Mandatory: fs_ora_archive failover_ip
order fs_ora_data_after_ip Mandatory: fs_ora_data fs_ora_archive fs_ora_backup fs_ora_index fs_ora_soft failover_ip
colocation fs_ora_data_colo inf: failover_ip fs_ora_data fs_ora_archive fs_ora_backup fs_ora_index fs_ora_soft
property cib-bootstrap-options: \
have-watchdog=false \
dc-version=1.1.14-8.el6_8.2-70404b0 \
cluster-infrastructure=cman \
expected-quorum-votes=2 \
stonith-enabled=false \
no-quorum-policy=ignore \
last-lrm-refresh=1479892683
Step14: Check the crm status
[root@node01 ~]# crm status
Last updated: Thu Nov 24 12:29:33 2016 Last change: Thu Nov 24 12:29:27 2016 by root via crm_attribute on node02.localhost.com
Stack: cman
Current DC: node02.localhost.com (version 1.1.14-8.el6_8.2-70404b0) - partition with quorum
2 nodes and 8 resources configured
Online: [ node01.localhost.com node02.localhost.com ]
Full list of resources:
failover_ip (ocf::heartbeat:IPaddr2): Started node01.localhost.com
fs_ora_data (ocf::heartbeat:Filesystem): Started node01.localhost.com
fs_ora_archive (ocf::heartbeat:Filesystem): Started node01.localhost.com
fs_ora_backup (ocf::heartbeat:Filesystem): Started node01.localhost.com
fs_ora_index (ocf::heartbeat:Filesystem): Started node01.localhost.com
fs_ora_soft (ocf::heartbeat:Filesystem): Started node01.localhost.com
OraLSN (ocf::heartbeat:oralsnr): Started node01.localhost.com
OraSrv (ocf::heartbeat:oracle): Started node01.localhost.com
That's all......