Configuración de software y nodos
En ambos nodos realizar:
Agregar nodos a tabla
hosts.
10.132.42.160 nodo1 nodo1.unix.com
10.132.42.161 nodo2 nodo1.unix.com
10.132.42.162 vipmysql
10.132.42.163 vipapache
10.132.42.168 ilo_nodo1
10.132.42.169 ilo_nodo2
Deshabilitar
firewalld y selinux
# systemctl stop
firewalld
# systemctl disable
firewalld
Instalar software
Cluster
# yum install pcs
fence-agents-all
Cambiar password de
usuario
# passwd hacluster
Habilitar servicio
# systemctl start
pcsd.service
# systemctl enable
pcsd.service
Autorizar nodos y
usuario (hacluster), realizar en un solo nodo
# pcs cluster auth
nodo1 nodo2
Creación de Clúster y servicios
Crear clúster con el
nombre “wcluster” y habilitar cluster al
iniciar maquinas
# pcs cluster setup
--start --name wcluster nodo1 nodo2
# pcs cluster enable
–-all
Validar estado
# pcs cluster status
Como es un clúster de 2 nodos solamente, deshabilitar quorum
# pcs property set
no-quorum-policy=ignore
Configurar Fencing
para los nodos
Se debe crear un dispositivo de fencing, con el fin de
recuperar el servicio en nodo con fallas. Existen distintos agentes dependiendo
del tipo de máquina, pueden ser ILO, SMNP, APC, Vmware, Kvm. Se debe configurar
el fencing antes que los recursos para que estos inicien automáticamente o después si prefieren.
Para ver lista de agentes disponibles
# pcs stonith list
La sintaxis es:
# pcs stonith create
“nombre” agente params var1=1 var2=1
Si no existen dispositivos para fencing, es posible
deshabilitarlo
# pcs property set stonith-enabled=false
Ver Fencing para ejemplos.
Instalar servicio para
cluster, ejemplo Apache
# yum group install
web-server php
Para que el clúster pueda obtener el status de apache
agregar al archivo httpd.conf
<Location /server-status>
SetHandler server-status
Order
deny,allow
Deny
from all
Allow
from 127.0.0.1
</Location>
Configuración de
volumen compartido
Se toma como supuesto que existe un grupo y volumen generado
en ambos nodos, indistinto del método de replicación u origen (storage, drbd,
rsync,etc), llamado vgdata y lvdata respectivamente. Se debe evitar que el
volumen sea activado por el sistema. En el archivo /etc/lvm/lvm.conf, descomentar la línea y agregar los
grupos de volúmenes que si serán activados al inicio del SO.
Identificar vg
# vgs --noheadings
-o vg_name
vg_root vg_home vgdata
Modificar /etc/lvm/lvm.conf
# volume_list = [
"vg_root", "vg_home" ]
Reconstruir initrd
# dracut -H -f
/boot/initramfs-$(uname -r).img $(uname -r)
Reiniciar ambos nodos y validar cluster
# pcs cluster status
Configurar recursos y
grupo de servicio
Agregar grupo de volumen (opcional)
# pcs resource
create my_lvm LVM volgrpname=vgdata
exclusive=true --group apachegroup
Agregar volumen y montaje de filesystem
# pcs resource
create w_fs Filesystem
device="/dev/vgdata/lvdata" directory="/var/www"
fstype="xfs" --group apachegroup
Agregar IP Virtual
# pcs resource
create vipapache IPaddr2
ip=10.132.42.163 cidr_netmask=24 --group apachegroup
Agregar Apache
# pcs resource
create website apache
configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status"
--group apachegroup
Configurar orden y
preferencia
Los recursos están agrupados y en orden de creación, para asegurar
el orden de los servicios es opcional.
# pcs constraint order w_fs then vipapache
# pcs constraint
order vipapache then website
Para asignar preferencia al grupo de servicios sobre un nodo (por
defecto es infinito)
# pcs constraint location apachegroup prefers
nodo1=50
# pcs constraint
location apachegroup prefers nodo2=0
Fencing
Es posible crear dispositivos de fencing utilizando
distintos agentes.
Ejemplo fencing con
vwmare
Ver lista de servidores
# fence_vmware_soap -z -l vmwareuser -p passwd
-a esxhost -o list --ssl-insecure
NODO1,564daf6c-c3d9-3089-c448-c5f70ddb6609
NODO2,564dce63-1623-c585-18a4-c48700f4104f
Crear fencing device usando nombre o UUID, host, usuario y
password vmware.
# pcs stonith create
fence_nodo1 fence_vmware_soap params ipaddr="esxhost" login="vmwareuser"
passwd="passwd" ssl=1 port="NODO1"
action="reboot" ssl_insecure=1 pcmk_host_list="nodo1"
# pcs stonith create
fence_nodo2 fence_vmware_soap params ipaddr="esxhost" login="vmwareuser"
passwd="passwd" ssl=1 port="NODO2"
action="reboot" ssl_insecure=1 pcmk_host_list="nodo2"
Ejemplo fencing con
ILO / ILO2
# pcs stonith create
fence_nodo1 fence_ilo params ipaddr="ilo_nodo1" login="admin"
passwd="admin123" action="reboot" pcmk_host_list=nodo1 pcmk_host_check=static-list
Ejemplo fencing con ILO3 / ILO4 usar ipmilan
pcs stonith create fence_nodo1
fence_ipmilan params ipaddr="ilo_nodo1" login="admin"
passwd="admin123" action="reboot" pcmk_host_list=nodo1 pcmk_host_check=static-list
Tomcat
Agregar servicio
tomcat personalizado
# pcs resource
create tomcat tomcat java_home="/usr/java/default"
catalina_home="/usr/share/tomcat" --group apachegroup
Como alternativa agregar servicio tomcat del sistema
# pcs resource
create tomcat systemd:tomcat --group apachegroup
MySQL o MariaDB
Montar volumen manualmente y cambiar los permisos primero (suponiendo que hay un fs para MySQL)
Instalar MariaDB
# yum install mariadb-server
Configurar recursos y
grupo de servicio
Agregar volumen y montaje de filesystem
# pcs resource
create fs_mysql Filesystem device="/dev/vgdata/lvbase"
directory="/var/lib/mysql" fstype="xfs" --group mysqlgp
Agregar IP Virtual
# pcs resource
create vipmysql IPaddr2 ip=10.132.42.162 cidr_netmask=24 --group mysqlgp
Agregar MySQL del sistema
# pcs resource
create mysqldb mysql config=/etc/my.cnf enable_creation=1
O MySQL como servicio del sistema
# pcs resource
create mysqldb systemd:mariadb --group mysqlgp
Tips
Si el periodo de
monitoreo es muy bajo, es necesario subir timeout por defecto antes de generar los recursos
# pcs resource op
defaults timeout=240s
# pcs resource op
defaults
Verificar
configuración
# crm_verify -L
Para evitar que los
servicios cambien de nodo al levantar un servidor se configura el “stickiness”,
tiene que ser mayor al valor más alto de “location” (defecto 0).
# pcs resource
defaults resource-stickiness=100Fin
Finalmente, después de todo se ve más o menos así:
Hola.
ResponderBorrarSi edito /etc/lvm/lvm.conf descomentando volume_list = [ "vg_root", "vg_home" ]
y ocultando el grupo de volumenes en este caso vgdata,
al montar los Filesystem que sean dependientes de ese vg, me da un error
que no lo encuentra
not installed' (5): call=135, status=complete,
exitreason='Couldn't find device [/dev/vgdata/lvdata]. Expected /dev/??? to exist'
Saludos
Este comentario ha sido eliminado por el autor.
ResponderBorrarHola, después de tanto tiempo no pense que alguien viera la guía. Es posible lo que dices, ya que el volumen no se inicializa, sino que lo hace el cluster. Puedes probar montando usando alias (mapper) o algun comando vg que permita habilitar el volumen. Lamentablemente ya no tengo los equipos disponibles para hacer alguna prueba. Suerte y Saludos
ResponderBorrarMuchísimas gracias pro la rápida respuesta Fernando.
ResponderBorrarEs la primera guia que veo con 2 "Filesystem", uno por cada nodo y un
solo LVM, que además dices es opcional.
Las demás guias solo hablan de 1 Filesystem (apache, por ejemplo), lo
que no supone ningun problema.
He probado de todo /dev/mapper, etc Tambien activo/activo y gfs2, pero
me lleva a otros problemas.
En cuanto filtro el VG en /lvm.conf con volume_list, los recursos no
se montan. Y si creo un LVM solo uno de los nodos lo tiene en exclusiva
con lo que no me sirve...
Lo dicho muchísimas y si lo resuelvo volveré y lo dejare escrito en tu
blog.
Saludos.
Fernando:
ResponderBorrarTengo algunas consultas; espero me puedas ayudar:
Puedo configurar el fencing despues de los resource, en mi caso en fencing_vmware_soa; Otra pregunta puedo desactivar el quorum sin afectar los recursos o el cluster. Y la ultima se puede configurar los recursos para ip especificos (y no para toda una red como es el caso tipico para los resource nfs)
Atento a sus indicaciones y agradecido
Adolfo
Hola, la guía tiene ya casi 3 años, es bueno que alguien le sirva aun. Puedes crear el fencing antes o después, eso no es problema. En NFS tienes que indicar el rango de ip que tendrá permisos y la ip donde funcionara el recurso NFS. En redhat hay un ejemplo: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/High_Availability_Add-On_Administration/s1-resourcegroupcreatenfs-HAAA.html
BorrarLamentablemente ya no tengo ambientes de pruebas. Saludos