Configuración del Cluster
Observaciones
- Desactivamos firewall y SELinux en ambos nodos.
- El usuario administrador del cluster será hacluster.
- Desactivaremos el Quorum, trabajando con dos nodos no tiene sentido.
- El nombre elegido para el cluster es BP.
- Daremos preferencia a node-1 para trabajar como Master.
- Crearemos los siguientes recurosos para el DRBD.
- Para los datos : BP_data.
- Para la sincronización : BP_syncro.
- Para el filesystem : BP_fs.
Instalamos paquetes en ambos nodos:
yum install corosync pcs pacemaker cman
Configuramos la contraseña para el usuario hacluster:
[node-1]# passwd hacluster
[node-2]# passwd hacluster
Configuramos servicios:
[node-1]# service pcsd start
[node-2]# service pcsd start
[node-1]# chkconfig pcsd on
[node-1]# chkconfig pacemaker on
[node-2]# chkconfig pcsd on
[node-2]# chkconfig pacemaker on
Autenticamos los nodos:
[node-1]# pcs cluster auth node-1 node-2
Username: hacluster
Password:
node-1: Authorized
node-2: Authorized
Creamos el cluster:
[node-1] mkdir /etc/cluster
[node-2] mkdir /etc/cluster
[node-1]# pcs cluster setup --name BP node-1 node-2
node-1: Updated cluster.conf...
node-2: Updated cluster.conf...
Synchronizing pcsd certificates on nodes node-1, node-2...
node-1: Success
node-2: Success
Restarting pcsd on the nodes in order to reload the certificates...
node-1: Success
node-2: Success
Arrancamos el cluster:
[node-1]# pcs cluster start --all
node-1: Starting Cluster...
node-2: Starting Cluster...
Comprobamos el estado del cluster:
node-1]# pcs status cluster
Cluster Status:
Last updated: Tue Mar 1 04:58:26 2016
Last change: Tue Mar 1 04:57:52 2016
Stack: cman
Current DC: server2 - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured
0 Resources configured
PCSD Status:
node-1: Online
node-2: Online
[node-2]# pcs status cluster
Cluster Status:
Last updated: Tue Mar 1 05:00:33 2016
Last change: Tue Mar 1 04:57:52 2016
Stack: cman
Current DC: server2 - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured
0 Resources configured
PCSD Status:
node-1: Online
node-2: Online
Comprobamos el status de los nodos:
[node-1]# pcs status nodes
Pacemaker Nodes:
Online: node-1 node-2
Standby:
Maintenance:
Offline:
Pacemaker Remote Nodes:
Online:
Standby:
Maintenance:
Offline:
[node-2]# pcs status nodes
Pacemaker Nodes:
Online: node-1 node-2
Standby:
Maintenance:
Offline:
Pacemaker Remote Nodes:
Online:
Standby:
Maintenance:
Offline:
[node-1]# pcs status corosync
Nodeid Name
1 node-1
2 node-2
[node-2]# pcs status corosync
Nodeid Name
1 node-1
2 node-2
Comprobamos el status general:
[node-1]# pcs status
Cluster name: BP
WARNING: no stonith devices and stonith-enabled is not false
Last updated: Thu Jul 7 13:16:43 2016 Last change: Thu Jul 7 13:14:47 2016 by root via crmd on node-2
Stack: cman
Current DC: node-2 (version 1.1.14-8.el6-70404b0) - partition with quorum
2 nodes and 0 resources configured
Online: [ node-1 node-2 ]
Full list of resources:
PCSD Status:
node-1: Online
node-2: Online
Desactivamos el fenced:
[node-1]# pcs property set stonith-enabled=false
Desactivamos el quorum:
[node-1]# pcs property set no-quorum-policy=ignore
Comprobamos las propiedades del clsuter:
[node-1]# pcs property
Cluster Properties:
cluster-infrastructure: cman
dc-version: 1.1.14-8.el6-70404b0
have-watchdog: false
no-quorum-policy: ignore
stonith-enabled: false
Añadimos la IP Virtual:
[node-1]# pcs resource create IpVirt ocf:heartbeat:IPaddr2 ip=192.168.0.4 cidr_netmask=32 op monitor interval=30s
Añadimos los servicios MySQl y Tomcat:
[node-1]# pcs resource create MySQL ocf:heartbeat:mysql op monitor interval="20" timeout="60"
[node-1]# pcs resource create Tomcat lsb:tomcat
Vincularemos la Ip Virtual a los servicios para que trabajen siempre juntos:
[node-1]#pcs constraint colocation add Tomcat MySQL INFINITY
Forzamos a que inicie primero la IP Virtual y luego los servicios:
[node-1]# pcs constraint order IpVirt then Tomcat
Adding IpVirt Tomcat (kind: Mandatory) (Options: first-action=start then-action=start)
[node-1]# pcs constraint order Tomcat then MySQL
Adding Tomcat MySQL (kind: Mandatory) (Options: first-action=start then-action=start)
Damos preferencia al nodo que hará de master:
[node-1]# pcs constraint location MySQL prefers node-1=50
[node-1]# pcs constraint location Tomcat prefers node-1=50
Comprobamos restricciones:
[node-1]# pcs constraint
Location Constraints:
Resource: MySQL
Enabled on: node-1 (score:50)
Resource: Tomcat
Enabled on: node-1 (score:50)
Ordering Constraints:
start IpVirt then start Tomcat (kind:Mandatory)
start Tomcat then start MySQL (kind:Mandatory)
Colocation Constraints:
Tomcat with MySQL (score:INFINITY)
Gestión del DRBD
Creamos un nuevo CIB (Cluster Infromation Base):
[node-1]# pcs cluster cib add_drbd
[node-1]# ls -al add_drbd
-rw-r--r-- 1 root root 10665 7 jul 13:28 add_drbd
[node-1]# pcs -f add_drbd resource create BP_data ocf:linbit:drbd drbd_resource=data op monitor interval=60
[node-1]# pcs -f add_drbd resource master BP_data_sync BP_data master-max=1 master-node-max=1 clone-max=2\
clone-node-max=1 notify=true
Consultamos la configuración del CIB:
[node1]# pcs -f add_drbd resource show
IpVirt (ocf::heartbeat:IPaddr2): Started node-1
MySQL (ocf::heartbeat:mysql): Started node-1
Tomcat (lsb:tomcat): Started node-1
Master/Slave Set: BP_data_sync [BP_data]
Stopped: [ node-1 node-2 ]
Activamos la configuración del CIB :
[node1]# pcs cluster cib-push add_drbd
CIB updated
[node-1]# pcs cluster cib add_fs
[node-1]# pcs -f add_fs resource create BP_fs Filesystem device="/dev/drbd1" directory="/data" fstype="ext3"
El filesystem debe estar disponible en el Master :
[node1]# pcs -f add_fs constraint colocation add BP_fs BP_data_sync INFINITY with-rsc-role=Master
Debe arrancar antes DRBD para que el filesystem este disponible :
[node-1]# pcs -f add_fs constraint order promote BP_data_sync then start BP_fs Adding BP_data_sync BP_fs
Adding BP_data_sync BP_fs (kind: Mandatory) (Options: first-action=promote then-action=start)
El filesystem debe estar montado antes de que arranque los servicios :
[node-1]# pcs -f add_fs constraint order BP_fs then MySQL
Adding BP_fs MySQL (kind: Mandatory) (Options: first-action=start then-action=start)
[node-1]# pcs -f add_fs constraint order BP_fs then Tomcat
Adding BP_fs Tomcat (kind: Mandatory) (Options: first-action=start then-action=start)
Forzamso a todos los recursos a trabajar juntos :
[node-1]# pcs -f add_fs constraint colocation add BP_fs Tomcat IpVirt MySQL INFINITY with-rsc-role=Master
Aplicamos cambios :
[node1]# pcs cluster cib-push add_fs
CIB updated
Comprobamos restricciones :
[node-1]# pcs constraint
Location Constraints:
Resource: MySQL
Enabled on: node-1 (score:50)
Resource: Tomcat
Enabled on: node-1 (score:50)
Ordering Constraints:
start IpVirt then start Tomcat (kind:Mandatory)
start Tomcat then start MySQL (kind:Mandatory)
promote BP_data_sync then start BP_fs (kind:Mandatory)
start BP_fs then start MySQL (kind:Mandatory)
start BP_fs then start Tomcat (kind:Mandatory)
Colocation Constraints:
Tomcat with MySQL (score:INFINITY)
BP_fs with BP_data_sync (score:INFINITY) (with-rsc-role:Master)
BP_fs with MySQL (score:INFINITY) (rsc-role:Started) (with-rsc-role:Master)