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:SQL Server en Linux
En esta guía se proporcionan instrucciones para crear un clúster de discos compartidos de dos nodos para SQL Server en SUSE Linux Enterprise Server (SLES). La capa de agrupación en clústeres se basa en SUSE High Availability Extension (HAE) desarrollado sobre Pacemaker.
Nota
A partir de SQL Server 2025 (17.x), no se admite SUSE Linux Enterprise Server (SLES).
Para obtener más información sobre la configuración del clúster, las opciones del agente de recursos y la administración, así como para obtener recomendaciones y ver los procedimientos recomendados, vea SUSE Linux Enterprise High Availability Extension 12 SP5.
Requisitos previos
Para completar el siguiente escenario de un extremo a otro, necesita dos máquinas para implementar el clúster de dos nodos y otro servidor para configurar el recurso compartido de NFS. En los pasos siguientes se describe cómo configurar estos servidores.
Instalación y configuración del sistema operativo en cada nodo del clúster
El primer paso es configurar el sistema operativo en los nodos del clúster. Para este tutorial, use SLES con una suscripción válida para el módulo de alta disponibilidad.
Instalación y configuración de SQL Server en cada nodo de clúster
Instale y configure SQL Server en ambos nodos. Para obtener instrucciones detalladas, vea Guía de instalación de SQL Server en Linux.
Para configurarlos, designe un nodo como principal y el otro como secundario. Use estos términos durante esta guía.
En el nodo secundario, detenga y deshabilite SQL Server. En el siguiente ejemplo se detiene y se deshabilita SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-serverNota
En el momento de la instalación, se genera una clave maestra de servidor (SMK) para la instancia de SQL Server y se coloca en
/var/opt/mssql/secrets/machine-key. En Linux, SQL Server siempre se ejecuta como una cuenta local denominadamssql. Dado que se trata de una cuenta local, su identidad no se comparte entre los nodos. Debe copiar la clave de cifrado del nodo principal en cada nodo secundario para que cada cuenta localmssqlpueda acceder a ella para descifrar el SMK.En el nodo principal, cree un inicio de sesión de SQL Server para Pacemaker y conceda el permiso de inicio de sesión para ejecutar
sp_server_diagnostics. Pacemaker usa esta cuenta para comprobar qué nodo ejecuta SQL Server.sudo systemctl start mssql-serverConéctese a la base de datos de SQL Server
mastercon lasacuenta y ejecute el siguiente script:USE [master]; GO CREATE LOGIN [<loginName>] with PASSWORD = N'<password>'; GRANT VIEW SERVER STATE TO <loginName>;Precaución
La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.
En el nodo principal, detenga y deshabilite SQL Server.
Siga las instrucciones de la documentación de SUSE para configurar y actualizar el archivo “hosts” de cada nodo de clúster. El archivo
hostsdebe incluir la dirección IP y el nombre de cada nodo de clúster.Para comprobar la dirección IP del nodo actual, ejecute:
sudo ip addr showEstablezca el nombre de equipo en cada nodo. Asigne a cada nodo un nombre único que tenga 15 caracteres o menos. Para establecer el nombre de equipo, agréguelo a
/etc/hostnamecon YAST o manualmente.En el ejemplo siguiente se muestra
/etc/hostscon adiciones para dos nodos denominadosSLES1ySLES2.127.0.0.1 localhost 10.128.18.128 SLES1 10.128.16.77 SLES2Todos los nodos de clúster deben tener acceso SSH sin contraseña entre sí. De lo contrario, las herramientas como
hb_report,crm_reporty el Explorador de historial de Hawk solo pueden recopilar datos del nodo local. Si usa un puerto SSH no estándar, use la-Xopción (consulte Otros requisitos y recomendaciones). Por ejemplo, si el puerto SSH es 3479, invoquecrm_reportdel siguiente modo:crm_report -X "-p 3479" [...]Para obtener más información, consulte la guía de administración.
En la sección siguiente, configurará el almacenamiento compartido y moverá los archivos de base de datos a ese almacenamiento.
Configuración del almacenamiento compartido y movimiento de los archivos de base de datos
Puede usar varias soluciones para proporcionar almacenamiento compartido. En este tutorial se muestra cómo configurar el almacenamiento compartido con NFS. Siga los procedimientos recomendados y use Kerberos para proteger NFS:
Si no sigue esta guía, cualquier persona que pueda acceder a la red y suplantar la dirección IP de un nodo SQL puede acceder a los archivos de datos. Como siempre, realice el modelado de amenazas en el sistema antes de usarlo en producción.
Otra opción de almacenamiento es usar el recurso compartido de archivos SMB:
Configuración de un servidor NFS
Para configurar un servidor NFS, vea los pasos siguientes de la documentación de SUSE: Configuring NFS Server (Configuración del servidor NFS).
Configuración de todos los nodos de clúster para conectarse al almacenamiento compartido de NFS
Antes de configurar el cliente NFS para montar la ruta de acceso de los archivos de base de datos de SQL Server para apuntar a la ubicación de almacenamiento compartido, asegúrese de guardar los archivos de base de datos en una ubicación temporal de forma que pueda copiarlos posteriormente al recurso compartido:
Solo en el nodo principal, guarde los archivos de base de datos en una ubicación temporal. El script siguiente crea un nuevo directorio temporal, copia los archivos de base de datos en el nuevo directorio y quita los archivos de base de datos antiguos. Como SQL Server se ejecuta como el usuario local
mssql, debe asegurarse de que, después de transferir los datos al recurso compartido montado, el usuario local tiene acceso de lectura y escritura al recurso compartido.su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exitConfigure el cliente NFS en todos los nodos de clúster:
Nota
Para conocer los procedimientos recomendados y recomendaciones de SUSE sobre el almacenamiento NFS de alta disponibilidad, consulte Almacenamiento NFS de alta disponibilidad con DRBD y Pacemaker.
En cada nodo, compruebe que SQL Server se inicia correctamente con la nueva ruta de acceso del archivo. En este momento, solo un nodo debe ejecutar SQL Server a la vez. No se pueden ejecutar al mismo tiempo porque ambos intentan acceder a los archivos de datos simultáneamente.
Para evitar que SQL Server se inicie en ambos nodos, use un recurso de clúster del sistema de archivos para asegurarse de que el recurso compartido está montado solo por un nodo a la vez.
Los siguientes comandos inician SQL Server, comprueban el estado y después detienen SQL Server.
sudo systemctl start mssql-server sudo systemctl status mssql-server sudo systemctl stop mssql-server
En este momento, ambas instancias de SQL Server están configuradas para ejecutarse con los archivos de base de datos en el almacenamiento compartido. El siguiente paso consiste en configurar SQL Server para Pacemaker.
Instalación y configuración de Pacemaker en todos los nodos del clúster
En ambos nodos del clúster, cree un archivo para almacenar el nombre de usuario y la contraseña de SQL Server para el inicio de sesión de Pacemaker. Con el siguiente comando se crea y rellena este archivo:
sudo touch /var/opt/mssql/secrets/passwd sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<password>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdPrecaución
La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.
Todos los nodos de clúster deben tener acceso entre sí a través de SSH. Las herramientas como
hb_reportocrm_report(para solucionar problemas) y el Explorador de historial de Hawk requieren acceso SSH sin contraseña entre los nodos. De lo contrario, solo pueden recopilar datos del nodo actual. Si usa un puerto SSH no estándar, use la-Xopción (consulte lamanpágina). Por ejemplo, si el puerto SSH es 3479, invoque conhb_report:crm_report -X "-p 3479" [...]Para más información, vea los requisitos de sistema y recomendaciones en la documentación de SUSE.
Instale la extensión de alta disponibilidad. Para instalar la extensión, siga los pasos descritos en el siguiente artículo de SUSE:
Installation and Setup Quick Start (Inicio rápido de instalación y configuración)
Instale el agente de recursos de FCI para SQL Server. Ejecute los siguientes comandos en ambos nodos:
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2017.repo sudo zypper --gpg-auto-import-keys refresh sudo zypper install mssql-server-haConfigure automáticamente el primer nodo. El siguiente paso consiste en configurar un clúster de un nodo en ejecución, para lo cual configuraremos el primer nodo, SLES1. Siga las instrucciones del artículo de SUSE Setting Up the First Node (Configurar el primer nodo).
Cuando acabe, compruebe el estado del clúster con
crm status:crm statusMuestra que un nodo, SLES1, ha sido configurado.
Agregue nodos a un clúster existente. A continuación, una el nodo SLES2 al clúster. Siga las instrucciones del artículo de SUSE Adding the Second Node (Agregar el segundo nodo).
Cuando acabe, compruebe el estado del clúster con crm status. Si agrega correctamente un segundo nodo, la salida es similar al ejemplo siguiente:
2 nodes configured 1 resource configured Online: [ SLES1 SLES2 ] Full list of resources: admin_addr (ocf::heartbeat:IPaddr2): Started SLES1Nota
admin_addr es el recurso de clúster de IP virtual que se configura durante la configuración inicial del clúster de un nodo.
Procedimientos de eliminación. Si necesita quitar un nodo del clúster, use el script de arranque ha-cluster-remove. Para más información, vea Overview of the Bootstrap Scripts (Información general de los scripts de arranque).
Configuración de los recursos de clúster para SQL Server
En los pasos siguientes se explica cómo configurar el recurso de clúster para SQL Server. Personalice los dos valores siguientes:
- Nombre del recurso de SQL Server: nombre de recurso de SQL Server en clúster.
-
Valor del tiempo de espera: el valor del tiempo de espera es la cantidad de tiempo que el clúster espera mientras un recurso se pone en línea. Para SQL Server, este valor representa el tiempo que espera que SQL Server tarde en poner la
masterbase de datos en línea.
Actualice los valores del script siguiente para su entorno. Ejecute el script en un nodo para configurar e iniciar el servicio en clúster.
sudo crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit
Por ejemplo, el siguiente script crea un recurso en clúster de SQL Server denominado mssqlha.
sudo crm configure
primitive mssqlha ocf:mssql:fci op start timeout=60s
colocation admin_addr_mssqlha inf: admin_addr mssqlha
show
commit
exit
Después de confirmar la configuración, SQL Server se inicia en el mismo nodo que el recurso de IP virtual.
Para obtener más información, vea Configuring and Managing Cluster Resources (Command Line) [Configurar y administrar recursos en clúster (línea de comandos)].
Confirme que se ha iniciado SQL Server
Para comprobar que se ha iniciado SQL Server, ejecute el comando crm status:
crm status
En el ejemplo siguiente se muestran los resultados cuando Pacemaker se inicia correctamente como recurso agrupado.
2 nodes configured
2 resources configured
Online: [ SLES1 SLES2 ]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
mssqlha (ocf::mssql:fci): Started SLES1
Administración de recursos de clúster
Para administrar los recursos de clúster, consulte el siguiente artículo de SUSE: Administración de recursos de clúster
Conmutación por error manual
Aunque los recursos están configurados para cambiar automáticamente o migrar a otros nodos del clúster en caso de errores de hardware o software, también puede moverlos manualmente utilizando la GUI de Pacemaker o la línea de comandos.
Use el migrate comando para esta tarea. Por ejemplo, para migrar el recurso sql a un nodo de clúster denominado SLES2, ejecute:
crm resource
migrate mssqlha SLES2
Contenido relacionado
- SUSE Linux Enterprise High Availability Extension - Administration Guide (SUSE Linux Enterprise High Availability Extension: guía de administración)