Configuración de la disponibilidad en una única granja de servidores mediante la creación de reflejo de la base de datos de SQL Server
En este artículo se describe cómo usar la creación de reflejo de la base de datos de alta disponibilidad para configurar la disponibilidad dentro de una granja de servidores de Microsoft Office SharePoint Server 2007. Se supone que está familiarizado con los conceptos y la terminología que se presentan en Planeación de la disponibilidad (Office SharePoint Server).
La creación de reflejo de la base de datos de Microsoft SQL Server 2005 proporciona compatibilidad con la disponibilidad mediante el envío de transacciones directamente desde una base de datos y un servidor principales a una base de datos y un servidor reflejados, cada vez que el búfer de registro de transacciones de la base de datos principal se escriba en el disco. Para la disponibilidad dentro de una granja de servidores de Office SharePoint Server 2007, se recomienda usar la creación de reflejo de la base de datos alta disponibilidad, también denominado modo de alta seguridad con conmutación automática por error. La creación de reflejo de la base de datos de alta disponibilidad implica tres instancias de servidor: principal, reflejado y testigo. El servidor testigo permite a SQL Server conmutar por error automáticamente desde el servidor principal al servidor reflejado. La conmutación por error desde el servidor principal al servidor reflejado suele tardar varios segundos.
Dentro de una granja de servidores de SharePoint, la creación de reflejo puede proporcionar redundancia para todas las bases de datos: cuando las bases de datos conmutan por error, se supone que los servidores cliente web permanecen disponibles. En la siguiente ilustración se muestra cómo está configurada la creación de reflejo para ofrecer alta disponibilidad dentro de una granja de servidores.
Office SharePoint Server 2007 no es compatible con la creación de reflejo. Para usar la creación de reflejo como una solución de disponibilidad, se recomienda configurar las bases de datos para que usen alias de cliente de SQL Server y ejecuten scripts que cambien los alias de cliente de SQL Server durante la conmutación por error.
Requisitos para la creación de reflejo de la base de datos
Asegúrese de que las bases de datos y el sistema cumplen los siguientes requisitos antes de configurar la creación de reflejo de la base de datos:
Se recomienda que el sistema tenga una latencia inferior a 1 milisegundo.
El ancho de banda del sistema debe ser preferiblemente de 1 gigabyte (GB) por segundo.
Los registros se copian en tiempo real entre los servidores principal y reflejado, y este proceso de copia puede afectar al rendimiento. Asegúrese de que dispone de suficiente memoria y ancho de banda tanto en el servidor principal como en el reflejado.
El servidor principal y el reflejado deben ejecutar la misma edición de Microsoft SQL Server 2005 con Service Pack 1 (SP1). La creación de reflejo de la base de datos está disponible únicamente en las ediciones Standard, Developer y Enterprise. El servidor testigo puede ejecutar cualquier versión de SQL Server 2005, incluida SQL Server 2005 Express Edition.
La creación de reflejo funciona únicamente con las bases de datos que usan el modelo de recuperación completa.
De manera predeterminada, las bases de datos del proveedor de servicios compartidos (SSP) de Office SharePoint Server 2007 se configuran para usar el modelo de recuperación simple. Para configurar la creación de reflejo de la base de datos, el modelo de recuperación de la base de datos debe establecerse en Completa. Para obtener información acerca de cómo configurar el modelo de recuperación para una base de datos, vea el artículo sobre cómo ver o cambiar el modelo de recuperación de una base de datos (SQL Server Management Studio) (https://go.microsoft.com/fwlink/?linkid=132075&clcid=0xC0A).
Si planea reflejar bases de datos del SSP, tenga en cuenta que el tamaño del archivo de registro de transacciones de estas bases de datos puede aumentar mucho. Para solucionarlo, considere la posibilidad de disponer de un plan de recuperación que trunque los registros de transacciones según sea necesario. Para obtener más información, vea el siguiente artículo de Microsoft Knowledge Base acerca de cómo detener el crecimiento inesperado del registro de transacciones de una base de datos de SQL Server (https://go.microsoft.com/fwlink/?linkid=111458&clcid=0xC0A).
En cada sesión de creación de reflejo de la base de datos se crean al menos dos subprocesos por cada base de datos. Asegúrese de que el servidor de base de datos tiene suficientes subprocesos para asignarlos en la creación de reflejo de todas las bases de datos compatibles. Si no tiene suficientes subprocesos, el rendimiento irá empeorando progresivamente a medida que vaya agregando más bases de datos a una sesión.
Para el entorno de hospedaje en Microsoft, se ha descubierto que el número máximo práctico para las bases de datos reflejadas de una única instancia de SQL Server que hospeda Productos y Tecnologías de SharePoint es de 50 bases de datos. Este máximo se basa en la intensidad de recursos de la creación de reflejo (cada instancia principal e instancia reflejada requieren subprocesos dedicados) y las pruebas. Los resultados pueden variar, en función de los siguientes factores:
Memoria de las instancias principal y reflejada
Eficacia de procesamiento de las instancias principal y reflejada
Ancho de banda de los subsistemas de E/S en las instancias principal y reflejada
Cantidad de registros de transacciones que genera la carga de trabajo de cada base de datos
Ancho de banda de red entre las instancias principal y reflejada
Para obtener más información acerca del rendimiento y la escala para la creación de reflejo de la base de datos, vea el artículo sobre la creación de reflejo de la base de datos en SQL Server 2005 (en inglés) (https://go.microsoft.com/fwlink/?linkid=83566&clcid=0xC0A) (en inglés).
Seguridad asociada a la creación de reflejo de la base de datos
La creación de reflejo de la base de datos usa sesiones de TCP para transportar el registro de transacciones de un servidor a otro y para supervisar el mantenimiento actual del sistema para las conmutaciones automáticas por error. La autenticación se realiza en el nivel de sesión, donde se abre un puerto para la conexión.
Autenticación de Windows (NTLM o Kerberos)
Certificados
En este documento se describe cómo usar la creación de reflejo de la base de datos con certificados. Para obtener información acerca de cómo usar la autenticación de Windows con la creación de reflejo de la base de datos, vea el artículo que muestra un ejemplo de configuración de la creación de reflejo de la base de datos mediante la autenticación de Windows (Transact-SQL) (https://go.microsoft.com/fwlink/?linkid=83567&clcid=0xC0A).
A menos que la red sea segura, los datos que se transmiten durante la sesión deberán cifrarse. En este documento se describe cómo configurar el cifrado de los datos transmitidos por el cable mediante el uso de RC4, aunque la creación de reflejo de la base de datos es compatible con los algoritmos de cifrado AES y RC4. Para obtener más información acerca de la seguridad asociada a la creación de reflejo de la base de datos, vea el artículo sobre la seguridad de transporte de la creación de reflejo de la base de datos (https://go.microsoft.com/fwlink/?linkid=83569&clcid=0xC0A).
Seguridad de SharePoint y servidores reflejados
Cuando se configura una base de datos reflejada, los inicios de sesión y los permisos de SQL Server para la base de datos que se usará con una granja de servidores de SharePoint no se configuran automáticamente en las bases de datos maestra y msdb en el servidor reflejado. En su lugar, debe configurar los permisos para los inicios de sesión necesarios, entre los que se incluyen, pero sin limitaciones, los siguientes:
La cuenta del grupo de aplicaciones de Administración central debe pertenecer a las funciones fijas de servidor dbcreator y securityadmin.
Todas las cuentas del grupo de aplicaciones y los servicios de búsqueda, así como las cuentas predeterminadas de acceso al contenido, deben tener inicios de sesión de SQL Server, aunque no estén asignadas a la función fija de servidor o a la función fija de base de datos de SQL Server.
Los miembros del grupo de administradores de la granja de servidores de SharePoint también deben tener inicios de sesión de SQL Server y deben pertenecer a las mismas funciones que la cuenta del grupo de aplicaciones de Administración central.
Se recomienda transferir los inicios de sesión y los permisos del servidor principal al reflejado mediante la ejecución de un script. Puede obtener un script de ejemplo en el artículo 918992 de Knowledge Base sobre cómo transferir los inicios de sesión y las contraseñas entre instancias de SQL Server 2005 (https://go.microsoft.com/fwlink/?linkid=122053&clcid=0xC0A). Para obtener información general acerca de cómo transferir los metadatos de SQL Server entre instancias, vea el artículo de los Libros en pantalla de SQL Server acerca de la administración de los metadatos cuando una base de datos pasa a estar disponible en otra instancia de servidor (https://go.microsoft.com/fwlink/?linkid=122055&clcid=0xC0A).
Topologías recomendadas
Se recomienda mantener una asignación de uno a uno de un servidor principal a un servidor reflejado para asegurar la compatibilidad con Productos y Tecnologías de SharePoint.
Entre las topologías compatibles se incluye la creación de reflejo de todas las bases de datos de contenido, la base de datos de configuración y la base de datos de contenido de Administración central. Además, para Office SharePoint Server se puede reflejar la base de datos del SSP, la base de datos de búsqueda del SSP y las bases de datos de contenido del SSP.
En las siguientes ilustraciones se muestran algunas topologías compatibles.
Evite las topologías que no tenga servidores principal y reflejado que coincidan. Además, debe mantener la base de datos de configuración y la base de datos de contenido de administración en el mismo servidor. En el siguiente diagrama se muestra una topología no compatible.
Configuración de alias de conexión de SQL Server
Un alias de conexión de SQL Server es un nombre alternativo definido que sirve para conectarse a una instancia de SQL Server. En el caso de Productos y Tecnologías de SharePoint, se puede crear un alias de SQL Server que pueden usar todos los servidores (incluidos los servidores cliente web) para conectarse a la instancia de SQL Server. Cuando un servidor de base de datos reflejado conmuta por error, se debe ajustar el alias del servidor cliente web para que señale al servidor reflejado, en lugar de al servidor principal. Se recomienda establecer los alias de conexión de SQL Server antes de implementar la creación de reflejo.
Nota
Si va a configurar los alias para una granja de servidores existente, use un alias que tenga el mismo nombre que el servidor principal para no tener que realizar cambios a los servidores cliente web para comenzar a usar el alias.
Siga estos pasos en cada servidor cliente web y cada servidor que se conecte a SQL Server.
Inicie la herramienta de red SQL Server Native Client (%SYSTEM%\cliconfg.exe).
Haga clic en la ficha Alias y elija Agregar.
Se muestra el cuadro de diálogo Agregar configuración de biblioteca de red.
Seleccione TCP/IP, escriba un alias, escriba el nombre de servidor que se va a asociar al alias y haga clic en Aceptar.
Repita este proceso para todos los servidores que se conecten a SQL Server.
Configuración de la creación de reflejo de la base de datos
En esta sección se describe cómo usar Transact-SQL para configurar la creación de reflejo de la base de datos en modo de alta disponibilidad para una base de datos de SQL Server.
Para configurar la creación de reflejo de la base de datos con Productos y Tecnologías de SharePoint, debe hacerlo individualmente en cada base de datos que desee reflejar.
Los pasos que se describen en la siguiente sección pertenecen a la siguiente topología de granja de servidores:
Uno o varios servidores cliente web
Tres servidores que ejecutan SQL Server 2005: principal, reflejado y testigo
Una base de datos de configuración
Varias bases de datos de contenido
Una o varias bases de datos del SSP
Configuración de la creación de reflejo de la base de datos con certificados y recuperación completa
Cada paso indica el servidor en el que se debe realizar. Use Transact-SQL para enviar estos comandos a SQL Server. La información de marcadores de posición se indica mediante corchetes angulares (<>) y se debe reemplazar con información específica para la implementación.
Configuración del servidor principal para conexiones salientes
En el servidor principal, cree un certificado y abra un puerto para la creación de reflejo.
--On master database, create the database Master Key, if needed CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<test1234->'; GO -- Make a certificate for this server instance. USE master; CREATE CERTIFICATE <MASTER_HostA_cert> WITH SUBJECT = '<Master_HostA certificate>'; GO --Create mirroring endpoint for server instance using the certificate CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE <MASTER_HostA_cert> , ENCRYPTION = REQUIRED ALGORITHM RC4 , ROLE = ALL ); GO
En el servidor principal, haga una copia de seguridad del certificado.
--Back up HOST_A certificate. BACKUP CERTIFICATE MASTER_HostA_cert TO FILE = '<c:\MASTER_HostA_cert.cer>'; GO
En el servidor principal, realice una copia de seguridad de la base de datos. En este ejemplo se usa la base de datos de configuración. Repita este paso para todas las bases de datos.
USE master; --Ensure that SharePoint_Config uses the full recovery model. ALTER DATABASE SharePoint_Config SET RECOVERY FULL; GO USE SharePoint_Config BACKUP DATABASE SharePoint_Config TO DISK = '<c:\SharePoint_Config.bak>' WITH FORMAT GO BACKUP Log SharePoint_Config TO DISK = '<c:\SharePoint_Config_log.bak>' WITH FORMAT GO
Copie el archivo de copia de seguridad en el servidor reflejado. Repita este paso para todas las bases de datos.
Mediante cualquier método de copia segura, copie el archivo de certificado de copia de seguridad (por ejemplo, C:\HOST_HostA_cert.cer) en el servidor reflejado.
En el servidor principal, cree un inicio de sesión y un usuario para el servidor reflejado, asocie el certificado con el usuario y conceda al inicio de sesión permisos de conexión para la asociación.
--Create a login on HOST_A for HOST_B USE master; CREATE LOGIN <HOST_HostB_login> WITH PASSWORD = '<1234-test>'; GO --Create a user for that login. CREATE USER <HOST_HostB_user> FOR LOGIN <HOST_HostB_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <HOST_HostB_cert> AUTHORIZATION <HOST_HostB_user> FROM FILE = '<c:\HOST_HostB_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<HOST_HostB_login>]; GO
Configuración del servidor reflejado para conexiones salientes
En el servidor reflejado, cree un certificado y abra un puerto para la creación de reflejo.
--On master database, create the database Master Key, if needed. USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1234-test>'; GO -- Make a certificate on the HOST_B server instance. CREATE CERTIFICATE <HOST_HostB> WITH SUBJECT = '<HOST_HostB certificate for database mirroring>'; GO --Create a mirroring endpoint for the server instance on HOST_B. CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE <HOST_HostB> , ENCRYPTION = REQUIRED ALGORITHM RC4 , ROLE = ALL ); GO
En el servidor reflejado, haga una copia de seguridad del certificado.
--Back up HOST_B certificate. BACKUP CERTIFICATE <HOST_HostB> TO FILE = '<C:\HOST_HostB_cert.cer>'; GO
Mediante cualquier método de copia segura, copie el archivo de certificado de copia de seguridad (por ejemplo, C:\HOST_HostB_cert.cer) en el servidor principal.
En el servidor reflejado, restaure la base de datos a partir de los archivos de copia de seguridad. En este ejemplo se usa la base de datos de configuración. Repita este paso para todas las bases de datos.
RESTORE DATABASE SharePoint_Config FROM DISK = '<c:\SharePoint_Config.bak>' WITH NORECOVERY GO RESTORE log SharePoint_Config FROM DISK = '<c:\SharePoint_Config_log.bak>' WITH NORECOVERY GO
Configuración del servidor reflejado para conexiones entrantes
En el servidor reflejado, cree un inicio de sesión y un usuario para el servidor principal, asocie el certificado con el usuario y conceda al inicio de sesión permisos de conexión para la asociación.
--Create a login on HOST_B for HOST_A USE master; CREATE LOGIN <MASTER_HostA_login> WITH PASSWORD = '<test1234->'; GO --Create a user for that login. CREATE USER <MASTER_HostA_user> FOR LOGIN <MASTER_HostA_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <MASTER_HostA_cert> AUTHORIZATION <MASTER_HostA_user> FROM FILE = '<c:\MASTER_HostA_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<MASTER_HostA_login>]; GO
Configuración del servidor principal para conexiones entrantes
En el servidor principal, cree un inicio de sesión y un usuario para el servidor reflejado, asocie el certificado con el usuario y conceda al inicio de sesión permisos de conexión para la asociación.
--Create a login on HOST_A for HOST_B USE master; CREATE LOGIN <HOST_HostB_login> WITH PASSWORD = '<1234-test>'; GO --Create a user for that login. CREATE USER <HOST_HostB_user> FOR LOGIN <HOST_HostB_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <HOST_HostB_cert> AUTHORIZATION <HOST_HostB_user> FROM FILE = '<c:\HOST_HostB_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<HOST_HostB_login>]; GO
Configuración de asociados de creación de reflejo
En el servidor principal, configure la asociación de creación de reflejo. En este ejemplo se usa la base de datos de configuración. Repita este paso para todas las bases de datos.
--At HOST_A, set server instance on HOST_B as partner (mirror server). ALTER DATABASE SharePoint_Config SET PARTNER = '<TCP://databasemirror.adatum.com:5024>'; GO
En el servidor reflejado, configure la asociación de creación de reflejo. En este ejemplo se usa la base de datos de configuración. Repita este paso para todas las bases de datos.
--At HOST_B, set server instance on HOST_A as partner (principal server): ALTER DATABASE SharePoint_Config SET PARTNER = '<TCP://databasemaster.adatum.com:5024>'; GO
Configuración de un servidor testigo
Cada paso indica el servidor en el que se debe realizar. Use Transact-SQL para enviar estos comandos a SQL Server. La información de marcadores de posición se indica mediante corchetes angulares (<>) y se debe reemplazar con información específica para la implementación.
En el servidor testigo, configure el certificado y abra el puerto.
--On master database, create the database Master Key, if needed CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1234test->'; GO -- Make a certificate for this server instance. USE master; CREATE CERTIFICATE <WITNESS_HostC_cert> WITH SUBJECT = '<Witness_HostC certificate>'; GO --Create mirroring endpoint for server instance using the certificate CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE <WITNESS_HostC_cert , ENCRYPTION = REQUIRED ALGORITHM RC4 , ROLE = ALL ); GO
En el servidor principal, haga una copia de seguridad del certificado.
--Back up HOST_C certificate BACKUP CERTIFICATE <WITNESS_HostC_cert> TO FILE = '<c:\ WITNESS_HostC_cert.cer>'; GO
Mediante cualquier método de copia segura, copie el archivo de certificado de copia de seguridad (por ejemplo, C:\WITNESS_HOSTC_cert.cer) en el servidor principal y el servidor reflejado.
Mediante cualquier método de copia segura, copie el archivo de certificado de copia de seguridad (por ejemplo, C:\WITNESS_HOSTC_cert.cer) en el servidor principal y el servidor reflejado.
--Create a login on Witness HOST_C for Principal HOST_A USE master; CREATE LOGIN <MASTER_HostA_login> WITH PASSWORD = '<test1234->'; GO --Create a user for that login. CREATE USER <MASTER_HostA_user> FOR LOGIN <MASTER_HostA_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <MASTER_HostA_cert> AUTHORIZATION <MASTER_HostA_user> FROM FILE = '<c:\MASTER_HostA_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<MASTER_HostA_login>]; GO --Create Login for Mirror Host B CREATE LOGIN <HOST_HostB_login> WITH PASSWORD = '<1234-test>'; GO --Create a user for that login. CREATE USER <HOST_HostB_user> FOR LOGIN <HOST_HostB_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <HOST_HostB_cert> AUTHORIZATION <HOST_HostB_user> FROM FILE = '<c:\HOST_HostB_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<HOST_HostB_login>]; GO
En el servidor principal, cree un inicio de sesión y un usuario para el servidor testigo, asocie el certificado con el usuario y conceda al inicio de sesión permisos de conexión para la asociación. Repita este paso para el servidor reflejado.
--Create a login on Master HostA for Witness HostC USE master; CREATE LOGIN <WITNESS_HostC_login> WITH PASSWORD = '<1234test->'; GO --Create a user for that login. CREATE USER <WITNESS_HostC_user> FOR LOGIN <WITNESS_HostC_login>; GO --Associate the certificate with the user CREATE CERTIFICATE <WITNESS_HostC_cert> AUTHORIZATION <WITNESS_HostC_user> FROM FILE = '<c:\WITNESS_HostC_cert.cer>' --do not try to use a network path, SQL Server will give an error about the key not being valid GO --Grant CONNECT permission on the login for the remote mirroring endpoint. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [<WITNESS_HostC_login>]; GO
En el servidor principal, adjunte el servidor testigo. En este ejemplo se usa la base de datos de configuración. Repita este paso para todas las bases de datos.
--Setup the Witness Server ALTER DATABASE SharePoint_Config SET WITNESS = '<TCP://databasewitness.adatum.com:5024>' GO
Transferencia de permisos al servidor reflejado
Cuando se configura una base de datos reflejada, los inicios de sesión y los permisos de SQL Server para la base de datos que se usará con una granja de servidores de SharePoint no se configuran automáticamente en las bases de datos maestra y msdb en el servidor reflejado. En su lugar, debe configurar los permisos para los inicios de sesión necesarios.
Se recomienda transferir los inicios de sesión y los permisos del servidor principal al reflejado mediante la ejecución de un script. Se recomienda usar el script que está disponible en el artículo 918992 de Knowledge Base sobre cómo transferir los inicios de sesión y las contraseñas entre instancias de SQL Server 2005 (https://go.microsoft.com/fwlink/?linkid=122053&clcid=0xC0A).
Supervisión del estado de creación de reflejo
En el servidor testigo, puede usar la siguiente instrucción Transact-SQL para supervisar el estado actual de la creación de reflejo.
SELECT mirroring_role FROM sys.database_mirroring WHERE mirroring_role is not null --If returns a 1, principal, if 2: mirror
Es posible que desee crear una serie de trabajos y alertas de SQL Server para determinar cuál es el servidor principal o un servicio de Windows que ejecute este comando para determinar cuál de los servidores es el principal.
Pasos siguientes
Después de configurar la creación de reflejo, debe crear los scripts que permiten conmutar por error las bases de datos en la granja de servidores. Para obtener más información, vea Conmutación por error y recuperación de bases de datos reflejadas en una única granja de servidores.
SELECT mirroring_role FROM sys.database_mirroring WHERE mirroring_role is not null --If returns a 1, principal, if 2: mirror
Es posible que desee crear una serie de trabajos y alertas de SQL Server para determinar cuál es el servidor principal o un servicio de Windows que ejecute este comando para determinar cuál de los servidores es el principal.
Vea también
Otros recursos
Creación de reflejo de la base de datos en SQL Server 2005 (en inglés)