Caso de uso 4: Equilibrio de cargas específico de la base
Una granja de servidores de bases de datos debe tener una carga equilibrada no solo en función del estado de los servidores, sino también en función de la disponibilidad de la base de datos en cada servidor. Es posible que un servicio esté activo y que un dispositivo de equilibrio de carga muestre que está activo, pero es posible que la base de datos solicitada no esté disponible en ese servicio. La solicitud no se atiende si la consulta se reenvía a un servicio en el que la base de datos no está disponible. Por lo tanto, un dispositivo de equilibrio de carga debe conocer la disponibilidad de una base de datos en cada servicio. Además, al tomar una decisión sobre el equilibrio de carga, debe tener en cuenta únicamente los servicios en los que está disponible la base de datos.
Como ejemplo, considere que los servidores de bases de datos server1, server2 y server3 alojan las bases de datos mydatabase1 y mydatabase2. Si mydatabase1 deja de estar disponible en el servidor2, el dispositivo de equilibrio de carga debe estar al tanto de ese cambio de estado. Debe equilibrar la carga de las solicitudes de mydatabase1 solo en el servidor1 y el servidor3. Una vez que mydatabase1 esté disponible en el servidor2, el dispositivo de equilibrio de carga debe incluir el servidor2 en las decisiones de equilibrio de carga. Del mismo modo, si mydatabase2 deja de estar disponible en el servidor3, el dispositivo debe equilibrar la carga de las solicitudes de mydatabase2 únicamente en el servidor1 y el servidor2. Debe incluir server3 en sus decisiones de equilibrio de carga solo cuando mydatabase2 esté disponible. Este comportamiento de equilibrio de carga debe ser coherente en todas las bases de datos alojadas en la granja de servidores.
El dispositivo NetScaler implementa este comportamiento recuperando una lista de todas las bases de datos que están activas en un servicio. Para recuperar la lista de bases de datos activas, el dispositivo utiliza un monitor configurado con una consulta SQL adecuada. Si la base de datos solicitada no está disponible en un servicio, el dispositivo excluye el servicio de las decisiones de equilibrio de carga hasta que esté disponible. Este comportamiento garantiza un servicio ininterrumpido a los clientes.
Nota
德拿督El balanceo de cargas especifico de基地solo se admite para los tipos de servicio MSSQL y MySQL. Este soporte también está disponible para la implementación de alta disponibilidad de Microsoft SQL Server 2012.
Para configurar el equilibrio de carga específico de la base de datos, debe configurar lo siguiente:
- Habilite la función de equilibrio de carga y configure un servidor virtual de equilibrio de carga de tipo MSSQL o MySQL.
- 配置los servicios que alojan la base de datos y vincule los servicios al servidor virtual. El monitor necesita credenciales de usuario válidas para iniciar sesión en el servidor de base de datos, por lo que debe configurar una cuenta de usuario de base de datos en cada uno de los servidores y, a continuación, agregar la cuenta de usuario al dispositivo NetScaler.
- A continuación, configura un monitor MSSQL-ECV o MYSQL-ECV y vincula el monitor a cada servicio.
- Por último, debe probar la configuración para asegurarse de que funciona según lo previsto. Antes de realizar estas tareas de configuración, asegúrese de entender cómo funciona el equilibrio de carga específico de la base de datos.
Cómo funciona el equilibrio de carga específico de bases de datos
Para el equilibrio de carga específico de las bases de datos, configure un monitor que consulte periódicamente a cada servidor de base de datos los nombres de todas las bases de datos activas que contiene. El dispositivo NetScaler almacena los resultados y actualiza periódicamente los registros en función de la información recuperada mediante la supervisión. Cuando un cliente consulta una base de datos determinada, el dispositivo utiliza el método de equilibrio de carga configurado para seleccionar un servicio y, a continuación, comprueba sus registros para determinar si la base de datos está disponible en ese servicio. Si los registros indican que la base de datos no está disponible, utiliza el método de equilibrio de carga configurado para seleccionar el siguiente servicio disponible y, a continuación, repite la comprobación. El dispositivo reenvía la consulta al primer servicio disponible en el que está activa la base de datos.
Habilitar equilibrio de carga
Puede configurar entidades de equilibrio de carga, como servicios y servidores virtuales, cuando la función de equilibrio de carga esté inhabilitada. Las entidades no funcionan hasta que se habilite la función.
Habilite el equilibrio de carga mediante la CLI
En el símbolo del sistema, escriba el siguiente comando para habilitar el equilibrio de carga y verificar la configuración:
enable ns feature LB show ns feature
Ejemplo:
> enable ns feature LoadBalancing Done > show ns feature Feature Acronym Status ------- ------- ------ 1) Web Logging WL OFF 2) Surge Protection SP ON 3) Load Balancing LB ON . . . 24) NetScaler Push push OFF Done
Habilite el equilibrio de carga mediante la interfaz gráfica de usuario
Vaya aSistema > Configuracióny, enConfigurar funciones básicas, seleccioneEquilibrio de carga.
Configurar un servidor virtual de equilibrio de carga para el equilibrio de carga específico de bases de datos
Para configurar un servidor virtual para equilibrar la carga de las bases de datos en función de la disponibilidad, habilite el parámetro de equilibrio de carga específico de la base de datos en el servidor virtual. Al habilitar el parámetro, se modifica la lógica de equilibrio de carga para que el dispositivo NetScaler consulte los resultados de la sonda de monitorización enviada al servicio seleccionado antes de reenviar la consulta a ese servicio.
配置un servidor virtual de equilibrio de carga para el equilibrio de carga específico de bases de datos mediante la CLI
En la línea de comandos, escriba el siguiente comando para configurar un servidor virtual de equilibrio de carga para el equilibrio de carga específico de una base de datos y comprobar la configuración:
add lb vserver -dbsLb ENABLED show lb vserver
Configurar servicios
Después de habilitar la función de equilibrio de carga, debe crear al menos un servicio para cada servidor de aplicaciones que vaya a incluirse en la configuración de equilibrio de carga. Los servicios que configura proporcionan las conexiones entre el dispositivo NetScaler y los servidores de equilibrio de carga. Cada servicio tiene un nombre y especifica una dirección IP, un puerto y el tipo de datos que se proporcionan.
Si crea un servicio sin crear primero un objeto de servidor, la dirección IP del servicio también es el nombre del servidor que aloja el servicio. Si prefiere identificar los servidores por nombre en lugar de por dirección IP, puede crear objetos de servidor y, a continuación, especificar el nombre del servidor en lugar de su dirección IP al crear un servicio.
Configuración de los usuarios de bases
En las bases de datos, una conexión siempre tiene estado, lo que significa que cuando se establece una conexión, se debe autenticar.
配置el nombre de usuario y la contraseña de la base de datos en NetScaler. Por ejemplo, si tiene un usuario John configurado en la base de datos, también debe configurar el usuario John en el ADC. Los nombres de usuario y contraseñas de la base de datos añadidos al ADC se añaden alnsconfig
archivo.
Nota
Los nombres distinguen entre mayúsculas y minúsculas.
El ADC usa estas credenciales de usuario para autenticar los clientes y, a continuación, autenticar las conexiones del servidor con los servidores de bases de datos.
Agregar un usuario de base de datos mediante la CLI
En el símbolo del sistema, escriba:
add db user - password
Ejemplo:
add db user nsdbuser -password dd260427edf
Agregar un usuario de base de datos mediante la interfaz gráfica
Vaya aSistema > Administración de usuarios > Usuarios de bases de datosy configure un usuario de base de datos.
Si ha cambiado la contraseña del usuario de la base de datos en el servidor de base de datos, debe restablecer la contraseña del usuario correspondiente configurado en el dispositivo NetScaler.
Restablecer la contraseña de un usuario de base de datos mediante la CLI
En el símbolo del sistema, escriba:
set db user -password
Ejemplo:
set db user nsdbuser -password dd260538abs
Restablezca la contraseña de los usuarios de la base de datos mediante la interfaz gráfica de usuario
Vaya aSistema > Administración de usuarios > Usuarios de basesde datos, seleccione un usuario e introduzca nuevos valores para la contraseña.
Si el usuario de base de datos ya no existe en el servidor de base de datos, puede eliminarlo del dispositivo NetScaler. Sin embargo, si el usuario sigue existiendo en el servidor de base de datos y usted lo elimina del dispositivo ADC, no se autenticará ninguna solicitud del cliente con este nombre de usuario. Por lo tanto, el nombre de usuario no se enruta al servidor de base de datos.
Eliminar un usuario de base de datos mediante la CLI
En el símbolo del sistema, escriba:
rm db user
Ejemplo:
rm db user nsdbuser
Eliminar un usuario de base de datos mediante la interfaz gráfica de usuario
Vaya aSistema > Administración de usuarios > Usuarios de bases de datos, seleccione un usuario y haga clic enEliminar.
Configurar un monitor para recuperar los nombres de las bases de datos activas
Puede crear un monitor para recuperar la lista de todas las bases de datos activas en una instancia de base de datos. El monitor inicia sesión en el servidor de base de datos mediante credenciales de usuario válidas y ejecuta una consulta SQL adecuada. La consulta SQL que debe utilizar depende de la implementación de SQL Server. Por ejemplo, en una configuración de duplicación de bases de datos de MSSQL, puede utilizar la siguiente consulta para recuperar una lista de bases de datos activas disponibles en una instancia de servidor.
select name from sys.databases where state=0
En una configuración de base de datos MySQL, puede utilizar las siguientes consultas para recuperar una lista de bases de datos activas disponibles en una instancia de servidor.
Mostrar bases de datos:
También configura el monitor para evaluar la respuesta a una condición de error y para almacenar los resultados si no hay ningún error. Si la respuesta contiene un error, el monitor marca el servicio como INACTIVO. El dispositivo excluye el servicio de las decisiones de equilibrio de carga hasta que ya no se devuelva ningún error.
Nota
脂肪酸的de equilibrio de carga especifica de Labase de datos solo se admite para los tipos de servicio MSSQL y MySQL. Por lo tanto, el tipo de monitor debe ser MSSQL-ECV o MYSQL-ECV.
配置un monitor para recuperar los nombres de todas las bases de datos activas alojadas en un servicio mediante la CLI
En la línea de comandos, escriba los siguientes comandos para recuperar los nombres de todas las bases de datos activas alojadas en un servicio y comprobar la configuración:
add lb monitor -userName -sqlQuery -evalRule -storedb ENABLED show lb monitor
配置un monitor para recuperar los nombres de todas las bases de datos activas alojadas en un servicio mediante la interfaz gráfica de usuario
- Vaya aAdministración del tráfico > Equilibrio de carga > Monitoresy configure un monitor de tipo MSSQL-ECV o MYSQL-ECV.
- EnParámetros especiales, especifique un nombre de usuario, una consulta y una regla. Por ejemplo, para MSSQL-ECV, la consulta debe ser “seleccione el nombre de sys.databases donde state=0”) y la regla debe ser MSSQL.RES.TYPE.NE (ERROR). Para MYSQL-ECV, la consulta debe ser “mostrar bases de datos” y la regla debe ser MYSQL.RES.TYPE.NE (ERROR).
Soporte de implementación de grupos de disponibilidad para MSSQL
同样的el siguiente卡索en el, se configurael equilibrio de carga específico de la base de datos en una implementación grupal de alta disponibilidad. Los servicios del S1 al S5 son los servicios del dispositivo ADC. De DB1 a DB4 son las bases de datos de los servidores representadas por los servicios S1 a S5. AV1 y AV2 son los grupos de disponibilidad. Cada grupo de disponibilidad contiene hasta una instancia del servidor de base de datos principal y hasta cuatro instancias del servidor de base de datos secundario. Un servicio, que representa los servidores del grupo de disponibilidad, puede ser principal para un grupo de disponibilidad y secundario para otro grupo de disponibilidad. Cada grupo de disponibilidad contiene diferentes bases de datos y un oyente, que es un servicio. Todas las solicitudes llegan al servicio de escucha que reside en la base de datos principal. AVI contiene las bases de datos DB1 y DB2. AV2 contiene las bases de datos DB3 y DB4. L1 y L2 son los oyentes de AV1 y AV2, respectivamente. S1 es el servicio principal para AV1 y S2 es el servicio principal para AV2.
Servicio | Lista de bases de datos activas en el servicio |
---|---|
S1 | DB1, DB2, DB3, DB4 |
S2 | DB3, DB4 |
S3 | DB3, DB4 |
S4 | DB1, DB2 |
S5 | DB1, DB2 |
Grupo de disponibilidad | Bases de datos | Servicios que representan a los servidores del grupo de disponibilidad |
---|---|---|
AV1 | DB1, DB2 | S1, S4, S5 |
AV2 | DB3, DB4 | S1, S2, S3 |
Las consultas fluyen de la siguiente manera:
- Una consulta READ para AV1 tiene un equilibrio de carga entre S4 y S5. S1 es el principal de AV1.
- Una consulta WRITE para AV1 se dirige a L1.
- Una consulta READ para AV2 tiene un equilibrio de carga entre S1 y S3. S2 es el principal para AV2.
- Una consulta WRITE para AV1 se dirige a L2.
Configuración de ejemplo
- 配置servidores virtuales de equilibrio de carga y conmutación de contenido.
add lb vserver lbwrite -dbslb enabled
add lbvserver lbread MSSQL -dbslb enabled
add csvserver csv MSSQL 1.1.1.10 1433
- 配置dos servicios de escucha, uno para cada grupo de disponibilidad, y cinco servicios S1 a S5 que representen las bases de datos de DB1 a DB4.
add service L1 1.1.1.11 MSSQL 1433
add service L2 1.1.1.12 MSSQL 1433
add service s1 1.1.1.13 MSSQL 1433
add service s2 1.1.1.14 MSSQL 1433
add service s3 1.1.1.15 MSSQL 1433
add service s4 1.1.1.16 MSSQL 1433
add service s5 1.1.1.17 MSSQL 1433
- Enlazar los servicios a los servidores virtuales de equilibrio de carga.
bind lbvserver lbwrite L1
bind lbvserver lbwrite L2
bind lbvserver lbread s1
bind lbvserver lbread s2
bind lbvserver lbread s3
bind lbvserver lbread s4
bind lbvserver lbread s5
- 配置los usuarios de bases de datos.
add db user nsdbuser1 -password dd260427edf
add db user nsdbuser2 -password ccd1234xyzw
- 配置dos monitores, Monitor_L1 y Monitor_L2 para cada servicio de escucha, a fin de recuperar la lista de bases de datos activas en ese grupo de disponibilidad. Agregue un monitor, monitor1, para recuperar la lista de bases de datos de la instancia del servidor de base de datos secundario.
add lb monitor monitor_L1 MSSQL-ECV -userName user1 -sqlQuery "SELECT name FROM sys.databases a INNER JOIN sys.dm_hadr_availability_replica_states b ON a.replica_id=b.replica_id INNER JOIN sys.availability_group_listeners c on b.group_id = c.group_id INNER JOIN sys.availability_group_listener_ip_addresses d on c.listener_id = d.listener_id WHERE b.role = 1 and d.ip_address like '1.1.1.11'" -evalRule "MSSQL.RES.TYPE.NE(ERROR)” –storedb ENABLED
add lb monitor monitor_L2 MSSQL-ECV -userNameuser1 -sqlQuery "SELECT name FROM sys.databases a INNER JOIN sys.dm_hadr_availability_replicca_states b ON a.replica_id=b.replica_id INNER JOIN sys.availability_group_listeners c on b.group_id = c.group_id INNER JOIN sys.availability_group_listener_ip_addresses d on c.listener_id = d.listener_id WHERE b.role = 1 and d.ip_address like '1.1.1.12'" -evalRule "MSSQL.RES.TYPE.NE(ERROR)" -storedb ENABLED
add lb monitor monitor1 MSSQL-ECV -userNameuser1 -sqlQuery "SELECT name FROM sys.databases a INNER JOIN sys.dm_hadr_availability_replica_states b ON a.replica_id=b.replica_id WHERE b.role = 2" -evalRule "MSSQL.RES.TYPE.NE(ERROR)" -storedb ENABLED
- 配置directivas de lectura y escritura.
add cs policy pol_write -rule "MSSQL.REQ.QUERY.TEXT.CONTAINS("insert")"
add cs policy pol_read -rule "MSSQL.REQ.QUERY.TEXT.CONTAINS("select")"
- Enlazar las directivas al servidor virtual de conmutación de contenido.
bind csvserver csv -targetLBVserver lbwrite -policyName pol_write -priority 11
bind csvserver csv -targetLBVserver lbread -policyName pol_read -priority 12
- Enlaza los monitores a los servicios. Vincule los monitores a los servicios L1 y L2 para obtener la lista de bases de datos activas del grupo de disponibilidad del que es el oyente. Enlaza los monitores a todos los servicios enlazados al servidor virtual de solo lectura.
bind service L1 -monitorName monitor_L1
bind service L2 -monitorName monitor_L2
bind service s1 -monitorName monitor1
bind service s2 -monitorName monitor1
bind service s3 -monitorName monitor1
绑定服务s4 -monitorName monitor1
bind service s5 -monitorName monitor1
Ejemplos de configuración para el servidor virtual MSSQL
Para configurar un servidor virtual de equilibrio de carga para el equilibrio de carga específico de basesde datos:
add lb vserver DBSpecificLB1 MSSQL 192.0.2.10 1433 -dbsLb ENABLED Done show lb vserver DBSpecificLB1 DBSpecificLB1 (192.0.2.10:1433) - MSSQL Type: ADDRESS . . . DBS_LB: ENABLED Done
Para configurar los servicios:
agregar serviciomsservice1 5.5.5.5 MSSQL 1433
Para configurar un monitor para recuperar los nombres de todas las bases de datos activas alojadas en un servicio mediante la línea de comandos:
add lb monitor mssql-monitor1 MSSQL-ECV -userName user1 -sqlQuery "select name from sys.databases where state=0" -evalRule "MSSQL.RES.TYPE.NE(ERROR)" -storedb EN Done show lb monitor mssql-monitor1 1) Name.......: mssql-monitor1 Type......: MSSQL-ECV ... Special parameters: Database.....:"" User name.....:"user1" Query..:select name from sys.databases where state=0 EvalRule...:MSSQL.RES.TYPE.NE(ERROR) Version...:70 STORE_DB...:ENABLED Done
Ejemplos de configuración para el servidor virtual MySQL
Para configurar un servidor virtual de equilibrio de carga para el equilibrio de carga específico de basesde datos:
add lb vserver DBSpecificLB1 MYSQL 192.0.2.10 3306 -dbsLb ENABLED Done show lb vserver DBSpecificLB1 DBSpecificLB1 (192.0.2.10:3306) - MYSQL Type: ADDRESS . . . DBS_LB: ENABLED Done
Para configurar los servicios:
add service msservice1 5.5.5.5 MYSQL 3306
Para configurar un monitor para recuperar los nombres de todas las bases de datos activas alojadas en un servicio mediante la línea de comandos:
add lb monitor mysql-monitor1 MYSQL-ECV -userName user1 -sqlQuery "show databases" -evalRule "MYSQL.RES.TYPE.NE(ERROR)" -storedb ENABLED Done show lb monitor mysql-monitor1 1) Name.......: mysql-monitor1 Type......: MYSQL-ECV State....: ENABLED ... Special parameters: Database.....:"" User name.....:"user1" Query..:show databases EvalRule...:MYSQL.RES.TYPE.NE(ERROR) STORE_DB...:ENABLED Done
En este artículo
- Cómo funciona el equilibrio de carga específico de bases de datos
- Habilitar equilibrio de carga
- Configurar un servidor virtual de equilibrio de carga para el equilibrio de carga específico de bases de datos
- 配置un servidor virtual de equilibrio de carga para el equilibrio de carga específico de bases de datos mediante la CLI
- Configurar servicios
- Configuración de los usuarios de bases
- Configurar un monitor para recuperar los nombres de las bases de datos activas
- Soporte de implementación de grupos de disponibilidad para MSSQL
- Ejemplos de configuración para el servidor virtual MSSQL
- Ejemplos de configuración para el servidor virtual MySQL