Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ Máquinas virtuales Linux
En este artículo se describen escenarios comunes en los que el servicio STONITH Block Device (SBD) no se inicia en un clúster de SUSE Enterprise Linux Pacemaker. En este artículo también se proporcionan instrucciones para identificar y resolver este problema.
Funcionamiento de SBD
Un dispositivo SBD requiere al menos una máquina virtual adicional (VM) que actúa como un servidor de destino de interfaz de sistema de equipos pequeños (iSCSI) de Internet y proporciona un dispositivo SBD. Estos servidores de destino iSCSI también se pueden compartir con otros clústeres de Pacemaker. La ventaja de usar un SBD es que, si ya las usa de forma local, los dispositivos SBD no requieren que cambie cómo funciona el clúster de Pacemaker.
Para un clúster de Microsoft Azure Pacemaker que tenga protección de almacenamiento SBD, puede usar cualquiera de las siguientes opciones para la configuración. Para obtener más información sobre estos mecanismos, consulte:
Diagnóstico del problema
En el ejemplo siguiente se muestra cómo determinar que el problema de inicio del clúster se debe a un error del servicio SBD.
Compruebe el estado del clúster:
sudo crm status
ERROR: status: crm_mon (rc=102): Error: cluster is not available on this node
Compruebe si se inicia el servicio Pacemaker. La siguiente salida de ejemplo indica que se produjo un error en el servicio Pacemaker porque uno o varios servicios dependientes no funcionan:
sudo systemctl status pacemaker
pacemaker.service - Pacemaker High Availability Cluster Manager Loaded: loaded (/usr/lib/systemd/system/pacemaker.service; enabled; vendor preset: disabled) Active: inactive (dead) since Thu 2024-08-01 04:56:39 UTC; 2min 39s ago Docs: man:pacemakerd https://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/1.1/html-single/Pacemaker_Explained/index.html Aug 01 04:59:07 nfs-0 systemd[1]: Dependency failed for Pacemaker High Availability Cluster Manager. Aug 01 04:59:07 nfs-0 systemd[1]: pacemaker.service: Job pacemaker.service/start failed with result 'dependency'.
Compruebe el árbol de servicios de dependencia del servicio Pacemaker:
sudo systemctl list-dependencies pacemaker
pacemaker.service ● ├─corosync.service ● ├─dbus.service ● ├─sbd.service ● ├─system.slice ● ├─resource-agents-deps.target ● └─sysinit.target
Compruebe el estado de cada servicio. En el ejemplo siguiente, puede ver que todos los servicios de dependencia, como Corosync, están activos, pero el servicio SBD no se está ejecutando:
sudo systemctl status corosync
corosync.service - Corosync Cluster Engine Loaded: loaded (/usr/lib/systemd/system/corosync.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2024-08-01 04:49:15 UTC; 38s ago Process: 23972 ExecStop=/usr/share/corosync/corosync stop (code=exited, status=0/SUCCESS) Process: 24075 ExecStart=/usr/share/corosync/corosync start (code=exited, status=0/SUCCESS) Main PID: 24094 (corosync) Tasks: 2 (limit: 4096) CGroup: /system.slice/corosync.service └─24094 corosync Aug 01 04:49:15 nfs-0 corosync[24094]: [TOTEM ] A new membership (10.0.0.6:32) was formed. Members joined: 2 Aug 01 04:49:15 nfs-0 corosync[24094]: [CPG ] downlist left_list: 0 received in state 2 Aug 01 04:49:15 nfs-0 corosync[24094]: [VOTEQ ] Waiting for all cluster members. Current votes: 1 expected_votes: 2 Aug 01 04:49:15 nfs-0 corosync[24094]: [QUORUM] This node is within the primary component and will provide service. Aug 01 04:49:15 nfs-0 corosync[24094]: [QUORUM] Members[2]: 1 2 Aug 01 04:49:15 nfs-0 corosync[24094]: [MAIN ] Completed service synchronization, ready to provide service. Aug 01 04:49:15 nfs-0 corosync[24075]: Starting Corosync Cluster Engine (corosync): [ OK ]
Compruebe el estado del servicio SBD. En este ejemplo, el servicio no se inicia y devuelve un
Failed to start Shared-storage based fencing daemon
mensaje de error:sudo systemctl status sbd
● sbd.service - Shared-storage based fencing daemon Loaded: loaded (/usr/lib/systemd/system/sbd.service; enabled; vendor preset: disabled) Active: failed (Result: timeout) since Thu 2024-08-01 04:59:07 UTC; 3min 3s ago Docs: man:sbd(8) Process: 25251 ExecStart=/usr/sbin/sbd $SBD_OPTS -p //run/sbd.pid watch (code=killed, signal=TERM) Aug 01 04:57:37 nfs-0 systemd[1]: Starting Shared-storage based fencing daemon... Aug 01 04:57:37 nfs-0 sbd[25251]: warning: open_any_device: Failed to open /dev/disk/by-id/scsi-360014056eadbecfeca042d4a66b9d779. Trying any o...ithin 120s Aug 01 04:59:07 nfs-0 systemd[1]: sbd.service: Start operation timed out. Terminating. Aug 01 04:59:07 nfs-0 systemd[1]: Failed to start Shared-storage based fencing daemon. Aug 01 04:59:07 nfs-0 systemd[1]: sbd.service: Unit entered failed state. Aug 01 04:59:07 nfs-0 systemd[1]: sbd.service: Failed with result 'timeout'.
Causa 1: error en el servicio SBD debido a un error iSCSI
El servicio Pacemaker no se está ejecutando y el servicio SBD está en estado de error en ambos nodos de clúster. Los servicios iSCSI usan el nombre calificado (IQN) iSCSI para la comunicación entre el iniciador y los nodos de destino. Los discos SBD pueden ser inaccesibles si no se ejecutan los servicios. Esto, a su vez, hace que se produzca un error en los servicios SBD y Pacemaker.
Solución
- Asegúrese de que la configuración está configurada correctamente como se documenta en SUSE: configure Pacemaker en SUSE Linux Enterprise Server en Azure .
- Coloque el clúster en modo de mantenimiento:
sudo crm configure property maintenance-mode=true
- Asegúrese de que los
iscsid
servicios yiscsi
están habilitados:sudo systemctl enable iscsi
sudo systemctl enable iscsid
- Compruebe que el de
iscsid
yiscsi
los servicios se están ejecutando:sudo systemctl status iscsi
Si los servicios funcionan, la salida debe ser similar a la siguiente:sudo systemctl status iscsid
iscsi.service - Login and scanning of iSCSI devices Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: enabled) Active: active (exited) since Thu 2024-08-01 04:18:51 UTC; 31min ago Docs: man:iscsiadm(8) man:iscsid(8) Main PID: 1823 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 4096) CGroup: /system.slice/iscsi.service Aug 01 04:18:51 nfs-0 systemd[1]: Starting Login and scanning of iSCSI devices... Aug 01 04:18:51 nfs-0 iscsiadm[1823]: Logging in to [iface: default, target: iqn.2006-04.nfs.local:nfs, portal: 10.0.0.17,3260] Aug 01 04:18:51 nfs-0 iscsiadm[1823]: Logging in to [iface: default, target: iqn.2006-04.nfs.local:nfs, portal: 10.0.0.18,3260] Aug 01 04:18:51 nfs-0 iscsiadm[1823]: Logging in to [iface: default, target: iqn.2006-04.nfs.local:nfs, portal: 10.0.0.19,3260] Aug 01 04:18:51 nfs-0 systemd[1]: Started Login and scanning of iSCSI devices.
- Quite el clúster del modo de mantenimiento:
sudo crm configure property maintenance-mode=false
Causa 2: Problemas de configuraciones
Las configuraciones de SBD incorrectas que tienen, por ejemplo, errores de sintaxis o dispositivos SBD con nombre incorrectos pueden provocar un error en el servicio SBD.
Resolución 1
Compruebe que el archivo de configuración de SBD, /etc/sysconfig/sbd
, contiene el parámetro recomendado y los dispositivos SBD correctos:
SBD_PACEMAKER=yes
SBD_STARTMODE=always
SBD_DELAY_START=no
SBD_WATCHDOG_DEV=/dev/watchdog
SBD_WATCHDOG_TIMEOUT=5
SBD_TIMEOUT_ACTION=flush,reboot
SBD_MOVE_TO_ROOT_CGROUP=auto
SBD_OPTS=
SBD_DEVICE="/dev/disk/by-id/scsi-xxxxxxxxxxxxxxxxxx;/dev/disk/by-id/scsi-xxxxxxxxxxxxxxxxx;/dev/disk/by-id/scsi-xxxxxxxxxxxxxxxxxx”
Resolución 2
Ejecute el siguiente comando para comprobar la configuración del recurso STONITH:
sudo crm configure show
primitive stonith-sbd stonith:external/sbd \
params pcmk_delay_max=30s \
op monitor interval="600" timeout="15"
stonith-enabled=true \
stonith-timeout=144 \
Causa 3: los dispositivos iSCSI no están disponibles en los nodos del clúster
Al ejecutar el lscsi
comando o lsblk
, los discos SBD no se muestran en la salida:
sudo lsscsi
[0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda
[0:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb
[1:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdc
[1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdd
sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 512M 0 part /boot/efi
├─sda3 8:3 0 1G 0 part /boot
└─sda4 8:4 0 98.5G 0 part /
sdb 8:16 0 14G 0 disk
└─sdb1 8:17 0 14G 0 part /mnt
sdc 8:32 0 100G 0 disk
└─sdc1 8:33 0 100G 0 part
└─vg--NW1--NFS-NW1 254:0 0 100G 0 lvm
sdd 8:48 0 100G 0 disk
└─sdd1 8:49 0 100G 0 part
└─vg--NW2--NFS-NW2 254:1 0 100G 0 lvm
Solución
Realice las siguientes comprobaciones:
Compruebe el nombre del iniciador en ambos nodos de clúster:
sudo cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2006-04.nfs-0.local:nfs-0
sudo cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2006-04.nfs-1.local:nfs-1
Pruebe a enumerar todos los dispositivos SBD que se mencionan en el archivo de configuración de SBD:
sudo grep SBD_DEVICE /etc/sysconfig/sbd
# SBD_DEVICE specifies the devices to use for exchanging sbd messages SBD_DEVICE="/dev/disk/by-id/scsi-360014056eadbecfeca042d4a66b9d779;/dev/disk/by-id/scsi-36001405cbac988092e448059d25d1a4a;/dev/disk/by-id/scsi-36001405a29a443e4a6e4ceeae822e5eb"
En función del mensaje de error que se proporciona, compruebe si los servidores SBD se ejecutan y son accesibles:
sudo /usr/sbin/sbd -d /dev/disk/by-id/scsi-360014056eadbecfeca042d4a66b9d779 list
== disk /dev/disk/by-id/scsi-360014056eadbecfeca042d4a66b9d779 unreadable! sbd failed; please check the logs.
Para corregir el error, ejecute los pasos siguientes en ambos nodos del clúster para conectarse a los dispositivos iSCSI después de asegurarse de que los servidores SBD están en ejecución y accesibles. En el ejemplo siguiente,
iqn.2006-04.nfs.local:nfs
es el nombre de destino que aparece al ejecutar el primer comando:iscsiadm -m discovery
sudo iscsiadm -m discovery
10.0.0.17:3260 via sendtargets 10.0.0.18:3260 via sendtargets 10.0.0.19:3260 via sendtargets
sudo iscsiadm -m discovery --type=st --portal=10.0.0.17:3260
10.0.0.17:3260,1 iqn.2006-04.dbnw1.local:dbnw1 10.0.0.17:3260,1 iqn.2006-04.ascsnw1.local:ascsnw1 10.0.0.17:3260,1 iqn.2006-04.nfs.local:nfs
sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.17:3260
Logging in to [iface: default, target: iqn.2006-04.nfs.local:nfs, portal: 10.0.0.17,3260] Login to [iface: default, target: iqn.2006-04.nfs.local:nfs, portal: 10.0.0.17,3260] successful.
sudo iscsiadm -m node -p 10.0.0.17:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic
sudo lsscsi
[0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda [0:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb [1:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdc [1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdd [2:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sde
Ejecute los mismos comandos para conectarse al resto de los dispositivos. Además, ejecute el mismo conjunto de comandos en el otro nodo del clúster.
Una vez detectados los dispositivos iSCSI, la salida del comando debe reflejar los dispositivos SBD:
sudo lsscsi
[0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda [0:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb [1:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdc [1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdd [2:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sde [3:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sdf [4:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sdg
sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 512M 0 part /boot/efi ├─sda3 8:3 0 1G 0 part /boot └─sda4 8:4 0 98.5G 0 part / sdb 8:16 0 14G 0 disk └─sdb1 8:17 0 14G 0 part /mnt sdc 8:32 0 100G 0 disk └─sdc1 8:33 0 100G 0 part └─vg--NW1--NFS-NW1 254:0 0 100G 0 lvm sdd 8:48 0 100G 0 disk └─sdd1 8:49 0 100G 0 part └─vg--NW2--NFS-NW2 254:1 0 100G 0 lvm sde 8:64 0 50M 0 disk sdf 8:80 0 50M 0 disk sdg 8:96 0 50M 0 disk
Causa 4: El nodo no se vuelve a unir al clúster después de la barrera
Uno de los nodos no vuelve a unir el clúster después de que finalice el proceso de barrera. SBD está en estado de error y el otro nodo está en estado pendiente.
Resolución 1
Es posible que la ranura SBD no esté en un estado limpio. Por lo tanto, el nodo no puede volver a unir el clúster después de reiniciar una barrera. Para comprobar el estado de SBD, ejecute los siguientes comandos. Si la ranura SBD no está limpia, el estado de SBD muestra reset
:
sudo lsscsi
[0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda
[0:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb
[1:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdc
[1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdd
[2:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sde
[3:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sdf
[4:0:0:0] disk LIO-ORG sbdnfs 4.0 /dev/sdg
sudo ls -l /dev/disk/by-id/scsi-*
sudo sbd -d /dev/sde list
0 nfs-0 clear
1 nfs-1 reset nfs-0
Resolución 2
Compruebe el /etc/sysconfig/sbd
archivo de configuración y compruebe si el SBD_STARTMODE
parámetro está establecido always
en o clean
:
sudo grep -i SBD_STARTMODE /etc/sysconfig/sbd
SBD_STARTMODE=clean
El SBD_STARTMODE
parámetro determina si un nodo puede volver a unir el clúster. Si se establece always
en , el nodo se volverá a unir al clúster aunque se haya cercado anteriormente. Si el parámetro se establece clean
en , el nodo se volverá a unir solo después de que se produzca un estado limpio.
Este comportamiento es normal. SBD detecta un mensaje de barrera en la ranura del nodo e impide que se una al clúster hasta que se borre manualmente el problema.
Para borrar la ranura de nodo, siga estos pasos:
Borre el mensaje de barrera para el nodo local:
sudo sbd -d <SBD_DEVICE> message LOCAL clear
También puede ejecutar el comando desde cualquier nodo del clúster especificando el nombre del nodo en lugar de
LOCAL
:sudo sbd -d <DEVICE_NAME> message <NODENAME> clear
El nombre del nodo que especificó debe ser el nodo cercado y no puede unirse al clúster:
sudo sbd -d /dev/sde message nfs-1 clear
Una vez desactivada la ranura de nodo, debería poder iniciar el servicio de agrupación en clústeres. Si se produce un error en el servicio de nuevo, ejecute los siguientes comandos para corregir el problema:
sudo iscsiadm -m node -u
sudo iscsiadm -m node -l
Nota:
En estos comandos, reemplace <SBD_DEVICE>
y<DEVICE_NAME>
<NODENAME>
por los valores reales por la configuración del clúster.
Causa 5: el servicio SBD no se inicia después de agregar un nuevo dispositivo SBD
Después de crear un dispositivo SBD o agregar uno a un clúster, recibirá un sbd failed; please check the logs
mensaje de error.
Compruebe si recibe mensajes de error al enviar mensajes a dispositivos SBD:
sudo sbd -d /dev/disk/by-id/scsi-360014056eadbecfeca042d4a66b9d779 message node1 test
Si llega a este problema, verá el siguiente error:
sbd failed; please check the logs.
Desde /var/log/messages:
/var/log/messages
Mar 2 06:58:06 node1 sbd[11105]: /dev/disk/by-id/scsi-360014056eadbecfeca042d4a66b9d779: error: slot_msg: slot_msg(): No recipient / cmd specified.
Mar 2 06:58:06 node1 sbd[11104]: warning: messenger: Process 11105 failed to deliver!
Solución
Cuando se usa SBD como dispositivo de barrera y se habilita para un clúster de Pacemaker, los servicios deben administrarse bajo el control del clúster. Por lo tanto, no se pueden iniciar ni detener manualmente. Además, al habilitar un dispositivo SBD o agregarlo al clúster, debe reiniciar el clúster de Pacemaker para que los cambios surtan efecto en el control del clúster:
Reinicie los servicios de clúster en todos los nodos de clúster:
sudo crm cluster stop sudo crm cluster start
Compruebe si el servicio SBD se inicia correctamente:
sudo systemctl status sbd.service
● sbd.service - Shared-storage based fencing daemon Loaded: loaded (/usr/lib/systemd/system/sbd.service; enabled; vendor preset: disabled) Active: active (running)
Compruebe si la lista de dispositivos SBD proporciona la salida deseada:
sudo sbd -d /dev/disk/by-id/scsi-360014056eadbecfeca042d4a66b9d779 list
0 node1 clear 1 node2 clear
Causa 6: SBD no se inicia después de la actualización de SLES 12 a SLES 15
Después de actualizar un sistema SLES 12 a SLES 15, es posible que la información del cliente iSCSI no exista. Esta condición hace que las conexiones a sistemas de archivos remotos a través de iSCSI produzcan un error.
Solución
En SLES 15, el paquete en desuso se reemplazó targetcli-fb
por python3-targetcli-fb
o python2-targetcli-fb
. Esto hace que la información del servicio del sistema se restablezca al valor predeterminado (deshabilitado o detenido). Para resolver el problema, debe habilitar e iniciar manualmente el targetcli
servicio. Para obtener más información, consulte Error de SBD después de la actualización de SLES15.
Pasos siguientes
Para obtener ayuda adicional, abra una solicitud de soporte técnico mediante las instrucciones siguientes. Al enviar la solicitud, adjunte supportconfig y hb_report registros para solucionar problemas.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.