Alta disponibilidad para NFS en máquinas virtuales de Azure en SUSE Linux Enterprise Server
Nota
Se recomienda implementar uno de los servicios NFS propios de Azure: NFS en Azure Files o volúmenes NFS ANF para almacenar datos compartidos en un sistema SAP de alta disponibilidad. Tenga en cuenta que estamos dejando de lado las arquitecturas de referencia de SAP, que usan clústeres NFS.
En este artículo se describe cómo implementar y configurar las máquinas virtuales, instalar el marco de trabajo del clúster e instalar un servidor NFS de alta disponibilidad que se puede usar para almacenar los datos compartidos de un sistema SAP con alta disponibilidad. En esta guía se describe cómo configurar un servidor NFS de alta disponibilidad que se usa en dos sistemas SAP: NW1 y NW2. En los nombres de los recursos (por ejemplo, máquinas virtuales, redes virtuales) del ejemplo se da por supuesto que ha usado la plantilla del servidor de archivos de SAP con el prefijo de recursos prod.
Nota:
Este artículo contiene referencias a términos que Microsoft ya no utiliza. Cuando se eliminen los términos del software, se eliminarán también de este artículo.
Lea primero las notas y los documentos de SAP siguientes:
Nota de SAP 1928533, que incluye:
- La lista de tamaños de máquina virtual de Azure que se admiten para la implementación del software de SAP
- Información importante sobre la capacidad para los tamaños de máquina virtual de Azure
- Software de SAP admitido y combinaciones de sistema operativo y base de datos
- Versión del kernel de SAP requerida para Windows y Linux en Microsoft Azure
La nota de SAP 2015553 enumera los requisitos previos para las implementaciones de software de SAP admitidas por SAP en Azure.
La nota de SAP 2205917 contiene configuraciones recomendadas del sistema operativo para SUSE Linux Enterprise Server para SAP Applications
La nota de SAP 1944799 contiene guías de SAP HANA para SUSE Linux Enterprise Server para SAP Applications
La nota de SAP 2178632 contiene información detallada sobre todas las métricas de supervisión notificadas para SAP en Azure.
La nota de SAP 2191498 incluye la versión de SAP Host Agent necesaria para Linux en Azure.
La nota de SAP 2243692 incluye información acerca de las licencias de SAP en Linux en Azure.
La nota de SAP 1984787 incluye información general sobre SUSE Linux Enterprise Server 12.
La nota de SAP 1999351 contiene más soluciones de problemas de la extensión de supervisión mejorada de Azure para SAP.
La WIKI de la comunidad SAP contiene todas las notas de SAP que se necesitan para Linux.
Planeación e implementación de Azure Virtual Machines para SAP en Linux
Implementación de Azure Virtual Machines para SAP en Linux (este artículo)
Implementación de DBMS de Azure Virtual Machines para SAP en Linux
SUSE Linux Enterprise Server for SAP Applications 12 Guías de procedimientos recomendados de SP5
SUSE Linux Enterprise Server for SAP Applications 12 SP5 Notas de la versión
Información general
Para lograr alta disponibilidad, SAP NetWeaver requiere un servidor NFS. El servidor NFS está configurado en un clúster distinto y lo pueden usar varios sistemas SAP.
El servidor NFS usa un nombre de host virtual dedicado y direcciones IP virtuales para todos los sistemas SAP que usan este servidor NFS. En Azure, se requiere un equilibrador de carga para usar una dirección IP virtual. La configuración presentada muestra un equilibrador de carga con:
- Dirección IP de front-end 10.0.0.4 para NW1
- Dirección IP de front-end 10.0.0.5 para NW2
- Puerto de sondeo 61000 para NW1
- Puerto de sondeo 61001 para NW2
Configuración de un servidor NFS de alta disponibilidad
Implementación manual de Linux mediante Azure Portal
Este documento asume que ya ha implementado un grupo de recursos, Azure Virtual Network y una subred.
Implemente dos máquinas virtuales para servidores NFS. Elija una imagen de SLES adecuada compatible con el sistema SAP. Puede implementar la máquina virtual en cualquiera de las opciones de disponibilidad: conjunto de escalado, zona de disponibilidad o conjunto de disponibilidad.
Configurar Azure Load Balancer
Siga la guía de creación del equilibrador de carga para configurar un equilibrador de carga estándar para una alta disponibilidad del servidor NFS. Durante la configuración del equilibrador de carga, tenga en cuenta los siguientes puntos.
- Configuración de la IP de front-end: cree dos direcciones IP de front-end. Seleccione la misma red virtual y subred que el servidor NFS.
- Grupo de back-end: cree un grupo de back-end y agregue máquinas virtuales de servidor NFS.
- Reglas de entrada: cree dos reglas de equilibrio de carga, una para NW1 y otra para NW2. Siga los mismos pasos para ambas reglas de equilibrio de carga.
- Dirección IP de front-end: selección de IP de front-end
- Grupo de back-end: selección del grupo de back-end
- Comprobación de "Puertos de alta disponibilidad"
- Protocolo: TCP
- Sondeo de estado: cree un sondeo de estado con los detalles siguientes (se aplica tanto para NW1 como para NW2)
- Protocolo: TCP
- Puerto: [por ejemplo: 61000 para NW1, 61001 para NW2]
- Intervalo: 5
- Umbral de sondeo: 2
- Tiempo de espera de inactividad (minutos): 30
- Active "Habilitar IP flotante"
Nota:
No se respeta la propiedad de configuración del sondeo de estado numberOfProbes, también conocida como "umbral incorrecto" en el Portal. Por lo tanto, para controlar el número de sondeos consecutivos correctos o erróneos, establezca la propiedad "probeThreshold" en 2. Actualmente no es posible establecer esta propiedad mediante Azure Portal, por lo que puede usar la CLI de Azure o el comando de PowerShell.
Nota:
Cuando las máquinas virtuales sin direcciones IP públicas se colocan en el grupo de back-end de Standard Load Balancer interno (sin dirección IP pública), no hay conectividad saliente de Internet, a menos que se realice una configuración adicional para permitir el enrutamiento a puntos de conexión públicos. Para obtener más información sobre cómo obtener conectividad saliente, vea Conectividad de punto de conexión público para máquinas virtuales con Azure Standard Load Balancer en escenarios de alta disponibilidad de SAP.
Importante
- No habilite las marcas de tiempo TCP en máquinas virtuales de Azure que se encuentren detrás de Azure Load Balancer. Si habilita las marcas de tiempo TCP provocará un error en los sondeos de estado. Establezca el parámetro
net.ipv4.tcp_timestamps
en0
. Para más información, consulte Sondeos de estado de Load Balancer. - Para evitar que saptune cambie el valor
net.ipv4.tcp_timestamps
establecido manualmente de0
a nuevamente1
, debe actualizar la versión de saptune a la versión 3.1.1 o posterior. Para más información, consulte saptune 3.1.1: ¿Necesito actualizar?
Creación del clúster de Pacemaker
Siga los pasos de Configuración de Pacemaker en SUSE Linux Enterprise Server en Azure para crear un clúster de Pacemaker básico para este servidor NFS.
Configuración del servidor NFS
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] 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
sudo vi /etc/hosts
Inserte 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 load balancer frontend configuration for NFS 10.0.0.4 nw1-nfs 10.0.0.5 nw2-nfs
[A] Habilite el servidor NFS.
Cree la entrada de exportación de raíz NFS
sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports' sudo mkdir /srv/nfs/
[A] Instale los componentes de drbd
sudo zypper install drbd drbd-kmp-default drbd-utils
[A] Cree una partición para los dispositivos drbd.
Enumere todos los discos de datos disponibles.
sudo ls /dev/disk/azure/scsi1/ # Example output # lun0 lun1
Cree particiones para cada disco de datos.
sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0' sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun1'
[A] Cree configuraciones de LVM
Enumere todas las particiones disponibles.
ls /dev/disk/azure/scsi1/lun*-part* # Example output # /dev/disk/azure/scsi1/lun0-part1 /dev/disk/azure/scsi1/lun1-part1
Cree volúmenes LVM para cada partición.
sudo pvcreate /dev/disk/azure/scsi1/lun0-part1 sudo vgcreate vg-NW1-NFS /dev/disk/azure/scsi1/lun0-part1 sudo lvcreate -l 100%FREE -n NW1 vg-NW1-NFS sudo pvcreate /dev/disk/azure/scsi1/lun1-part1 sudo vgcreate vg-NW2-NFS /dev/disk/azure/scsi1/lun1-part1 sudo lvcreate -l 100%FREE -n NW2 vg-NW2-NFS
[A] Configure drbd.
sudo vi /etc/drbd.conf
Asegúrese de que el archivo drbd.conf contenga las siguientes dos líneas:
include "drbd.d/global_common.conf"; include "drbd.d/*.res";
Cambie la configuración de drbd global.
sudo vi /etc/drbd.d/global_common.conf
Agregue las siguientes entradas a la sección de red y controlador.
global { usage-count no; } common { handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh"; split-brain "/usr/lib/drbd/notify-split-brain.sh root"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; } startup { wfc-timeout 0; } options { } disk { md-flushes yes; disk-flushes yes; c-plan-ahead 1; c-min-rate 100M; c-fill-target 20M; c-max-rate 4G; } net { after-sb-0pri discard-younger-primary; after-sb-1pri discard-secondary; after-sb-2pri call-pri-lost-after-sb; protocol C; tcp-cork yes; max-buffers 20000; max-epoch-size 20000; sndbuf-size 0; rcvbuf-size 0; } }
[A] Cree los dispositivos drbd de NFS.
sudo vi /etc/drbd.d/NW1-nfs.res
Inserte la configuración del nuevo dispositivo drbd y salga
resource NW1-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } }
sudo vi /etc/drbd.d/NW2-nfs.res
Inserte la configuración del nuevo dispositivo drbd y salga
resource NW2-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } }
Cree el dispositivo drbd e inícielo
sudo drbdadm create-md NW1-nfs sudo drbdadm create-md NW2-nfs sudo drbdadm up NW1-nfs sudo drbdadm up NW2-nfs
[1] Omita la sincronización inicial
sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
[1] Establezca el nodo principal
sudo drbdadm primary --force NW1-nfs sudo drbdadm primary --force NW2-nfs
[1] Espere hasta que se sincronicen los nuevos dispositivos drbd
sudo drbdsetup wait-sync-resource NW1-nfs sudo drbdsetup wait-sync-resource NW2-nfs
[1] Cree sistemas de archivos en los dispositivos drbd
sudo mkfs.xfs /dev/drbd0 sudo mkdir /srv/nfs/NW1 sudo chattr +i /srv/nfs/NW1 sudo mount -t xfs /dev/drbd0 /srv/nfs/NW1 sudo mkdir /srv/nfs/NW1/sidsys sudo mkdir /srv/nfs/NW1/sapmntsid sudo mkdir /srv/nfs/NW1/trans sudo mkdir /srv/nfs/NW1/ASCS sudo mkdir /srv/nfs/NW1/ASCSERS sudo mkdir /srv/nfs/NW1/SCS sudo mkdir /srv/nfs/NW1/SCSERS sudo umount /srv/nfs/NW1 sudo mkfs.xfs /dev/drbd1 sudo mkdir /srv/nfs/NW2 sudo chattr +i /srv/nfs/NW2 sudo mount -t xfs /dev/drbd1 /srv/nfs/NW2 sudo mkdir /srv/nfs/NW2/sidsys sudo mkdir /srv/nfs/NW2/sapmntsid sudo mkdir /srv/nfs/NW2/trans sudo mkdir /srv/nfs/NW2/ASCS sudo mkdir /srv/nfs/NW2/ASCSERS sudo mkdir /srv/nfs/NW2/SCS sudo mkdir /srv/nfs/NW2/SCSERS sudo umount /srv/nfs/NW2
[A] Configure la detección de cerebro dividido de drbd.
Al usar drbd para sincronizar los datos de un host a otro, puede producirse lo que se conoce como cerebro dividido. Un escenario de cerebro dividido es aquel en el que ambos nodos del clúster promovieron el drbd a principal y perdieron la sincronización. Aunque es una situación poco frecuente, debe controlar y resolver un cerebro dividido lo antes posible. Por lo tanto, es importante recibir una notificación cuando suceda una situación así.
Lea la documentación oficial de drbd para saber cómo configurar una notificación de cerebro dividido.
También es posible recuperarse automáticamente de un escenario de cerebro dividido. Para más información, lea las directivas de recuperación automática de cerebro dividido.
Configuración de la plataforma del clúster
[1] Agregue los dispositivos drbd de NFS del sistema SAP NW1 a la configuración del clúster.
Importante
Pruebas recientes han mostrado situaciones en las que netcat deja de responder a las solicitudes debido al trabajo pendiente y a su limitación para controlar solo una conexión. El recurso netcat deja de escuchar las solicitudes del equilibrador de carga de Azure y la dirección IP flotante deja de estar disponible.
En el caso de los clústeres de Pacemaker existentes, en el pasado se recomendaba reemplazar netcat por socat. Actualmente se recomienda usar el agente de recursos azure-lb, que forma parte de los agentes de recursos de paquetes, con los siguientes requisitos de versión de paquete:- En el caso de SLES 12 SP4/SP5, la versión debe ser, al menos, resource-agents-4.3.018.a7fb5035-3.30.1.
- Para SLES 15/15 SP1, la versión debe ser al menos resource-agents-4.3.0184.6ee15eb2-4.13.1.
Tenga en cuenta que el cambio requerirá un breve tiempo de inactividad.
En el caso de los clústeres de Pacemaker existentes, si la configuración ya se ha cambiado para usar socat, como se describe en Protección de la detección del equilibrador de carga de Azure, no hay ningún requisito para cambiar inmediatamente al agente de recursos de azure-lb.sudo crm configure rsc_defaults resource-stickiness="200" # Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW1_nfs \ ocf:linbit:drbd \ params drbd_resource="NW1-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW1_nfs drbd_NW1_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW1_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd0 \ directory=/srv/nfs/NW1 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive nfsserver systemd:nfs-server \ op monitor interval="30s" sudo crm configure clone cl-nfsserver nfsserver sudo crm configure primitive exportfs_NW1 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW1" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=1 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW1_nfs IPaddr2 \ params ip=10.0.0.4 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW1_nfs azure-lb port=61000 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW1_nfs \ fs_NW1_sapmnt exportfs_NW1 nc_NW1_nfs vip_NW1_nfs sudo crm configure order o-NW1_drbd_before_nfs inf: \ ms-drbd_NW1_nfs:promote g-NW1_nfs:start sudo crm configure colocation col-NW1_nfs_on_drbd inf: \ g-NW1_nfs ms-drbd_NW1_nfs:Master
[1] Agregue los dispositivos drbd de NFS del sistema SAP NW2 a la configuración del clúster.
# Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW2_nfs \ ocf:linbit:drbd \ params drbd_resource="NW2-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW2_nfs drbd_NW2_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW2_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd1 \ directory=/srv/nfs/NW2 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive exportfs_NW2 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW2" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=2 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW2_nfs IPaddr2 \ params ip=10.0.0.5 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW2_nfs azure-lb port=61001 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW2_nfs \ fs_NW2_sapmnt exportfs_NW2 nc_NW2_nfs vip_NW2_nfs sudo crm configure order o-NW2_drbd_before_nfs inf: \ ms-drbd_NW2_nfs:promote g-NW2_nfs:start sudo crm configure colocation col-NW2_nfs_on_drbd inf: \ g-NW2_nfs ms-drbd_NW2_nfs:Master
La opción
crossmnt
de los recursos del clústerexportfs
está presente en nuestra documentación para la compatibilidad con versiones anteriores de SLES.[1] Deshabilite el modo de mantenimiento.
sudo crm configure property maintenance-mode=false
Pasos siguientes
- Instalación de SAP ASCS y la base de datos
- 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
- 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.