Trabajo con puntos de enlace del proxy de Amazon RDS - Amazon Aurora

Trabajo con puntos de enlace del proxy de Amazon RDS

A continuación, puede obtener más información acerca de los puntos de conexión para RDS Proxy y cómo utilizarlos. Mediante el uso de puntos de conexión de proxy, puede aprovechar las siguientes capacidades:

  • Puede utilizar varios puntos de enlace con un proxy para monitorear y solucionar problemas de conexiones de diferentes aplicaciones de forma independiente.

  • Puede usar puntos de enlace del lector con clústeres de base de datos de Aurora a fin de mejorar la escalabilidad de lectura y la alta disponibilidad para sus aplicaciones que requieren un uso intensivo de consultas.

  • Puede utilizar un punto de enlace entre VPC para permitir el acceso a bases de datos de una VPC desde recursos como instancias de Amazon EC2 en una VPC diferente.

Información general de los puntos de enlace de proxy

Trabajar con puntos de conexión de RDS Proxy implica los mismos tipos de procedimientos que con los puntos de conexión del lector y clústeres de base de datos de Aurora. Si no está familiarizado con los puntos de enlace de Aurora, puede encontrar más información en Conexiones de puntos de conexión de Amazon Aurora.

De forma predeterminada, el punto de enlace al que se conecta cuando utiliza RDS Proxy con un clúster de Aurora tiene capacidad de lectura o escritura. Como resultado, este punto de conexión envía todas las solicitudes a la instancia del escritor del clúster. Todas esas conexiones se descontarán del valor max_connections de la instancia del escritor. Si su proxy está asociado con un clúster de bases de datos de Aurora, puede crear puntos de enlace de lectura o escritura o de solo lectura adicionales para ese proxy.

Puede utilizar un punto de conexión de solo lectura con su proxy para consultas de solo lectura. Se hace de igual manera que se utiliza el punto de conexión del lector para un clúster aprovisionado de Aurora. Esto lo ayuda a aprovechar la escalabilidad de lectura de un clúster de Aurora con una o más instancias de base de datos de lector. Puede ejecutar más consultas simultáneas y realizar más conexiones simultáneas mediante un punto de enlace de solo lectura y el agregado de más instancias de base de datos de lector a su clúster de Aurora, según sea necesario.

sugerencia

Cuando crea un proxy para un clúster de Aurora mediante la AWS Management Console, puede tener el proxy de RDS para crear un punto de conexión del lector automáticamente. Para obtener información acerca de los beneficios de un punto de enlace del lector, consulte Usar puntos de enlace del lector con los clústeres de Aurora.

En el caso de un punto de enlace de proxy que cree, también puede asociarlo con una nube privada virtual (VPC) diferente de la que utiliza el propio proxy. Al hacerlo, puede conectarse al proxy desde una VPC diferente, por ejemplo, una VPC utilizada por una aplicación diferente dentro de su organización.

Para obtener información acerca de los límites asociados a los puntos de enlace de proxy, consulte Limitaciones para los puntos de conexión de proxy.

En los registros de RDS Proxy, cada entrada tiene el prefijo del nombre del punto de enlace de proxy asociado. Este nombre puede ser el especificado para un punto de conexión definido por el usuario. O puede ser el nombre especial default para el punto de conexión predeterminado de un proxy que lleva a cabo solicitudes de lectura/escritura.

Cada punto de enlace de proxy tiene su propio conjunto de métricas de CloudWatch. Puede monitorear las métricas de todos los puntos de enlace de un proxy. También puede monitorear las métricas de un punto de enlace específico, o de todos los puntos de enlace de lectura y escritura o de solo lectura de un proxy. Para obtener más información, consulte Supervisión de las métricas de RDS Proxy con Amazon CloudWatch.

Un punto de enlace del proxy utiliza el mismo mecanismo de autenticación que su proxy asociado. El proxy de RDS configura automáticamente permisos y autorizaciones para el punto de enlace definido por el usuario, de acuerdo con las propiedades del proxy asociado.

Para obtener información sobre cómo funcionan los puntos de conexión proxy para los clústeres de bases de datos de una base de datos global de Aurora, consulte Cómo funcionan los puntos de conexión de RDS Proxy con las bases de datos globales.

Limitaciones para los puntos de conexión de proxy

Los puntos de conexión de RDS Proxy tienen las siguientes limitaciones:

  • Cada proxy tiene un punto de enlace predeterminado que puede modificar, pero no crear o eliminar.

  • El número máximo de puntos de enlace definidos por el usuario para un proxy es 20. Por lo tanto, un proxy puede tener hasta 21 puntos de enlace: el punto de enlace predeterminado, más 20 que cree.

  • Cuando asocia puntos de enlace adicionales con un proxy, RDS Proxy determina automáticamente qué instancias de base de datos del clúster se utilizarán para cada punto de enlace. No puede elegir instancias específicas tal y como lo hace con los puntos de conexión personalizados de Aurora.

Usar puntos de enlace del lector con los clústeres de Aurora

Puede crear y conectarse a puntos de enlace de solo lectura denominados puntos de enlace del lector cuando usa RDS Proxy con los clústeres de Aurora. Estos puntos de enlace del lector ayudan a mejorar la escalabilidad de lectura de sus aplicaciones que requieren un uso intensivo de consultas. Los puntos de enlace del lector también ayudan a mejorar la disponibilidad de las conexiones si una instancia de base de datos de lector del clúster deja de estar disponible.

nota

Cuando especifica que un punto de enlace nuevo es de solo lectura, RDS Proxy requiere que el clúster de Aurora tenga una o más instancias de base de datos de lector. En algunos casos, puede cambiar el destino del proxy a un clúster de Aurora que contenga a un solo escritor. Si lo hace, se producirá un error en cualquier solicitud al punto de conexión del lector. Las solicitudes también fallan si el destino del proxy es una instancia de RDS en lugar de un clúster de Aurora.

Si un clúster de Aurora tiene instancias de lector, pero esas instancias no están disponibles, RDS Proxy espera para enviar la solicitud en lugar de devolver un error inmediatamente. Si no hay instancias de lector disponibles dentro del periodo de tiempo de espera de préstamo de conexión, la solicitud fallará.

Cómo los puntos de enlace del lector ayudan a la disponibilidad de las aplicaciones

En algunos casos, es posible que una o más instancias de lector del clúster no estén disponibles. Si es así, las conexiones que utilizan un punto de enlace del lector de un proxy de base de datos se pueden recuperar más rápidamente que las que utilizan el punto de enlace del lector de Aurora. El proxy de RDS enruta las conexiones solo a las instancias de lector disponibles en el clúster. No hay retraso debido al almacenamiento en caché de DNS cuando una instancia deja de estar disponible.

Si la conexión es multiplexada, RDS Proxy dirige las consultas posteriores a una instancia de base de datos de lector diferente sin interrupciones en su aplicación. Durante el cambio automático a una instancia de lector nueva, el proxy de RDS verifica el retraso de reproducción de las instancias de lector antiguas y nuevas. El proxy de RDS se asegura de que la instancia de lector nueva esté actualizada con los mismos cambios que la instancia de lector anterior. De esta manera, su aplicación nunca ve datos obsoletos cuando RDS Proxy cambia de una instancia de base de datos de lector a otra.

Si la conexión está anclada, la siguiente consulta en la conexión devuelve un error. Sin embargo, la aplicación puede volver a conectarse inmediatamente al mismo punto de enlace. El proxy de RDS enruta la conexión a una instancia de base de datos de lector diferente que se encuentra en estado available. Cuando se vuelve a conectar manualmente, RDS Proxy no comprueba el retraso de reproducción entre las instancias de lector antiguas y nuevas.

Si su clúster de Aurora no tiene instancias de lector disponibles, RDS Proxy comprueba si esta condición es temporal o permanente. El comportamiento en cada caso es el siguiente:

  • Supongamos que su clúster tiene una o más instancias de base de datos de lector, pero ninguna de ellas está en el estado Available. Por ejemplo, todas las instancias de lector pueden estar reiniciándose o encontrando problemas. En ese caso, los intentos de conectarse a un punto de enlace del lector esperan a que una instancia de lector esté disponible. Si no hay instancias de lector disponibles dentro del periodo de tiempo de espera de préstamo de conexión, se produce un error en el intento de conexión. Si una instancia de lector está disponible, el intento de conexión se lleva a cabo correctamente.

  • Supongamos que su clúster no tiene instancias de base de datos de lector. En ese caso, RDS Proxy devuelve un error inmediatamente si intenta conectarse a un punto de enlace del lector. Para resolver este problema, agregue una o más instancias de lector al clúster antes de conectarse al punto de enlace del lector.

Cómo los puntos de enlace del lector ayudan a la escalabilidad de las consultas

Los puntos de enlace del lector de un proxy ayudan con la escalabilidad de consulta de Aurora de las siguientes maneras:

  • A medida que agrega instancias de lector a su clúster de Aurora, RDS Proxy puede enrutar conexiones nuevas a cualquier punto de enlace del lector a las diferentes instancias de lector. De esta forma, las consultas realizadas con una conexión de punto de enlace de lector no ralentizan las consultas realizadas con otra conexión de punto de enlace del lector. Las consultas se ejecutan en instancias de base de datos independientes. Cada instancia de base de datos tiene sus propios recursos informáticos, caché de búfer y demás.

  • Cuando sea práctico, RDS Proxy utiliza la misma instancia de base de datos de lector para todos los problemas de consultas mediante una conexión de punto de enlace del lector en particular. De esta manera, un conjunto de consultas relacionadas en las mismas tablas puede aprovechar el almacenamiento en caché, la optimización del plan y demás, en una instancia de base de datos particular.

  • Si una instancia de base de datos de lector deja de estar disponible, el efecto en la aplicación depende de si la sesión está multiplexada o anclada. Si la sesión está multiplexada, RDS Proxy enruta las consultas posteriores a una instancia de base de datos de lector diferente sin acciones por su parte. Si la sesión está anclada, la aplicación recibe un error y debe volver a conectarse. Puede volver a conectarse al punto de enlace del lector inmediatamente y RDS Proxy enruta la conexión a una instancia de base de datos de lector disponible. Para obtener más información acerca de la multiplexación y el anclaje de sesiones de proxy, consulte Información general de los conceptos de RDS Proxy.

  • Cuantas más instancias de base de datos de lector tenga en el clúster, más conexiones simultáneas podrá realizar con los puntos de conexión de lector. Por ejemplo, supongamos que el clúster tiene cuatro instancias de base de datos de lector, cada una configurada para permitir 200 conexiones simultáneas. Supongamos que su proxy está configurado para usar el 50 % de las conexiones máximas. Aquí, el número máximo de conexiones que puede realizar a través de los puntos de enlace del lector en el proxy es 100 (50 % de 200) para el lector 1. También son 100 para el lector 2, y así sucesivamente, para un total de 400. Si se duplica el número de instancias de la base de datos del lector del clúster a ocho, el número máximo de conexiones a través de los puntos de conexión del lector también se duplicará (hasta 800).

Ejemplos de uso de puntos de enlace del lector

El siguiente ejemplo de Linux muestra cómo puede confirmar que está conectado a un clúster de Aurora MySQL a través de un punto de enlace del lector. La configuración de innodb_read_only está habilitada. Los intentos de realizar operaciones de escritura como las instrucciones de CREATE DATABASE fallan. Además, puede confirmar que está conectado a una instancia de base de datos de lector mediante la verificación del nombre de la instancia de base de datos con el uso de la variable de aurora_server_id.

sugerencia

No confíe solo en comprobar el nombre de la instancia de base de datos para determinar si la conexión es de lectura o escritura o de solo lectura. Recuerde que las instancias de base de datos en un clúster de Aurora puede cambiar los roles entre escritor y lector cuando se producen conmutaciones por error.

$ mysql -h endpoint-demo-reader.endpoint.proxy-demo.us-east-1.rds.amazonaws.com -u admin -p ... mysql> select @@innodb_read_only; +--------------------+ | @@innodb_read_only | +--------------------+ | 1 | +--------------------+ mysql> create database shouldnt_work; ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement mysql> select @@aurora_server_id; +---------------------------------------+ | @@aurora_server_id | +---------------------------------------+ | proxy-reader-endpoint-demo-instance-3 | +---------------------------------------+

El siguiente ejemplo muestra cómo la conexión a un punto de enlace del lector de proxy puede seguir funcionando incluso cuando se elimina la instancia de base de datos del lector. En este ejemplo, el clúster de Aurora tiene dos instancias de lector, instance-5507 y instance-7448. La conexión con el punto de enlace del lector comienza mediante una de las instancias de lector. Durante el ejemplo, esta instancia de lector se elimina mediante un comando delete-db-instance. Para consultas posteriores, el proxy de RDS cambia a una instancia de lector diferente.

$ mysql -h reader-demo.endpoint.proxy-demo.us-east-1.rds.amazonaws.com -u my_user -p ... mysql> select @@aurora_server_id; +--------------------+ | @@aurora_server_id | +--------------------+ | instance-5507 | +--------------------+ mysql> select @@innodb_read_only; +--------------------+ | @@innodb_read_only | +--------------------+ | 1 | +--------------------+ mysql> select count(*) from information_schema.tables; +----------+ | count(*) | +----------+ | 328 | +----------+

Mientras que la sesión de mysql sigue funcionando, el siguiente comando elimina la instancia de lector a la que está conectado el punto de enlace del lector.

aws rds delete-db-instance --db-instance-identifier instance-5507 --skip-final-snapshot

Las consultas en la sesión de mysql sigue trabajando sin necesidad de volver a conectarse. El proxy de RDS cambia a una instancia de base de datos de lector diferente automáticamente.

mysql> select @@aurora_server_id; +--------------------+ | @@aurora_server_id | +--------------------+ | instance-7448 | +--------------------+ mysql> select count(*) from information_schema.TABLES; +----------+ | count(*) | +----------+ | 328 | +----------+

Acceso a las bases de datos de Aurora en todas las VPC

De forma predeterminada, los componentes de su pila de tecnología de Aurora están todos en la misma Amazon VPC. Por ejemplo, supongamos que una aplicación que se ejecuta en una instancia de Amazon EC2 se conecta a un clúster de bases de datos de Aurora. En este caso, el servidor de la aplicación y la base de datos deben estar dentro de la misma VPC.

Con RDS Proxy, puede configurar el acceso a un clúster de bases de datos de Aurora en una VPC a partir de recursos de otra VPC, como las instancias de EC2. Por ejemplo, la organización puede tener varias aplicaciones que tengan acceso a los mismos recursos de base de datos. Cada aplicación puede estar en su propia VPC.

A fin de habilitar el acceso entre VPC, cree un nuevo punto de enlace para el proxy. El propio proxy reside en la misma VPC que el clúster de bases de datos de Aurora. Sin embargo, el punto de enlace en VPC reside en la otra VPC, junto con otros recursos, como las instancias EC2. El punto de enlace en VPC está asociado con subredes y grupos de seguridad de la misma VPC que EC2 y otros recursos. Estas asociaciones permiten conectarse al punto de enlace desde las aplicaciones que, de lo contrario, no pueden acceder a la base de datos debido a las restricciones de la VPC.

Los siguientes pasos explican cómo crear y acceder a un punto de enlace en VPC a través de RDS Proxy:

  1. Cree dos VPC o elija dos VPC que ya utilice para el trabajo en Aurora . Cada VPC debe tener sus propios recursos de red asociados, como una puerta de enlace de Internet, tablas de enrutamiento, subredes y grupos de seguridad. Si solo tiene una VPC, puede consultar Introducción a Amazon Aurora para conocer los pasos a fin de configurar otra VPC para que use Aurora con éxito. También puede examinar la VPC existente en la consola de Amazon EC2 para ver los tipos de recursos que conectar entre sí.

  2. Cree un proxy de base de datos asociado con el clúster de bases de datos de Aurora al que desea conectarse. Siga el procedimiento indicado en Creación de un RDS Proxy.

  3. En la página de Details (Detalles) para su proxy en la consola de RDS, en la pestaña de Proxy endpoints (Puntos de enlace de proxy), elija Create endpoint (Crear punto de enlace). Siga el procedimiento indicado en Creación de un punto de enlace de proxy.

  4. Elija si desea que el punto de enlace en VPC sea de lectura y escritura o de solo lectura.

  5. En lugar de aceptar el valor predeterminado de la misma VPC que el clúster de bases de datos de Aurora, elija una VPC diferente. Esta VPC debe estar en la misma región de AWS que la VPC donde reside el proxy.

  6. Ahora, en lugar de aceptar los valores predeterminados para subredes y grupos de seguridad de la misma VPC que el clúster de bases de datos de Aurora, haga nuevas selecciones. Estos se basen en las subredes y los grupos de seguridad de la VPC que eligió.

  7. No es necesario cambiar las opciones de configuración de los secretos de Secrets Manager. Las mismas credenciales funcionan para todos los puntos de enlace de proxy, independientemente de la VPC en la que se encuentre cada punto de enlace.

  8. Espere a que el punto de enlace nuevo alcance el estado de Available (Disponible).

  9. Anote el nombre completo del punto de enlace. Este es el valor que termina en Region_name.rds.amazonaws.com que proporciona como parte de la cadena de conexión para la aplicación de base de datos.

  10. Acceda al punto de enlace nuevo desde un recurso en la misma VPC que el punto de enlace. Una forma sencilla de probar este proceso es crear una instancia de EC2 nueva en esta VPC. A continuación, puede iniciar sesión en la instancia de EC2 y ejecutar los comandos mysql o psql para conectarse mediante el valor de punto de conexión en la cadena de conexión.