Configuración de un cluster de ServiceGuard 12 en Linux RedHat 6

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

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 del Cluster

Preparación de la plantilla inicial del cluster:

cmpreparecl -n server1 -n server2 -n server3

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.

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SUSCRÍBETE A PUERTO53

Recibe un email periódico con los artículos más interesantes de Puerto53.com

Antes de suscribirte lee los términos y condiciones. Gracias.

Contenido Relacionado

Artículos Recientes

Deja un comentario

About Author