Configuración de Pacemaker en SUSE Linux Enterprise Server en Azure
Existen dos opciones para configurar un clúster de Pacemaker en Azure. Se puede usar un agente de vallado, que se encarga de reiniciar un nodo con error a través de las API de Azure, o un dispositivo SBD.
El dispositivo SBD requiere al menos una máquina virtual adicional que actúe como servidor de destino iSCSI y proporcione un dispositivo SBD. Estos servidores de destino iSCSI, sin embargo, pueden compartirse con otros clústeres de Pacemaker. La ventaja de usar un dispositivo SBD es que, si ya utiliza dispositivos SBD en un entorno local, no se necesitan cambios en el modo de operar con el clúster de Pacemaker. Puede utilizar hasta tres dispositivos SBD para un clúster de Pacemaker para permitir que un dispositivo SBD deje de estar disponible, por ejemplo durante la aplicación de revisiones del sistema operativo del servidor de destino iSCSI. Si desea utilizar más de un dispositivo SBD por Pacemaker, asegúrese de implementar varios servidores de destino iSCSI y conectar un SBD desde cada servidor de destino iSCSI. Se recomienda usar un dispositivo SBD o tres. Pacemaker no podrá vallar automáticamente un nodo de clúster si solo configura dos dispositivos SBD y uno de ellos no está disponible. Si quiere poder aplicar una barrera cuando un servidor de destino iSCSI esté inactivo, deberá usar tres dispositivos SBD y, por tanto, tres servidores de destino iSCSI, que es la configuración más resistente cuando se usan SBD.
El agente de barrera de Azure no requiere que se implementen máquinas virtuales adicionales.

Importante
Cuando planifique e implemente nodos de clúster de Linux Pacemaker y dispositivos SBD, es esencial para la confiabilidad general de la configuración de clúster completa que el enrutamiento entre las máquinas virtuales involucradas y las máquinas virtuales que hospedan el dispositivo SBD no pasen a través de cualquier otro dispositivo como NVA. En caso contrario, los problemas y eventos de mantenimiento con el NVA pueden tener un impacto negativo en la estabilidad y confiabilidad de la configuración general del clúster. Para evitar estos obstáculos, no defina reglas de enrutamiento de NVA o Reglas de enrutamiento definidas por el usuario que enruten el tráfico entre nodos en clúster y los dispositivos SBD a través de NVA y dispositivos similares al planear e implementar nodos de clúster de Linux Pacemaker y dispositivos SBD.
Vallado de SBD
Siga estos pasos si desea usar un dispositivo SBD como vallado.
Configuración de servidores de destino iSCSI
En primer lugar, debe crear las máquinas virtuales de destino iSCSI. Los servidores de destino iSCSI pueden compartirse con varios clústeres de Pacemaker.
- Implemente nuevas máquinas virtuales SLES 12 SP1 o superior y conéctelas mediante SSH. No es necesario que las máquinas sean grandes. Un tamaño de máquina virtual como Standard_E2s_v3 o Standard_D2s_v3 es suficiente. Asegúrese de usar almacenamiento Premium en el disco del sistema operativo.
Ejecute los siguientes comandos en todas las máquinas virtuales de destino iSCSI.
Actualice SLES.
sudo zypper updateNota
Es posible que tenga que reiniciar el sistema operativo después de actualizarlo.
Quitar paquetes
Para evitar un problema conocido con targetcli y SLES 12 SP3, desinstale los siguientes paquetes. Puede omitir los errores acerca de los paquetes que no se encuentran.
sudo zypper remove lio-utils python-rtslib python-configshell targetcliInstale paquetes de destino iSCSI.
sudo zypper install targetcli-fb dbus-1-pythonHabilite el servicio de destino iSCSI.
sudo systemctl enable targetcli sudo systemctl start targetcli
Creación de dispositivo iSCSI en el servidor de destino iSCSI.
Ejecute los siguientes comandos en todas las máquinas virtuales de destino iSCSI para crear los discos iSCSI para los clústeres utilizados por los sistemas SAP. En el ejemplo siguiente, se crean dispositivos SBD para varios clústeres. Se muestra cómo se podría usar un servidor de destino iSCSI para varios clústeres. Los dispositivos SBD se colocan en el disco del sistema operativo. Asegúrese de que dispone de suficiente espacio.
nfs se usa para identificar el clúster NFS, ascsnw1 se usa para identificar el clúster de NW1, dbnw1 se usa para identificar el clúster de base de datos de NW1, nfs-0 y nfs-1 son los nombres de host de los nodos del nodo NFS, nw1-xscs-0 y nw1-xscs-1 son los nombres de host de los nodos del clúster de ASCS NW1, y nw1-db-0 y nw1-db-1 son los nombres de host de los nodos del clúster de la base de datos. Sustitúyalos por los nombres de host de los nodos del clúster y el SID del sistema SAP.
# Create the root folder for all SBD devices
sudo mkdir /sbd
# Create the SBD device for the NFS server
sudo targetcli backstores/fileio create sbdnfs /sbd/sbdnfs 50M write_back=false
sudo targetcli iscsi/ create iqn.2006-04.nfs.local:nfs
sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/luns/ create /backstores/fileio/sbdnfs
sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/acls/ create iqn.2006-04.nfs-0.local:nfs-0
sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/acls/ create iqn.2006-04.nfs-1.local:nfs-1
# Create the SBD device for the ASCS server of SAP System NW1
sudo targetcli backstores/fileio create sbdascsnw1 /sbd/sbdascsnw1 50M write_back=false
sudo targetcli iscsi/ create iqn.2006-04.ascsnw1.local:ascsnw1
sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/luns/ create /backstores/fileio/sbdascsnw1
sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.nw1-xscs-0.local:nw1-xscs-0
sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.nw1-xscs-1.local:nw1-xscs-1
# Create the SBD device for the database cluster of SAP System NW1
sudo targetcli backstores/fileio create sbddbnw1 /sbd/sbddbnw1 50M write_back=false
sudo targetcli iscsi/ create iqn.2006-04.dbnw1.local:dbnw1
sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/luns/ create /backstores/fileio/sbddbnw1
sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/acls/ create iqn.2006-04.nw1-db-0.local:nw1-db-0
sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/acls/ create iqn.2006-04.nw1-db-1.local:nw1-db-1
# save the targetcli changes
sudo targetcli saveconfig
Puede comprobar si todo se ha configurado correctamente con
sudo targetcli ls
o- / .......................................................................................................... [...]
o- backstores ............................................................................................... [...]
| o- block ................................................................................... [Storage Objects: 0]
| o- fileio .................................................................................. [Storage Objects: 3]
| | o- sbdascsnw1 ................................................ [/sbd/sbdascsnw1 (50.0MiB) write-thru activated]
| | | o- alua .................................................................................... [ALUA Groups: 1]
| | | o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
| | o- sbddbnw1 .................................................... [/sbd/sbddbnw1 (50.0MiB) write-thru activated]
| | | o- alua .................................................................................... [ALUA Groups: 1]
| | | o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
| | o- sbdnfs ........................................................ [/sbd/sbdnfs (50.0MiB) write-thru activated]
| | o- alua .................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
| o- pscsi ................................................................................... [Storage Objects: 0]
| o- ramdisk ................................................................................. [Storage Objects: 0]
o- iscsi ............................................................................................. [Targets: 3]
| o- iqn.2006-04.ascsnw1.local:ascsnw1 .................................................................. [TPGs: 1]
| | o- tpg1 ................................................................................ [no-gen-acls, no-auth]
| | o- acls ........................................................................................... [ACLs: 2]
| | | o- iqn.2006-04.nw1-xscs-0.local:nw1-xscs-0 ............................................... [Mapped LUNs: 1]
| | | | o- mapped_lun0 ............................................................ [lun0 fileio/sbdascsnw1 (rw)]
| | | o- iqn.2006-04.nw1-xscs-1.local:nw1-xscs-1 ............................................... [Mapped LUNs: 1]
| | | o- mapped_lun0 ............................................................ [lun0 fileio/sbdascsnw1 (rw)]
| | o- luns ........................................................................................... [LUNs: 1]
| | | o- lun0 .......................................... [fileio/sbdascsnw1 (/sbd/sbdascsnw1) (default_tg_pt_gp)]
| | o- portals ..................................................................................... [Portals: 1]
| | o- 0.0.0.0:3260 ...................................................................................... [OK]
| o- iqn.2006-04.dbnw1.local:dbnw1 ...................................................................... [TPGs: 1]
| | o- tpg1 ................................................................................ [no-gen-acls, no-auth]
| | o- acls ........................................................................................... [ACLs: 2]
| | | o- iqn.2006-04.nw1-db-0.local:nw1-db-0 ................................................... [Mapped LUNs: 1]
| | | | o- mapped_lun0 .............................................................. [lun0 fileio/sbddbnw1 (rw)]
| | | o- iqn.2006-04.nw1-db-1.local:nw1-db-1 ................................................... [Mapped LUNs: 1]
| | | o- mapped_lun0 .............................................................. [lun0 fileio/sbddbnw1 (rw)]
| | o- luns ........................................................................................... [LUNs: 1]
| | | o- lun0 .............................................. [fileio/sbddbnw1 (/sbd/sbddbnw1) (default_tg_pt_gp)]
| | o- portals ..................................................................................... [Portals: 1]
| | o- 0.0.0.0:3260 ...................................................................................... [OK]
| o- iqn.2006-04.nfs.local:nfs .......................................................................... [TPGs: 1]
| o- tpg1 ................................................................................ [no-gen-acls, no-auth]
| o- acls ........................................................................................... [ACLs: 2]
| | o- iqn.2006-04.nfs-0.local:nfs-0 ......................................................... [Mapped LUNs: 1]
| | | o- mapped_lun0 ................................................................ [lun0 fileio/sbdnfs (rw)]
| | o- iqn.2006-04.nfs-1.local:nfs-1 ......................................................... [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................ [lun0 fileio/sbdnfs (rw)]
| o- luns ........................................................................................... [LUNs: 1]
| | o- lun0 .................................................. [fileio/sbdnfs (/sbd/sbdnfs) (default_tg_pt_gp)]
| o- portals ..................................................................................... [Portals: 1]
| o- 0.0.0.0:3260 ...................................................................................... [OK]
o- loopback .......................................................................................... [Targets: 0]
o- vhost ............................................................................................. [Targets: 0]
o- xen-pvscsi ........................................................................................ [Targets: 0]
Configuración de un dispositivo SBD
Conéctese al dispositivo iSCSI que se creó en el último paso desde el clúster. Ejecute los siguientes comandos en los nodos del clúster nuevo que desea crear. Los elementos siguientes tienen el prefijo [A] : aplicable a todos los nodos, [1] : aplicable solo al nodo 1 o [2] : aplicable solo al nodo 2.
[A] Conexión a los dispositivos iSCSI
En primer lugar, habilite los servicios iSCSI y SBD.
sudo systemctl enable iscsid sudo systemctl enable iscsi sudo systemctl enable sbd[1] Cambio del nombre del iniciador en el primer nodo
sudo vi /etc/iscsi/initiatorname.iscsiCambie el contenido del archivo para que coincida con las ACL que utilizó al crear el dispositivo iSCSI en el servidor de destino iSCSI, por ejemplo para el servidor NFS.
InitiatorName=iqn.2006-04.nfs-0.local:nfs-0[2] Cambio del nombre del iniciador en el segundo nodo
sudo vi /etc/iscsi/initiatorname.iscsiCambie el contenido del archivo para que coincida con las ACL que utilizó al crear el dispositivo iSCSI en el servidor de destino iSCSI.
InitiatorName=iqn.2006-04.nfs-1.local:nfs-1[A] Reinicio del servicio iSCSI
Reinicie ahora el servicio iSCSI para aplicar el cambio.
sudo systemctl restart iscsid sudo systemctl restart iscsiConecte los dispositivos iSCSI. En el ejemplo siguiente, 10.0.0.17 es la dirección IP del servidor de destino iSCSI y 3260 es el puerto predeterminado. iqn.2006-04.nfs.local:nfs es uno de los nombres de destino que aparece cuando se ejecuta el primer comando siguiente (iscsiadm -m discovery).
sudo iscsiadm -m discovery --type=st --portal=10.0.0.17:3260 sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.17:3260 sudo iscsiadm -m node -p 10.0.0.17:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic # If you want to use multiple SBD devices, also connect to the second iSCSI target server sudo iscsiadm -m discovery --type=st --portal=10.0.0.18:3260 sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.18:3260 sudo iscsiadm -m node -p 10.0.0.18:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic # If you want to use multiple SBD devices, also connect to the third iSCSI target server sudo iscsiadm -m discovery --type=st --portal=10.0.0.19:3260 sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.19:3260 sudo iscsiadm -m node -p 10.0.0.19:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automaticAsegúrese de que los dispositivos iSCSI están disponibles y anote el nombre del dispositivo (en el ejemplo siguiente/dev/sde).
lsscsi # [2:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda # [3:0:1:0] disk Msft Virtual Disk 1.0 /dev/sdb # [5:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdc # [5:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdd # [6:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sdd # [7:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sde # [8:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sdfAhora, recupere los identificadores de los dispositivos iSCSI.
ls -l /dev/disk/by-id/scsi-* | grep sdd # lrwxrwxrwx 1 root root 9 Aug 9 13:20 /dev/disk/by-id/scsi-1LIO-ORG_sbdnfs:afb0ba8d-3a3c-413b-8cc2-cca03e63ef42 -> ../../sdd # lrwxrwxrwx 1 root root 9 Aug 9 13:20 /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03 -> ../../sdd # lrwxrwxrwx 1 root root 9 Aug 9 13:20 /dev/disk/by-id/scsi-SLIO-ORG_sbdnfs_afb0ba8d-3a3c-413b-8cc2-cca03e63ef42 -> ../../sdd ls -l /dev/disk/by-id/scsi-* | grep sde # lrwxrwxrwx 1 root root 9 Feb 7 12:39 /dev/disk/by-id/scsi-1LIO-ORG_cl1:3fe4da37-1a5a-4bb6-9a41-9a4df57770e4 -> ../../sde # lrwxrwxrwx 1 root root 9 Feb 7 12:39 /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df -> ../../sde # lrwxrwxrwx 1 root root 9 Feb 7 12:39 /dev/disk/by-id/scsi-SLIO-ORG_cl1_3fe4da37-1a5a-4bb6-9a41-9a4df57770e4 -> ../../sde ls -l /dev/disk/by-id/scsi-* | grep sdf # lrwxrwxrwx 1 root root 9 Aug 9 13:32 /dev/disk/by-id/scsi-1LIO-ORG_sbdnfs:f88f30e7-c968-4678-bc87-fe7bfcbdb625 -> ../../sdf # lrwxrwxrwx 1 root root 9 Aug 9 13:32 /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf -> ../../sdf # lrwxrwxrwx 1 root root 9 Aug 9 13:32 /dev/disk/by-id/scsi-SLIO-ORG_sbdnfs_f88f30e7-c968-4678-bc87-fe7bfcbdb625 -> ../../sdfEl comando presenta tres identificadores de dispositivo para cada dispositivo SBD. Se recomienda utilizar el identificador que empieza por scsi-3, en el ejemplo anterior, esto es
- /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03
- /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df
- /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf
[1] Creación del dispositivo SBD
Use el identificador de dispositivo de los dispositivos iSCSI para crear dispositivos SBD en el primer nodo del clúster.
sudo sbd -d /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03 -1 60 -4 120 create # Also create the second and third SBD devices if you want to use more than one. sudo sbd -d /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf -1 60 -4 120 create[A] Adaptación de la configuración de SBD
Abra el archivo de configuración de SBD.
sudo vi /etc/sysconfig/sbdCambie la propiedad del dispositivo SBD, habilite la integración de Pacemaker y cambie el modo de inicio del SBD.
[...] SBD_DEVICE="/dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03;/dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df;/dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf" [...] SBD_PACEMAKER="yes" [...] SBD_STARTMODE="always" [...]Cree el archivo de configuración de
softdogecho softdog | sudo tee /etc/modules-load.d/softdog.confAhora cargue el módulo.
sudo modprobe -v softdog
Instalación del clúster
Los elementos siguientes tienen el prefijo [A] : aplicable a todos los nodos, [1] : aplicable solo al nodo 1 o [2] : aplicable solo al nodo 2.
[A] Actualice SLES
sudo zypper update[A] Instale el componente, necesario para los recursos del clúster
sudo zypper in socat[A] Instale el componente de azure-lb, necesario para los recursos del clúster
sudo zypper in resource-agentsNota
Compruebe la versión de los agentes de recursos de paquetes y asegúrese de que se cumplen los requisitos de versión mínimos:
- En el caso de SLES 12 SP4/SP5, la versión debe ser al menos resource-agents-4.3.018.a7fb5035-3.30.1.
- En el caso de SLES 15/15 SP1, la versión debe ser al menos resource-agents-4.3.0184.6ee15eb2-4.13.1.
[A] Configurar el sistema operativo
En algunos casos, Pacemaker crea muchos procesos y, por tanto, agota al número de procesos permitidos. En tal caso, un latido entre los nodos del clúster podría producir un error y dar lugar a la conmutación por error de los recursos. Se recomienda aumentar los procesos máximos permitidos al establecer el parámetro siguiente.
# Edit the configuration file sudo vi /etc/systemd/system.conf # Change the DefaultTasksMax #DefaultTasksMax=512 DefaultTasksMax=4096 #and to activate this setting sudo systemctl daemon-reload # test if the change was successful sudo systemctl --no-pager show | grep DefaultTasksMaxReduzca el tamaño de la caché de datos incorrectos. Para más información, consulte Low write performance on SLES 11/12 servers with large RAM (Bajo rendimiento de escritura en servidores SLES 11/12 con RAM grande).
sudo vi /etc/sysctl.conf # Change/set the following settings vm.dirty_bytes = 629145600 vm.dirty_background_bytes = 314572800[A] Configure cloud-netconfig-azure para el clúster de alta disponibilidad
Nota
Compruebe la versión instalada del paquete cloud-netconfig-Azure, para lo que debe ejecutar zypper info cloud-netconfig-azure. Si la versión del entorno es la 1.3 o superior, ya no es necesario suprimir la administración de las interfaces de red por el complemento de red en la nube. Si la versión es inferior a la 1.3, se recomienda actualizar el paquete cloud-netconfig-Azure a la última versión disponible.
Cambia el archivo de configuración de la interfaz de red como se muestra a continuación para evitar que el complemento de la red en la nube quite la dirección IPR virtual (Pacemaker debe controlar la asignación de VIP). Para más información, consulte KB 7023633 de SUSE.
# Edit the configuration file sudo vi /etc/sysconfig/network/ifcfg-eth0 # Change CLOUD_NETCONFIG_MANAGE # CLOUD_NETCONFIG_MANAGE="yes" CLOUD_NETCONFIG_MANAGE="no"[1] Habilite el acceso de SSH
sudo ssh-keygen # Enter file in which to save the key (/root/.ssh/id_rsa): -> Press ENTER # Enter passphrase (empty for no passphrase): -> Press ENTER # Enter same passphrase again: -> Press ENTER # copy the public key sudo cat /root/.ssh/id_rsa.pub[2] Habilite el acceso de SSH
sudo ssh-keygen # Enter file in which to save the key (/root/.ssh/id_rsa): -> Press ENTER # Enter passphrase (empty for no passphrase): -> Press ENTER # Enter same passphrase again: -> Press ENTER # insert the public key you copied in the last step into the authorized keys file on the second server sudo vi /root/.ssh/authorized_keys # copy the public key sudo cat /root/.ssh/id_rsa.pub[1] Habilite el acceso de SSH
# insert the public key you copied in the last step into the authorized keys file on the first server sudo vi /root/.ssh/authorized_keys[A] Instale el paquete de los agentes de barrera, si usa el dispositivo STONITH, basado en el agente de barrera de Azure.
sudo zypper install fence-agentsImportante
La versión instalada de los agentes de barrera del paquete debe ser al menos la 4.4.0 para beneficiarse de los tiempos de conmutación por error rápida con el agente de barrera de Azure, si es necesario delimitar los nodos del clúster. Se recomienda que actualice el paquete, si ejecuta una versión anterior.
[A] Instalación del SDK de Python de Azure
- En SLES 12 SP4 o SLES 12 SP5
# You may need to activate the Public cloud extention first SUSEConnect -p sle-module-public-cloud/12/x86_64 sudo zypper install python-azure-mgmt-compute- En SLES 15 y versiones posteriores
# You may need to activate the Public cloud extention first. In this example the SUSEConnect command is for SLES 15 SP1 SUSEConnect -p sle-module-public-cloud/15.1/x86_64 sudo zypper install python3-azure-mgmt-computeImportante
En función de su tipo de imagen y versión, es posible que tenga que activar la extensión de nube pública para la versión del sistema operativo, antes de poder instalar el SDK de Python de Azure. Para comprobar la extensión, ejecute SUSEConnect ---list-extensions.
Para lograr los tiempos de conmutación por error rápida con el agente de barrera de Azure:- en SLES 12 SP4 o SLES 12 SP5, instale la versión 4.6.2 o posterior del paquete python-azure-mgmt-compute
- en SLES 15.X, instale la versión 4.6.2 del paquete python 3-azure-mgmt-compute, pero no una versión más reciente. Evite la versión 17.0.0-6.7.1 del paquete python 3-azure-mgmt-compute, ya que contiene cambios incompatibles con el agente de barrera de Azure.
[A] Configure la resolución nombres de host
Puede usar un servidor DNS o modificar /etc/hosts en todos los nodos. En este ejemplo se muestra cómo utilizar el archivo /etc/hosts. Reemplace la dirección IP y el nombre de host en los siguientes comandos.
Importante
Si usa nombres de host en la configuración del clúster, es fundamental tener una resolución de nombres de host confiable. Si los nombres no están disponibles, se producirá un error en la comunicación con el clúster y esto puede provocar retrasos en la conmutación por error del clúster. La ventaja de usar /etc/hosts es que el clúster es independiente de DNS, lo que también podría representar un único punto de error.
sudo vi /etc/hostsInserte las siguientes líneas en /etc/hosts. Cambie la dirección IP y el nombre de host para que coincida con su entorno
# IP address of the first cluster node 10.0.0.6 prod-cl1-0 # IP address of the second cluster node 10.0.0.7 prod-cl1-1[1] Instale el clúster
Si usa dispositivos SBD como barreras
sudo ha-cluster-init -u # ! NTP is not configured to start at system boot. # Do you want to continue anyway (y/n)? y # /root/.ssh/id_rsa already exists - overwrite (y/n)? n # Address for ring0 [10.0.0.6] Press ENTER # Port for ring0 [5405] Press ENTER # SBD is already configured to use /dev/disk/by-id/scsi-36001405639245768818458b930abdf69;/dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03;/dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf - overwrite (y/n)? n # Do you wish to configure an administration IP (y/n)? nSi no usa dispositivos SBD como barreras
sudo ha-cluster-init -u # ! NTP is not configured to start at system boot. # Do you want to continue anyway (y/n)? y # /root/.ssh/id_rsa already exists - overwrite (y/n)? n # Address for ring0 [10.0.0.6] Press ENTER # Port for ring0 [5405] Press ENTER # Do you wish to use SBD (y/n)? n #WARNING: Not configuring SBD - STONITH will be disabled. # Do you wish to configure an administration IP (y/n)? n
[2] Agregue un nodo al clúster
sudo ha-cluster-join # ! NTP is not configured to start at system boot. # Do you want to continue anyway (y/n)? y # IP address or hostname of existing node (e.g.: 192.168.1.1) []10.0.0.6 # /root/.ssh/id_rsa already exists - overwrite (y/n)? n[A] Haga que la contraseña de hacluster coincida
sudo passwd hacluster[A] Ajustar la configuración de corosync.
sudo vi /etc/corosync/corosync.confAgregue el siguiente contenido en negrita al archivo si los valores no están ahí o son diferentes. No olvide cambiar el token a 30000 para permitir el mantenimiento con conservación de memoria. Para más información, consulte este artículo para Linux o para Windows.
[...] token: 30000 token_retransmits_before_loss_const: 10 join: 60 consensus: 36000 max_messages: 20 interface { [...] } transport: udpu } nodelist { node { ring0_addr:10.0.0.6 } node { ring0_addr:10.0.0.7 } } logging { [...] } quorum { # Enable and configure quorum subsystem (default: off) # see also corosync.conf.5 and votequorum.5 provider: corosync_votequorum expected_votes: 2 two_node: 1 }Después, reinicie el servicio corosync
sudo service corosync restart
Configuración predeterminada de Pacemaker para SBD
La configuración de esta sección solo es aplicable si se usa SBD STONITH.
- [1] Habilite el uso de un dispositivo STONITH y establezca el retraso de la barrera
sudo crm configure property stonith-timeout=144
sudo crm configure property stonith-enabled=true
# List the resources to find the name of the SBD device
sudo crm resource list
sudo crm resource stop stonith-sbd
sudo crm configure delete stonith-sbd
sudo crm configure primitive stonith-sbd stonith:external/sbd \
params pcmk_delay_max="15" \
op monitor interval="15" timeout="15"
Creación de un dispositivo STONITH de agente de barrera de Azure
Esta sección de la documentación solo es aplicable si usa STONITH, basado en el agente de barrera de Azure. El dispositivo STONITH usa una entidad de servicio para la autorización de Microsoft Azure. Siga estos pasos para crear una entidad de servicio.
- Vaya a https://portal.azure.com.
- Abra la hoja Azure Active Directory
Vaya a Propiedades y anote el identificador del directorio. Se trata del id. de inquilino. - Haga clic en Registros de aplicaciones
- Haga clic en Nuevo registro
- Escriba un nombre y seleccione "Solo las cuentas de este directorio organizativo"
- Seleccione el tipo de aplicación "Web", escriba una dirección URL de inicio de sesión (por ejemplo, http://localhost) y haga clic en Agregar
La dirección URL de inicio de sesión no se usa y puede ser cualquier dirección URL válida - Seleccione Certificados y secretos, y luego haga clic en Nuevo secreto de cliente
- Escriba una descripción para la nueva clave, seleccione "Nunca expira" y haga clic en Agregar
- Anote el valor. Se utiliza como contraseña para la entidad de servicio
- Seleccione Información general. Anote el identificador de la aplicación. Se usa como nombre de usuario de la entidad de servicio.
[1] Creación de un rol personalizado para el agente de barrera
La entidad de servicio no tiene permiso para acceder a los recursos de Azure de forma predeterminada. Debe concedérselos para iniciar y detener (desasignar) todas las máquinas virtuales del clúster. Si no ha creado aún el rol personalizado, puede crearlo mediante PowerShell o la CLI de Azure.
Utilice el siguiente contenido para el archivo de entrada. Debe adaptar el contenido a sus suscripciones; esto es, reemplace c276fc76-9cd4-44c9-99a7-4fd71546436e y e91d47c4-76f3-4271-a796-21b4ecfe3624 por los identificadores de su suscripción. Si solo tiene una suscripción, quite la segunda entrada en AssignableScopes.
{
"Name": "Linux Fence Agent Role",
"description": "Allows to power-off and start virtual machines",
"assignableScopes": [
"/subscriptions/e663cc2d-722b-4be1-b636-bbd9e4c60fd9",
"/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
],
"actions": [
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/powerOff/action",
"Microsoft.Compute/virtualMachines/start/action"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
[A] Asignación del rol personalizado a la entidad de servicio
Asigne el rol personalizado "Rol del agente de barrera de Linux" que se creó en el último capítulo a la entidad de servicio. Deje de utilizar el rol de propietario. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.
Asegúrese de asignar el rol para ambos nodos de clúster.
[1] Cree los dispositivos STONITH
Después de editar los permisos para las máquinas virtuales, puede configurar los dispositivos STONITH en el clúster.
Nota
La opción "pcmk_host_map" SOLO es necesaria en el comando si los nombres de host RHEL y los nombres de máquina virtual de Azure NO son idénticos. Especifique la asignación en el formato hostname:vm-name. Consulte la sección en negrita en el comando.
sudo crm configure property stonith-enabled=true
crm configure property concurrent-fencing=true
# replace the bold string with your subscription ID, resource group of the VM, tenant ID, service principal application ID and password
sudo crm configure primitive rsc_st_azure stonith:fence_azure_arm \
params subscriptionId="subscription ID" resourceGroup="resource group" tenantId="tenant ID" login="application ID" passwd="password" \
pcmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \
op monitor interval=3600 timeout=120
sudo crm configure property stonith-timeout=900
Importante
Las operaciones de supervisión y barrera se deserializan. Como resultado, si hay una operación de supervisión más larga y un evento de barrera simultánea, no habrá ningún retraso en la conmutación por error del clúster debido a la operación de supervisión que ya se está ejecutando.
Sugerencia
El agente de barrera de Azure requiere conectividad saliente a los punto de conexión públicos como se documenta, junto con las posibles soluciones, en Conectividad del punto de conexión público para las máquinas virtuales que usan el ILB estándar.
Configuración de Pacemaker para los eventos programados de Azure
Azure ofrece eventos programados. Se proporcionan eventos programados a través del servicio de metadatos y permiten que la aplicación tenga tiempo para preparar eventos como el apagado de una máquina virtual, la reimplementación de VM, etc. El agente de recursos azure-events supervisa los eventos programados de Azure. Si se detectan eventos y el agente de recursos determina que hay otro nodo de clúster disponible, el agente azure-events colocará el nodo de clúster de destino en modo de espera, con el fin de forzar al clúster a migrar recursos fuera de la máquina virtual con eventos programados de Azure pendientes. Para ello, deben configurarse otros recursos de Pacemaker.
- [A] Asegúrese de que el paquete del agente de azure-events ya está instalado y actualizado.
sudo zypper info resource-agents
- [1] Configure los recursos en Pacemaker.
#Place the cluster in maintenance mode
sudo crm configure property maintenance-mode=true
#Create Pacemaker resources for the Azure agent
sudo crm configure primitive rsc_azure-events ocf:heartbeat:azure-events op monitor interval=10s
sudo crm configure clone cln_azure-events rsc_azure-events
#Take the cluster out of maintenance mode
sudo crm configure property maintenance-mode=false
Nota
Después de configurar los recursos de Pacemaker para el agente de azure-events, cuando coloca el clúster dentro y fuera del modo de mantenimiento, es posible que reciba mensajes de advertencia como estos:
ADVERTENCIA: cib-bootstrap-options: atributo desconocido "hostName_ hostname"
ADVERTENCIA: cib-bootstrap-options: atributo desconocido "azure-events_globalPullState"
ADVERTENCIA: cib-bootstrap-options: atributo desconocido "hostName_ hostname"
Estos mensajes de advertencia pueden ignorarse.
Pasos siguientes
- Planeamiento e implementación de Azure Virtual Machines para SAP
- Implementación de Azure Virtual Machines para SAP
- Implementación de DBMS de Azure Virtual Machines para SAP
- Alta disponibilidad para NFS en máquinas virtuales de Azure en SUSE Linux Enterprise Server
- Alta disponibilidad para SAP NetWeaver en máquinas virtuales de Azure en SUSE Linux Enterprise Server para aplicaciones de SAP
- Para más información sobre cómo establecer la alta disponibilidad y planear la recuperación ante desastres de SAP HANA en Azure Virtual Machines, consulte Alta disponibilidad de SAP HANA en las máquinas virtuales de Azure.