Configurar la agrupación de conexiones gestionadas

En esta página se describe cómo habilitar, conectar y monitorizar la agrupación de conexiones gestionadas en AlloyDB para PostgreSQL. La agrupación de conexiones gestionada es un patrón de diseño que optimiza la gestión de conexiones de bases de datos manteniendo un grupo de conexiones preestablecidas. La aplicación reutiliza este grupo de conexiones en lugar de abrir y cerrar conexiones para cada operación de la base de datos, lo que mejora el rendimiento y el uso de los recursos.

Con la agrupación de conexiones gestionada, puedes escalar las cargas de trabajo de tu base de datos optimizando el uso de recursos y la latencia de conexión de tus instancias de AlloyDB. La agrupación de conexiones gestionada asigna dinámicamente conexiones de servidor a las solicitudes entrantes cuando es posible mediante la agrupación y la multiplexación. Este enfoque mejora el rendimiento, sobre todo en las conexiones escaladas, ya que absorbe los picos repentinos de conexión y reutiliza las conexiones de base de datos. En lugar de conectarse a una base de datos específica, cuando se usa la agrupación de conexiones gestionada, una aplicación se conecta a un agrupador, lo que proporciona tiempos de conexión más cortos y escalabilidad para tus cargas de trabajo de lectura.

Aunque puedes usar la agrupación de conexiones gestionada para cualquier carga de trabajo transaccional, es más adecuada para aplicaciones que contienen más conexiones de corta duración o aplicaciones que pueden experimentar un aumento repentino de las conexiones.

Antes de empezar

Debes conectarte a tu instancia mediante una conexión directa. La agrupación de conexiones gestionada no admite la conexión con el proxy de autenticación de AlloyDB ni con los conectores de lenguaje de AlloyDB.

Roles obligatorios

Para obtener el permiso que necesitas para habilitar y usar la agrupación de conexiones gestionada, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de AlloyDB de Cloud (roles/alloydb.admin) en la instancia de AlloyDB. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso alloydb.instances.update, que es necesario para habilitar y usar la agrupación de conexiones gestionada.

También puedes obtener este permiso con roles personalizados u otros roles predefinidos.

Opciones de configuración avanzada

La agrupación de conexiones gestionada de AlloyDB admite las siguientes opciones de configuración avanzada de la agrupación. Puedes personalizar la agrupación de conexiones gestionadas para que se ajuste a las necesidades de tu instancia con estas opciones de configuración. Puede definir estas configuraciones a nivel de instancia mediante laGoogle Cloud consola, la CLI de gcloud o la API de AlloyDB.

Nombre de configuración Descripción
Modo de conexión
(connection-pooling-pool-mode)
En el caso del modo de conexión, puedes seleccionar transacción (opción predeterminada) o sesión.

Transacción (transaction):
Agrupa las conexiones a nivel de transacción. Se asigna una conexión de servidor a un cliente durante una transacción. Una vez completada la transacción, la conexión del servidor se vuelve a colocar en el grupo.

Sesión (session):
Agrupa las conexiones a nivel de sesión. Se asigna una conexión de servidor al cliente durante todo el tiempo que esté conectado. Una vez que el cliente se desconecta, la conexión del servidor se vuelve a colocar en el grupo.
Tamaño máximo del grupo
(connection-pooling-max-pool-size)
Tamaño máximo del grupo de conexiones por par de usuario y base de datos. El valor predeterminado es 50 conexiones.
Tamaño mínimo del grupo
(connection-pooling-min-pool-size)
Tamaño mínimo del grupo de conexiones. El valor predeterminado es 0 conexiones.
Tiempos de espera de conexión de cliente inactiva
(connection-pooling-client-connection-idle-timeout)
Tiempo que una conexión de cliente permanece inactiva antes de que se agote el tiempo de espera. Este valor puede oscilar entre 0 y 2.147.483 segundos, y el valor predeterminado es 0 segundos.
Tiempos de espera de conexión de servidor inactivo
(connection-pooling-server-connection-idle-timeout)
Tiempo que una conexión de servidor permanece inactiva antes de que se agote el tiempo de espera. Este valor puede oscilar entre 0 y 2.147.483 segundos, y el valor predeterminado es de 600 segundos.
Tiempos de espera de las consultas
(connection-pooling-query-wait-timeout)
Tiempo que espera una consulta hasta que se agota el tiempo de espera. Este valor puede oscilar entre 0 y 2.147.483 segundos, y el valor predeterminado es de 120 segundos.
Número máximo de instrucciones preparadas
(connection-pooling-max-prepared-statements)
Número máximo de comandos de instrucciones preparadas enviados en el modo de agrupación de transacciones. El valor predeterminado es 0.
Ignorar parámetros de inicio
(connection-pooling-ignore-startup-parameters)
Los parámetros que quiere que se ignoren y que no se registran en los paquetes de inicio de forma predeterminada.
Tiempo de vida del servidor(en segundos)
(connection-pooling-server-lifetime)
Tiempo máximo que una conexión de servidor puede estar sin usarse antes de que la agrupación de conexiones gestionadas la cierre. El valor predeterminado es 3600 segundos.

De forma predeterminada, la agrupación de conexiones gestionada inicia conexiones con el servidor AlloyDB. Cuando se establece una conexión de cliente y se autentica, la agrupación de conexiones gestionada puede crear una o varias conexiones de servidor para que el tamaño del grupo coincida con la configuración elegida. A continuación, se asigna una conexión de servidor disponible a la conexión del cliente. Las conexiones del servidor se mantienen hasta que se cierran explícitamente o permanecen inactivas durante un periodo superior al tiempo de espera de conexión del servidor inactivo.

Habilitar la agrupación de conexiones gestionada

Puedes habilitar la agrupación de conexiones gestionada en cualquier instancia nueva o ya creada.

Habilitar una nueva instancia principal

Para crear una instancia principal con la agrupación de conexiones gestionada habilitada, consulta Crear una instancia principal. Puedes habilitar la agrupación de conexiones gestionada en una instancia mediante laGoogle Cloud consola, la CLI de Google Cloud o la API de AlloyDB.

Habilitar en una instancia de grupo de lectura nueva

Para crear una instancia de grupo de lectura con la agrupación de conexiones gestionada habilitada, consulta Crear una instancia de grupo de lectura. Puedes habilitar la agrupación de conexiones gestionada en una instancia mediante laGoogle Cloud consola, la CLI de Google Cloud o la API de AlloyDB.

Habilitar en una instancia

Puedes habilitar la agrupación de conexiones gestionada en una instancia que ya tengas mediante laGoogle Cloud consola, la CLI de Google Cloud o la API de AlloyDB.

Consola

  1. Ve a la página Clústeres.

    Ir a Clústeres

  2. Haga clic en un clúster de la columna Nombre del recurso.

  3. En la página Vista general, vaya a Instancias de su clúster.

  4. Haz clic en Editar principal o en Editar grupo de lectura.

  5. En Grupo de conexiones gestionadas, marca la casilla Habilitar grupo de conexiones gestionadas.

  6. Opcional: Para configurar las opciones de agrupación de conexiones gestionadas, haz clic en Opciones avanzadas de agrupación.

    Puedes personalizar las opciones de agrupación de conexiones gestionadas para que se ajusten a las necesidades de tu instancia. Para obtener más información, consulta las opciones de configuración avanzada.

  7. Haz clic en Guardar cambios.

gcloud

Para habilitar la agrupación de conexiones gestionada en una instancia principal o de lectura, usa el siguiente comando gcloud alpha alloydb instances update:

gcloud alpha alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --enable-connection-pooling

Haz los cambios siguientes:

  • INSTANCE_ID: el ID de la instancia de AlloyDB en la que quieras habilitar la agrupación de conexiones gestionada.
  • PROJECT_ID: el ID del proyecto.
  • REGION_ID: el ID de la región.
  • CLUSTER_ID: el ID del clúster.

Una vez que hayas habilitado la agrupación de conexiones gestionada, podrás personalizar las opciones de agrupación de conexiones gestionada para adaptarlas a las necesidades de tu instancia configurando las opciones avanzadas. Para obtener más información sobre cómo definir las opciones de configuración, consulta Modificar la agrupación de conexiones gestionadas de una instancia.

REST

Para habilitar la agrupación de conexiones gestionada en una instancia de grupo de lectura o principal, usa el siguiente comando y define connectionPoolConfig:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto.
  • LOCATION_ID: el ID de la región del clúster.
  • CLUSTER_ID: el ID del clúster. Debe empezar por una letra minúscula y puede contener letras minúsculas, números y guiones.
  • INSTANCE_ID: el ID de la instancia.

Método HTTP y URL:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
  "connectionPoolConfig": {
    "enabled": true
  }
}

Conectarse a un grupo de conexiones gestionado

La conexión a la agrupación de conexiones gestionada es idéntica a las conexiones directas de bases de datos, excepto que se realiza a través de un puerto diferente. La agrupación de conexiones gestionadas escucha en el puerto 6432. Cualquier usuario que se añada a la instancia de AlloyDB podrá conectarse mediante la agrupación de conexiones gestionada.

Conectarse mediante la autenticación integrada

En el ejemplo de comando, se conecta tu instancia de AlloyDB a la agrupación de conexiones gestionada mediante la autenticación integrada.

psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres

Conectarse mediante conexiones SSL

El modo SSL de la instancia también se aplica a las conexiones con el grupo de conexiones gestionado. De forma predeterminada, solo se aceptan conexiones SSL. Para permitir conexiones sin cifrar, usa el siguiente comando gcloud alloydb instances update para definir el modo SSL de la instancia como ALLOW_UNENCRYPTED_AND_ENCRYPTED.

gcloud alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

Modificar la agrupación de conexiones gestionada de una instancia

Una vez que hayas habilitado la agrupación de conexiones gestionada, podrás personalizar las opciones de la agrupación de conexiones gestionada para que se adapten a las necesidades de tu instancia mediante las opciones de configuración avanzadas. Estas opciones de configuración se denominan "flags de agrupación de conexiones gestionadas". Para obtener más información sobre las opciones de configuración, sus valores predeterminados y sus intervalos, consulta las opciones de configuración avanzada.

Puedes modificar las opciones de configuración de la agrupación de conexiones gestionada de una instancia mediante la Google Cloud consola, la interfaz de línea de comandos de Google Cloud o la API de AlloyDB.

Consola

  1. Ve a la página Clústeres.

    Ir a Clústeres

  2. Haga clic en un clúster de la columna Nombre del recurso.

  3. En la página Vista general, vaya a Instancias de su clúster.

  4. Haz clic en Editar instancia o Editar grupo de lectura en la instancia que quieras modificar.

  5. En Grupo de conexiones gestionado, despliega Opciones avanzadas de agrupación.

  6. Modifica las opciones avanzadas de agrupación que quieras actualizar. Puedes modificar las siguientes opciones:

    • Modo de conexión
    • Tamaño máximo del grupo
    • Tamaño mínimo de la piscina
    • Número máximo de conexiones de cliente
    • Tiempos de espera de conexión de cliente inactiva
    • Tiempos de espera de conexión de servidor inactivo
    • Tiempo de espera de las consultas
    • Número máximo de instrucciones preparadas
    • Ignorar parámetros de inicio
    • Tiempo de vida del servidor
  7. Haz clic en Actualizar instancia.

gcloud

Para modificar las opciones de configuración de la agrupación de conexiones gestionadas de una instancia, usa el siguiente comando gcloud alpha alloydb instances update:

  gcloud alpha alloydb instances update INSTANCE_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    { \
      --connection-pooling-pool-mode=CONNECTION_MODE \
      | --connection-pooling-max-pool-size=MAX_POOL_SIZE \
      | --connection-pooling-min-pool-size=MIN_POOL_SIZE \
      | --connection-pooling-max-client-connections=MAX_CLIENT_CONNECTION \
      | --connection-pooling-server-idle-timeout=SERVER_IDLE_TIMEOUT_PERIOD \
      | --connection-pooling-query-wait-timeout=QUERY_WAIT_TIMEOUT_PERIOD \
      | --connection-pooling-ignore-startup-parameters=IGNORE_STARTUP_PARAMETERS \
      | --connection-pooling-max-prepared-statements=MAX_PREPARED_STATEMENTS \
      | --connection-pooling-server-lifetime=SERVER_LIFETIME \
      | --connection-pooling-client-connection-idle-timeout=CLIENT_CONNECTION_IDLE_TIMEOUT \
    }

Haz los cambios siguientes:

  • INSTANCE_ID: el nombre de la instancia de AlloyDB para la que quieres inhabilitar la agrupación de conexiones gestionada.
  • PROJECT_ID: el ID del proyecto.
  • REGION_ID: el ID de la región.
  • CLUSTER_ID: el ID del clúster.
  • Puedes configurar las siguientes opciones:

    • --connection-pooling-pool-mode. Debe ser session o transaction.
    • --connection-pooling-max-pool-size
    • --connection-pooling-min-pool-size
    • --connection-pooling-max-client-connections
    • --connection-pooling-server-idle-timeout
    • --connection-pooling-query-wait-timeout
    • --connection-pooling-ignore-startup-parameters
    • --connection-pooling-max-prepared-statements
    • --connection-pooling-server-lifetime
    • --connection-pooling-client-connection-idle-timeout

REST

Para modificar las opciones de configuración de la agrupación de conexiones gestionadas de una instancia de grupo de lectura, usa el siguiente comando y define connectionPoolConfig:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto.
  • LOCATION_ID: el ID de la región del clúster.
  • CLUSTER_ID: el ID del clúster que crees. Debe empezar por una letra minúscula y puede contener letras minúsculas, números y guiones.
  • INSTANCE_ID: el ID de la instancia que crees.
  • Puedes configurar las siguientes opciones:

    • POOL_MODE. Debe ser session o transaction.
    • MAX_POOL_SIZE
    • MIN_POOL_SIZE
    • MAX_CLIENT_CONNECTION
    • SERVER_IDLE_TIMEOUT
    • QUERY_WAIT_TIMEOUT
    • IGNORE_STARTUP_PARAMETERS

Método HTTP y URL:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
  "connectionPoolConfig": {
    "enabled": true,
    "flags": {
      "pool_mode": "POOL_MODE",
      "max_pool_size": "MAX_POOL_SIZE",
      "min_pool_size": "MIN_POOL_SIZE",
      "max_client_connection": "MAX_CLIENT_CONNECTION",
      "server_idle_timeout": "SERVER_IDLE_TIMEOUT",
      "query_wait_timeout": "QUERY_WAIT_TIMEOUT",
      "ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS"
    },
  }
}

Ver el estado de la agrupación de conexiones gestionada de una instancia

Puedes ver el estado de la agrupación de conexiones gestionada de una instancia mediante la Google Cloud consola, la CLI de Google Cloud o la API de AlloyDB.

Consola

  1. Ve a la página Clústeres.

    Ir a Clústeres

  2. Haga clic en un clúster de la columna Nombre del recurso.

  3. En la página Resumen, busca la instancia de la que quieras ver el estado de la agrupación de conexiones gestionadas. El campo Agrupación de conexiones gestionadas muestra si está habilitado o inhabilitado.

gcloud

Para ver el estado de la agrupación de conexiones gestionadas de una instancia, usa el siguiente comando gcloud alpha alloydb instances describe:

gcloud alpha alloydb instances describe INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --format="value(connectionPoolConfig.enabled)"

Haz los cambios siguientes:

  • INSTANCE_ID: el nombre de la instancia de AlloyDB para la que quieras modificar las opciones de agrupación de conexiones gestionada.
  • PROJECT_ID: el ID del proyecto.
  • REGION_ID: el ID de la región.
  • CLUSTER_ID: el ID del clúster.

Si la agrupación de conexiones gestionada está habilitada, se devuelve la siguiente respuesta:

True

REST

Para ver el estado de la agrupación de conexiones gestionada de tu instancia de AlloyDB, usa el siguiente comando y busca connectionPoolConfig:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto.
  • LOCATION_ID: el ID de la región del clúster.
  • CLUSTER_ID: el ID del clúster que crees. Debe empezar por una letra minúscula y puede contener letras minúsculas, números y guiones.
  • INSTANCE_ID: el ID de la instancia que crees.

Método HTTP y URL:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Inhabilitar la agrupación de conexiones gestionadas en una instancia

Puede inhabilitar la agrupación de conexiones gestionada en una instancia que ya tenga mediante laGoogle Cloud consola, la CLI de Google Cloud o la API de AlloyDB.

Consola

  1. Ve a la página Clústeres.

    Ir a Clústeres

  2. Haga clic en un clúster de la columna Nombre del recurso.

  3. En la página Vista general, vaya a Instancias de su clúster.

  4. Haz clic en Editar instancia o Editar grupo de lectura en la instancia en la que quieras inhabilitar la conexión de grupo gestionado.

  5. En Grupo de conexiones gestionadas, desmarca la casilla Habilitar grupo de conexiones gestionadas.

  6. Haz clic en Actualizar instancia.

gcloud

Para inhabilitar la agrupación de conexiones gestionada en una instancia, usa el siguiente comando gcloud alpha alloydb instances update:

gcloud alpha alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --no-enable-connection-pooling

Haz los cambios siguientes:

  • INSTANCE_ID: el nombre de la instancia de AlloyDB en la que quieras inhabilitar la agrupación de conexiones gestionada.
  • PROJECT_ID: el ID del proyecto.
  • REGION_ID: el ID de la región.
  • CLUSTER_ID: el ID del clúster.

REST

Para inhabilitar la agrupación de conexiones gestionadas en una instancia de grupo de lectura, usa el siguiente comando y asigna el valor false a connectionPoolConfig:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto.
  • LOCATION_ID: el ID de la región del clúster.
  • CLUSTER_ID: el ID del clúster que crees. Debe empezar por una letra minúscula y puede contener letras minúsculas, números y guiones.
  • INSTANCE_ID: el ID de la instancia que crees.

Método HTTP y URL:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Cuerpo JSON de la solicitud:

{
  "connectionPoolConfig": {
    "enabled": false
  }
}

Monitorizar la agrupación de conexiones gestionadas

AlloyDB proporciona las siguientes métricas para ayudarte a monitorizar cómo se ejecuta la agrupación de conexiones gestionada en tu instancia. Puedes ver estas métricas con el explorador de métricas.

Nombre de la métrica Descripción
Número de grupos de conexiones

/database/conn_pool/num_pools
El número total de grupos de conexiones por base de datos.
Conexiones con clientes

/database/conn_pool/client_connections
Hace un seguimiento del número de conexiones de cliente agrupadas por el estado de la conexión de cliente por base de datos. Los estados incluidos en esta métrica son:
  • active: el número de conexiones activas por base de datos, incluidos los clientes inactivos que no tienen ninguna solicitud de consulta pendiente.
  • waiting: número de clientes que esperan una conexión de servidor por base de datos.
Conexiones de servidor

/database/conn_pool/server_connections
Hace un seguimiento del número de conexiones de servidor agrupadas por el estado de la conexión de servidor por base de datos. Los estados incluidos en esta métrica son:
  • active: número de conexiones activas por base de datos.
  • idle: número de conexiones de servidor inactivas por base de datos.
Tiempo de espera medio

/database/conn_pool/client_connections_avg_wait_time
Tiempo medio que han pasado todos los clientes en estado de espera de un servidor en microsegundos por base de datos.

Para obtener más información, consulta las métricas de AlloyDB.

Limitaciones

Durante el lanzamiento de la versión preliminar, se aplican las siguientes limitaciones, que pueden cambiar o eliminarse cuando se lance la versión GA o después:

  • La agrupación de conexiones gestionada no admite la conexión con AlloyDB Auth Proxy ni con los conectores de lenguaje de AlloyDB.
  • Si usas la agrupación de conexiones gestionada en el modo de agrupación de transacciones, no se admiten las siguientes funciones de SQL:
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW tablas temporales
    • LOAD
    • Bloqueos de asesoramiento a nivel de sesión
    • Planes preparados a nivel de protocolo
  • No se admite la agrupación de conexiones gestionada para las conexiones de IP pública.