Si has llegado hasta este artículo es porque ya debes saber lo que es un cluster pero, para quien no lo sepa, es un software que permite dar de alta un servicio en un servidor secundario si el principal sufre alguna incidencia. Por ejemplo, otro servidor podría levantar una base de datos.
Se pueden montar clusters de muchas maneras: en un CPD local, con nodos repartidos entre diferentes CPDs, con discos de quorum, con cabinas de quorum, en una sola cabina de discos o en varias, con réplica de discos entre cabinas de diferentes CPDs, etc.
Escenario
En este caso, me ha tocado montar un cluster con el siguiente escenario:
- Tres servidores repartidos en dos CPDs distintos pero compartiendo el mismo rango de red.
- Un servidor de quorum en un tercer CPD.
- El servidor de quorum sirve para que los diferentes nodos del cluster puedan hablarse entre ellos y conocer el estado de cada uno.
- Dos cabinas de discos en dos CPDs diferentes, sin réplica de datos entre ellas.
- El punto anterior conlleva a montar un mirror por software para garantizar la alta disponibilidad a nivel de cabina.
Pre requisitos de configuración
Antes de ponerme a instalar y configurar el cluster de ServiceGuard, primero hay que preparar el sistema operativo.
- Añadir en el fichero /etc/hosts los nombres e IPs de los nodos que van a formar el cluster.
- Configurar el fichero /etc/nsswitch.conf con esta directiva:
hosts: files [NOTFOUND=continue UNAVAIL=continue] dns [NOTFOUND=return UNAVAIL=return]
- Crear una relación de confianza SSH con el usuario root entre los diferentes nodos del cluster. Si no sabes cómo hacerlo, lo explico en el artículo Conexiones seguras con SSH.
- Para evitar problemas indeseados, siempre paro el firewall iptables y el selinux.
- Habilitar el servicio de NTP.
- Configurar el listado de servidores que van a tener acceso al cluster y al servidor de quorum:
[[email protected] conf]# cat cmclnodelist |grep -v "#" |grep -v ^$
+ sgmgr
server1 root
server2 root
server3 root
[[email protected] conf]# pwd
/usr/local/cmcluster/conf
[[email protected] conf]#
Si no se configura este fichero en cada uno de los servidores del cluster, el comando cmquerycl para testear el acceso al servidor de quorum, dará el siguiente error:
Permission denied to 127.0.0.1
Warning: Unable to determine local domain name for lremdox1
ERROR: Node server1 is refusing Serviceguard communication.
Please make sure that the proper security access is configured on node
lremdox1 through either file-based authorization(pre-A.11.16 version) or
access control policies (version A.11.16 or higher)
and/or that the host name lookup on node lremdox1
resolves the IP address correctly.
Please make sure that cmclnodelist on node lremdox1 has entries
for all the nodes in the cluster.
Failed to gather configuration information.
- Solicitar el acceso al servidor de Quorum al que van a acceder los diferentes nodos del cluster. En mi caso, el servidor de quorum no lo administro yo, ya que da servicio a cientos de clusters de diferentes clientes y hay un grupo específico de administrar estos permisos. Con el siguiente comando, si no hay errores, crearemos el fichero de configuracion del cluster /usr/local/cmcluster/conf/cmclconfig.conf.
cmquerycl -v -q gencat-qs1 -n server1 -n server2 -n server3
[[email protected] conf]# cmquerycl -v -q gencat-qs1 -n server1 -n server2 -n server3
Gathering storage information
Gathering network information
Node Names: server1
server2
server3
Bridged networks (no probing was peformed):
IP subnets:
IPv4:
30.32.48.0 eth0 (server1)
eth0 (server2)
bond0 (server3)
10.49.0.0 eth1 (server1)
eth1 (server2)
bond1 (lserver3)
IPv6:
Possible Heartbeat IPs:
IPv4:
30.32.48.0 30.32.48.34 (server1)
30.32.48.45 (server2)
30.32.48.73 (server3)
10.49.0.0 10.49.0.186 (server1)
10.49.0.179 (server2)
10.49.0.220 (server3)
IPv6:
Route Connectivity (no probing was performed):
IPv4:
Possible IP Monitor Subnets:
IPv4:
30.32.48.0 Polling Target 30.32.48.1
10.49.0.0 Polling Target 10.49.0.1
IPv6:
[[email protected] conf]#
- Configurar el bonding de las tarjetas de red. Es lógico pensar que si estás construyendo un cluster, también pienses en la alta disponibilidad a nivel de las tarjetas de red locales. Si no sabes cómo hacerlo, échale un vistazo al artículo Configuración de la red en Linux.
- Solicitud de visibilidad de las LUNs de cabina en todos los nodos del cluster para que cualquier nodo pueda levantar el servicio en caso de necesidad.
- Configuración del multipath, ya que los VGs tendrán que apuntar al nombre que le demos a cada mirror y los mirrors necesitan nombres de discos persistentes.
En el fichero /etc/multipath.con, personalizas el nombre de cada disco, según su WWID. Ejemplo:
multipath {
wwid 360002ac0000000000000006e00015ef9
alias vg2data1_B
}
- Configuración de los mirrors por software con dos LUNs del mismo tamañoo pero de diferentes cabinas de disco (nuestro escenario). De esta manera, si cae una cabina, el servicio lo podemos seguir dando por la otra. Si no sabes cómo hacerlo, lo explico en el artículo Administración del sistema de archivos de Linux.
Eliminamos estos dos ficheros, aunque yo prefiero comprimirlos:
gzip /lib/udev/rules.d/65-md-incremental.rules
gzip /lib/udev/rules.d/64-md-raid.rules
- Crear la estructura de LVM y de filesystems que necesites, apuntando a los mirrors. Una vez creada, en cada nodo ejecutaremos los comandos vgscan y lvscan.
Instalación de ServiceGuard
Esta es la parte más sencilla de todas. En nuestro caso, utilizamos HPE Serviceguard Extended Distance Cluster. En el propio fichero README del producto viene todo lo que tenemos que instalar pero, básicamente son todos los RPMs que trae.
Dependencias previas:
- sg3_utils-1.28-3.el6.x86_64.rpm
- sg3_utils-libs-1.28-3.el6.x86_64.rpm
- authd-1.4.3-30.el6.x86_64.rpm
- jetty-distribution-8.1.16>crimson-1.1.3.17>xml-commons
- mx4j
- Ant
- tog-pegasus
Paquetes del producto:
[[email protected] x86_64]# ll
total 15147
-r-xr-xr-x 1 root root 13824987 Jun 14 2017 serviceguard-A.12.10.00-0.rhel6.x86_64.rpm
-r-xr-xr-x 1 root root 107457 Jun 14 2017 serviceguard-analytics-A.12.10.00-0.rhel6.x86_64.rpm
-r-xr-xr-x 1 root root 1054428 Jun 14 2017 serviceguard-license-A.12.10.00-0.rhel6.x86_64.rpm
-r-xr-xr-x 1 root root 439145 Jun 14 2017 serviceguard-providers-A.12.10.00-0.rhel6.x86_64.rpm
-r-xr-xr-x 1 root root 48690 Jun 14 2017 serviceguard-snmp-A.12.10.00-0.rhel6.x86_64.rpm
-r-xr-xr-x 1 root root 34766 Jun 14 2017 serviceguard-xdc-A.12.10.00-0.rhel6.x86_64.rpm
[[email protected] x86_64]#
Especial importancia al módulo XDC, que es el que se encarga de levantar los mirrors por software que hemos creado anteriormente.
Para finalizar con los pre requisitos, añadimos en el fichero /boot/grub/grub.conf la directiva raid=noautodetec. Sirve para que el sistema operativo no levante automáticamente los mirrors por software. Lo que queremos es que el ServiceGuard levante cada mirror según donde arranquemos cada paquete de servicio.
Instalación de ServiceGuard:
[[email protected] SGLX_12.50]# ./cmeasyinstall -a -n server1 -n server2
Note: This tool will be obsoleted in the upcoming releases. Use "cminstaller" to perform [un]installation.
Operation: Install
Starting passwordless ssh setup between nodes [server1, server2]
If prompted, enter the password and/or add fingerprint to do passwordless ssh setup
Successfully performed passwordless ssh setup between nodes [server1, server2]
***********************************************************************************************************************************************************
Pre-requisite Phase on server1
***********************************************************************************************************************************************************
1.Checking for root permission to execute the tool................................................................................................[Success]
2.Mounted directory Validation....................................................................................................................[Success]
Enter password for sgmgr user creation:
***********************************************************************************************************************************************************
Pre-execution Phase on server1
***********************************************************************************************************************************************************
This may take a while...
1.Checking cluster configuration..................................................................................................................[Success]
2.Checking yum configuration......................................................................................................................[Success]
3.Creating repository SGRPMS......................................................................................................................[Success]
4.Cleaning repositories in yum....................................................................................................................[Success]
5.Checking if yum repositores updated.............................................................................................................[Success]
***********************************************************************************************************************************************************
Execution Phase on server1
***********************************************************************************************************************************************************
Number of RPMs to be installed/upgraded [22 out of 22]
===========================================================================================================================================================
S.No. RPM Status Remarks
===========================================================================================================================================================
1 serviceguard-sybase-toolkit Installed Installed as A.12.30.00
2 serviceguard-extension-for-mss Failed Requires: mssql-tools
ql
Requires: unixODBC
3 serviceguard-kvm-toolkit Installed Installed as A.12.50.00
4 serviceguard-dataguard-toolkit Installed Installed as A.12.50.00
5 serviceguard-oracle-toolkit Installed Installed as A.12.50.00
6 serviceguard-db2-toolkit Installed Installed as A.12.30.00
7 serviceguard-ppas-toolkit Installed Installed as A.12.30.00
8 serviceguard-extension-for-sap Failed Requires: perl(Thread::Queue)
9 serviceguard-manager Installed Installed as B.12.50.00
10 serviceguard-metrocluster-caev Installed Installed as B.12.50.00
ap6000
11 serviceguard-metrocluster-emcs Installed Installed as B.12.50.00
rdf
12 serviceguard-metrocluster-addo Installed Installed as B.12.50.00
ns
13 serviceguard-metrocluster-sadr Installed Installed as B.12.50.00
14 serviceguard-metrocluster-3par Installed Installed as B.12.50.00
rc
15 serviceguard-metrocluster-caxp Installed Installed as B.12.50.00
p9000
16 serviceguard-snmp Installed Installed as A.12.50.00
17 serviceguard-analytics Installed Installed as A.12.50.00
18 serviceguard-xdc Installed Installed as A.12.50.00
19 serviceguard Installed Installed as A.12.50.00
20 serviceguard-license Installed Installed as A.12.40.00
21 serviceguard-nss Installed Installed as A.12.50.00
22 serviceguard-providers Installed Installed as A.12.30.00
Summary: [20 out of 22]
serviceguard-sybase-toolkit.......................................................................................................................[Success]
serviceguard-kvm-toolkit..........................................................................................................................[Success]
serviceguard-dataguard-toolkit....................................................................................................................[Success]
serviceguard-oracle-toolkit.......................................................................................................................[Success]
serviceguard-db2-toolkit..........................................................................................................................[Success]
serviceguard-ppas-toolkit.........................................................................................................................[Success]
serviceguard-manager..............................................................................................................................[Success]
serviceguard-metrocluster-caevap6000..............................................................................................................[Success]
serviceguard-metrocluster-emcsrdf.................................................................................................................[Success]
serviceguard-metrocluster-addons..................................................................................................................[Success]
serviceguard-metrocluster-sadr....................................................................................................................[Success]
serviceguard-metrocluster-3parrc..................................................................................................................[Success]
serviceguard-metrocluster-caxpp9000...............................................................................................................[Success]
serviceguard-snmp.................................................................................................................................[Success]
serviceguard-analytics............................................................................................................................[Success]
serviceguard-xdc..................................................................................................................................[Success]
serviceguard......................................................................................................................................[Success]
serviceguard-license..............................................................................................................................[Success]
serviceguard-nss..................................................................................................................................[Success]
serviceguard-providers............................................................................................................................[Success]
serviceguard-extension-for-mssql...................................................................................................................[Failed]
serviceguard-extension-for-sap.....................................................................................................................[Failed]
***********************************************************************************************************************************************************
Post-execution Phase on server1
***********************************************************************************************************************************************************
+---------------------------------------------------------------------+
| |
| Use of this network is restricted to authorized users only. User |
| activity may be monitored and/or recorded. Anyone using this |
| network expressly consents to such monitoring and/or recording. |
| |
| BE ADVISED: if possible criminal activity is detected, these |
| records, along with certain personal information, may be provided |
| to law enforcement officials. |
| |
+---------------------------------------------------------------------+
1.Removing repository SGRPMS......................................................................................................................[Success]
2.Cleaning repositories in yum.....................................................................................................................[Failed]
WARNING: yum repositories is not cleaned.
3.Checking if yum repositores updated.............................................................................................................[Success]
***********************************************************************************************************************************************************
Pre-execution Phase on server2
***********************************************************************************************************************************************************
This may take a while...
1.Checking cluster configuration..................................................................................................................[Success]
2.Checking yum configuration......................................................................................................................[Success]
3.Creating repository SGRPMS......................................................................................................................[Success]
4.Cleaning repositories in yum....................................................................................................................[Success]
5.Checking if yum repositores updated.............................................................................................................[Success]
***********************************************************************************************************************************************************
Execution Phase on server2
***********************************************************************************************************************************************************
Number of RPMs to be installed/upgraded [22 out of 22]
===========================================================================================================================================================
S.No. RPM Status Remarks
===========================================================================================================================================================
1 serviceguard-manager Installed Installed as B.12.50.00
2 serviceguard-extension-for-mss Failed Requires: mssql-tools
ql
Requires: unixODBC
3 serviceguard-sybase-toolkit Installed Installed as A.12.30.00
4 serviceguard-kvm-toolkit Installed Installed as A.12.50.00
5 serviceguard-db2-toolkit Installed Installed as A.12.30.00
6 serviceguard-ppas-toolkit Installed Installed as A.12.30.00
7 serviceguard-dataguard-toolkit Installed Installed as A.12.50.00
8 serviceguard-oracle-toolkit Installed Installed as A.12.50.00
9 serviceguard-xdc Installed Installed as A.12.50.00
10 serviceguard-nss Installed Installed as A.12.50.00
11 serviceguard Installed Installed as A.12.50.00
12 serviceguard-providers Installed Installed as A.12.30.00
13 serviceguard-license Installed Installed as A.12.40.00
14 serviceguard-analytics Installed Installed as A.12.50.00
15 serviceguard-snmp Installed Installed as A.12.50.00
16 serviceguard-extension-for-sap Failed Requires: perl(Thread::Queue)
17 serviceguard-metrocluster-addo Installed Installed as B.12.50.00
ns
18 serviceguard-metrocluster-caxp Installed Installed as B.12.50.00
p9000
19 serviceguard-metrocluster-caev Installed Installed as B.12.50.00
ap6000
20 serviceguard-metrocluster-3par Installed Installed as B.12.50.00
rc
21 serviceguard-metrocluster-sadr Installed Installed as B.12.50.00
22 serviceguard-metrocluster-emcs Installed Installed as B.12.50.00
rdf
Summary: [20 out of 22]
serviceguard-manager..............................................................................................................................[Success]
serviceguard-sybase-toolkit.......................................................................................................................[Success]
serviceguard-kvm-toolkit..........................................................................................................................[Success]
serviceguard-db2-toolkit..........................................................................................................................[Success]
serviceguard-ppas-toolkit.........................................................................................................................[Success]
serviceguard-dataguard-toolkit....................................................................................................................[Success]
serviceguard-oracle-toolkit.......................................................................................................................[Success]
serviceguard-xdc..................................................................................................................................[Success]
serviceguard-nss..................................................................................................................................[Success]
serviceguard......................................................................................................................................[Success]
serviceguard-providers............................................................................................................................[Success]
serviceguard-license..............................................................................................................................[Success]
serviceguard-analytics............................................................................................................................[Success]
serviceguard-snmp.................................................................................................................................[Success]
serviceguard-metrocluster-addons..................................................................................................................[Success]
serviceguard-metrocluster-caxpp9000...............................................................................................................[Success]
serviceguard-metrocluster-caevap6000..............................................................................................................[Success]
serviceguard-metrocluster-3parrc..................................................................................................................[Success]
serviceguard-metrocluster-sadr....................................................................................................................[Success]
serviceguard-metrocluster-emcsrdf.................................................................................................................[Success]
serviceguard-extension-for-mssql...................................................................................................................[Failed]
serviceguard-extension-for-sap.....................................................................................................................[Failed]
***********************************************************************************************************************************************************
Post-execution Phase on server2
***********************************************************************************************************************************************************
1.Removing repository SGRPMS......................................................................................................................[Success]
2.Cleaning repositories in yum.....................................................................................................................[Failed]
WARNING: yum repositories is not cleaned.
3.Checking if yum repositores updated.............................................................................................................[Success]
***********************************************************************************************************************************************************
Cleanup Phase on server1
***********************************************************************************************************************************************************
Removing passwordless ssh setup between nodes ['server1', 'server2']
1.Removing password-less SSH between nodes[server1, server2]....................................................................................[Success]
INFO: Please refer to the log file /tmp/cmeasyinstall.log on repective nodes.
Please note that latest logs are appended to the log file.
*************** Install completed on all nodes successfully ***************
[[email protected] SGLX_12.50]#
Instalación de la licencia (el comando se ha de ejecutar en todos los nodos del cluster):
[[email protected] ~]# cmsetlicense -i $SGCONF/AutoPass/LicFile.txt.sav
License is successfully installed.
[[email protected] ~]#
[[email protected] ~]# cmgetlicense -f line
node:server1|license_method=PSL
node:server1|license_type=Enterprise
node:server1|total_count=4
node:server1|license_type:Enterprise|count=4
node:server1|license_type:Enterprise|expiry_date=Indefinite
[[email protected] ~]#
Reboot del sistema.
Configuración de un cluster con Veritas Cluster
Configuración del Cluster
Preparación de la plantilla inicial del cluster:
cmpreparecl -n server1 -n server2 -n server3
cmquerycl -v -q quorum-server -n server1 -n server2 -n server3 -C $SGCONF/cmclconfig.conf
Esto crea el fichero /usr/local/cmcluster/conf/cmclconfig.conf, que luego personalizaremos. Un ejemplo:
[[email protected] conf]# grep -v "#" cmclconfig.conf |grep -v ^$
CLUSTER_NAME clsremclrdgpre
HOSTNAME_ADDRESS_FAMILY IPV4
QS_HOST gencat-qs1
QS_POLLING_INTERVAL 300000000
NODE_NAME server1
NETWORK_INTERFACE eth0
HEARTBEAT_IP 30.32.48.34
NETWORK_INTERFACE eth1
HEARTBEAT_IP 10.49.0.186
NODE_NAME server2
NETWORK_INTERFACE eth0
HEARTBEAT_IP 30.32.48.45
NETWORK_INTERFACE eth1
HEARTBEAT_IP 10.49.0.179
NODE_NAME server3
NETWORK_INTERFACE bond0
HEARTBEAT_IP 30.32.48.73
NETWORK_INTERFACE bond1
HEARTBEAT_IP 10.49.0.220
MEMBER_TIMEOUT 30000000
AUTO_START_TIMEOUT 600000000
NETWORK_POLLING_INTERVAL 2000000
SUBNET 30.32.48.0
IP_MONITOR OFF
SUBNET 10.49.0.0
IP_MONITOR OFF
MAX_CONFIGURED_PACKAGES 300
USER_NAME ANY_USER
USER_HOST ANY_SERVICEGUARD_NODE
USER_ROLE MONITOR
[[email protected] conf]#
Chequearemos la configuración del fichero con el comando:
cmcheckconf -v -C /usr/local/cmcluster/conf/cmclconfig.conf
Si no hay errores, aplicaremos la configuración:
cmapplyconf -v -C /usr/local/cmcluster/conf/cmclconfig.conf
Esto genera el binario /usr/local/cmcluster/conf/cmclconfig.
Creación de un paquete de servicio
Una vez creado el cluster, comenzamos a crear los paquetes de servicio. Como comentaba anteriormente, vamos a utilizar el módulo XDC.
mkdir $SGCONF/pkgorarempre/
cmmakepkg -m sg/all -m xdc/xdc SGCONF/pkgorarempre/pkgorarempre.conf
Esto crea una plantilla inicial del paquete de servicio que tenemos que personalizar. Marco en negrita la parte que he personalizado en el siguiente ejemplo:
[[email protected] pkgdataguardpre]# grep -v "#" pkgdataguardpre.conf |grep -v ^$
package_name pkgdataguardpre
package_description "Serviceguard Package"
module_name sg/basic
module_version 1
module_name sg/all
module_version 2
module_name sg/failover
module_version 1
module_name sg/priority
module_version 1
module_name sg/pr_cntl
module_version 2
module_name sg/dependency
module_version 1
module_name sg/weight
module_version 1
module_name sg/monitor_subnet
module_version 1
module_name sg/package_ip
module_version 1
module_name sg/service
module_version 1
module_name sg/generic_resource
module_version 1
module_name sg/volume_group
module_version 1
module_name sg/filesystem
module_version 1
module_name sg/pev
module_version 1
module_name sg/external_pre
module_version 1
module_name sg/external
module_version 1
module_name sg/acp
module_version 1
module_name sg/vmfs
module_version 1
module_name sg/vmfs_validate_end
module_version 1
module_name xdc/xdc
module_version 2
module_name xdc/xdc_val_ctrl
module_version 1
package_type failover
node_name server3
node_name server2
node_name server1
auto_run yes
node_fail_fast_enabled no
run_script_timeout no_timeout
halt_script_timeout no_timeout
successor_halt_timeout no_timeout
script_log_file $SGRUN/log/$SG_PACKAGE.log
operation_sequence $SGCONF/scripts/ext/xdc.sh
operation_sequence $SGCONF/scripts/sg/external_pre.sh
operation_sequence $SGCONF/scripts/sg/vmfs.sh
operation_sequence $SGCONF/scripts/sg/pr_cntl.sh
operation_sequence $SGCONF/scripts/sg/volume_group.sh
operation_sequence $SGCONF/scripts/sg/filesystem.sh
operation_sequence $SGCONF/scripts/ext/xdc_val.sh
operation_sequence $SGCONF/scripts/sg/package_ip.sh
operation_sequence $SGCONF/scripts/sg/external.sh
operation_sequence $SGCONF/scripts/sg/service.sh
operation_sequence $SGCONF/scripts/sg/vmfs_end_val.sh
log_level 3
failover_policy configured_node
failback_policy manual
priority no_priority
monitored_subnet 30.32.48.0
monitored_subnet_access full
monitored_subnet 10.49.0.0
monitored_subnet_access full
ip_subnet 10.49.0.0
ip_address 10.49.0.223
ip_subnet 30.32.48.0
ip_address 30.32.48.56
vgchange_cmd "vgchange -a y"
vxvol_cmd "vxvol -g \${DiskGroup} startall"
vg vgdataguard
vxvm_dg_retry no
deactivation_retry_count 2
kill_processes_accessing_raw_devices no
concurrent_fsck_operations 1
concurrent_mount_and_umount_operations 1
fs_mount_retry_count 0
fs_umount_retry_count 1
fs_name /dev/mapper/vgdataguard-lvora11203
fs_server ""
fs_directory /opt/oracle/app/oracle/product/11.2.0.3/db_3
fs_type "ext4"
fs_mount_opt "-o rw,noatime,nodiratime"
fs_umount_opt ""
fs_fsck_opt ""
fs_name /dev/mapper/vgdataguard-lvoraadminREMDTBRS
fs_server ""
fs_directory /opt/oracle/admin/REMDTBRS
fs_type "ext4"
fs_mount_opt "-o rw,noatime,nodiratime"
fs_umount_opt ""
fs_fsck_opt ""
fs_name /dev/mapper/vgdataguard-lvbddREMDTBRS
fs_server ""
fs_directory /bdd/REMDTBRS
fs_type "ext4"
fs_mount_opt "-o rw,noatime,nodiratime"
fs_umount_opt ""
fs_fsck_opt ""
fs_name /dev/mapper/vgdataguard-lvbddREMDTBRS_ARCH
fs_server ""
fs_directory /bdd/REMDTBRS_ARCH
fs_type "ext4"
fs_mount_opt "-o rw,noatime,nodiratime"
fs_umount_opt ""
fs_fsck_opt ""
external_script /usr/local/cmcluster/conf/pkgorabobpre/external.bash
xdc/xdc/rpo_target 0
xdc/xdc/raid_monitor_interval 30
xdc/xdc/raid_device /dev/md6
xdc/xdc/device_0 /dev/mapper/vg2data2_A
xdc/xdc/device_1 /dev/mapper/vg2data2_B
xdc/xdc/raid_device /dev/md7
xdc/xdc/device_0 /dev/mapper/vg2data1_A
xdc/xdc/device_1 /dev/mapper/vg2data1_B
[[email protected] pkgdataguardpre]#
Chequeamos la sintaxis del fichero:
cmcheckconf -v -P /usr/local/cmcluster/conf/pkgdataguardpre/pkgdataguardpre.conf
Si no hay errores, la aplicamos:
cmapplyconf -v -P /usr/local/cmcluster/conf/pkgdataguardpre/pkgdataguardpre.conf
Esto vuelve a generar el mismo binario que comenté anteriormente y lo distribuye en todos los nodos del cluster.
Por último, arrancamos el cluster:
- cmruncl: Arranca todo el cluster.
- cmrunpkg paquete: Arranca un paquete
- cmhaltpkg: Para un paquete.
- cmmodpkg -n nodo -e paquete: Habilita el auto run de un paquete para que arranque automáticamente en otro nodo del cluster en caso de incidencia.
- cmviewcl: Muestra el estado del cluster:
[[email protected] ~]# cmviewcl
CLUSTER STATUS
clsremclrdgpre up
NODE STATUS STATE
server1 up running
PACKAGE STATUS STATE AUTO_RUN NODE
pkgorabobpre up running enabled server1
NODE STATUS STATE
server2 up running
PACKAGE STATUS STATE AUTO_RUN NODE
pkgorarempre up running enabled server2
NODE STATUS STATE
server3 up running
PACKAGE STATUS STATE AUTO_RUN NODE
pkgdataguardpre up running enabled server3
[[email protected] ~]#
Añadir un nuevo paquete
Un cluster de ServiceGuard puede tener más de un paquete de servicio con sus propias IPs, discos, scripts de arranque de aplicaciones, etc.
Lo que hgo yo siempre que tengo que configurar un paquete nuevo, es:
- Copio el directorio de un paquete ya existente pero con otro nombre (cp -pr /usr/local/cmcluster/conf/paquete1 /usr/local/cmcluster/conf/paquete2).
- Renombro su fichero de configuración (mv paquete1.conf paquete2.conf).
- Edito el fichero de configuración para cambiar:
- El nombre del paquete
- El orden de nodos principal y secundarios
- Las IPs de servicio
- Los mirrors que ha de levantar (si hay mirrors por software)
- Los filesystems y puntos de montaje
- La ruta del script de parada y arranque de servicios (podemos utilizar la plantilla /usr/local/cmcluster/conf/examples/external_script.template para incuir nuestros comandos personalizados de arranque y parada).
- Finalmente, vuelvo a compilar el paquete:
cmcheckconf -v -P /usr/local/cmcluster/conf/paquete2/paquete2.conf
cmapplyconf -v -P /usr/local/cmcluster/conf/paquete2/paquete2.conf
Eliminar un paquete del cluster de ServiceGuard
Si ha llegado el momento de eliminar un paquete de servicio, lo que haremos será lo siguiente:
- Paramos el paquete (cmhaltpkg paquete1).
- Hacemos una copia de seguridad de su configuración, por si acaso.
- Lo eliminamos del cluster:
[[email protected] cmcluster]# cmdeleteconf -p paquete1
Modify the package configuration ([y]/n)? y
Completed the package deletion
[[email protected] cmcluster]# cmviewcl
- Ahora ya podemos despresentar las LUNs en desuso, eliminar los discos del fichero de configuración de multipath, devolver las IPs al equipo de comunicaciones, etc.
Renombrar un paquete de ServiceGuard
No es posible renombrar un paquete de ServiceGuard directamente, si no que el procedimiento consiste en eliminar el paquete, modificar el fichero de configuración con el nuevo nombre y volver a compilarlo.
Actualización de un Cluster de ServiceGuard en Linux RedHat6
No hace mucho tuve actualizar el producto HPE ServiceGuard de 11.20 a 12.10. Esto de tocar los clusters siempre da un poco de respeto, porque son servicios críticos pero, obviamente, hay que ir actualizándose para seguir teniendo soporte del fabricante y disfrutar de las mejoras del producto.
Lo primero que hice en ambos nodos del cluster, fue un backup bootable con REAR. Siempre es bueno tener una copia del servidor.
Como es un cluster con bases de datos Oracle, solicité la parada de la aplicación para dejasen de entrar peticiones en la base de datos y realizar un backup de archivers para poder recuperar la base de datos en caso de catástrofe.
Luego me hice una copia de seguridad de ServiceGuard 11 (/usr/local/cmcluster).
Paro los paquetes de servicio (cmhaltpkg Nombre_del_paquete) y el cluster (cmhaltcl).
Actualizo las dependencias del producto:
lm_sensors
tog-pegasus
authd
krb5-libs
zlib
e2fsprogs-libs (rhel 5)
libblkid (rhel 6)
net-snmp
sg3_utils
sg3_utils-libs
xinetd
libnl (rhel 5 & rhel 6)
libnl1 (rhel 7)
mdadm
udev (rhel 5 & rhel 6)
lsscsi
net-tools
systemd (rhel 7)
dmidecode
Elimino los ficheros /lib/udev/rules.d/64-md-raid.rules y 65-md-incremental.rules para que no arranque los mirrors por software automáticamente con el boot del sistema. En este escenario no hay réplica entre cabinas, si no que hay mirrors por software creadas con mdadm. Lo explico aquí.
Desactivo el autoarranque del cluster con el boot del sistema:
/usr/local/cmcluster/conf/cmcluster.rc
AUTOSTART_CMCLD=0
ServiceGuard 12, tiene como pre requisito, la instalación de Jetty, así que lo instalo:
groupadd -g 52985 jetty
useradd -u 52985 -g jetty -d /home/jetty -s /bin/bash -c "Jetty Server" jetty
chage -E -1 -M -1 jetty
echo ContraseñaSecreta|passwd jetty –stdin
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.9.v20180320/jetty-distribution-9.4.9.v20180320.tar.gz
Descomprimimos el fichero en /opt/jetty
chown jetty:jetty /opt/jetty
Por fin, actualizo el producto ServiceGuard de 11 a 12:
export SGMGR_ENV=Passwordderoot
./cmupgrade -d $PWD -j /opt/jetty
Instalo la licencia que me proporcionaron los comerciales cuando compraron el producto:
cmsetlicense -i $SGCONF/AutoPass/LicFile.txt.sav
Compruebo que se ha instalado correctamente:
# cmgetlicense -f line
node:lremdot3|license_type:Enterprise|license_type=Enterprise
node:lremdot3|license_type:Enterprise|license_count=1
node:lremdot3|license_type:Enterprise|license_valid_for_days=Indefinite
#
Compruebo también que ServiceGuard se ha actualizado:
# cmversion
A.12.10.00
#
Finalmente, arranco el cluster (cmruncl) y hago pruebas de balanceo de los paquetes de servicio para saber que la alta disponibilidad funciona y solicito el arranque de las aplicaciones.