Configura la agrupación de conexiones administradas

En esta página, se describe cómo habilitar, conectarse a y supervisar el grupo de conexiones administrado en AlloyDB para PostgreSQL. La agrupación de conexiones administrada es un patrón de diseño que optimiza la administración de conexiones de bases de datos manteniendo un grupo de conexiones preestablecidas. Luego, 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 recursos.

Con la agrupación de conexiones administrada, puedes escalar las cargas de trabajo de la base de datos mediante la optimización del uso de recursos y la latencia de conexión de tus instancias de AlloyDB. La agrupación de conexiones administrada asigna conexiones del servidor a las solicitudes entrantes de forma dinámica cuando es posible mediante la agrupación y la multiplexación. Este enfoque proporciona mejoras de rendimiento, en especial para las conexiones ajustadas, ya que absorbe los aumentos repentinos de la conexión y reutiliza las conexiones de bases de datos existentes. En lugar de conectarse a una base de datos específica, cuando se usa la agrupación de conexiones administrada, una aplicación se conecta a un grupo de conexiones, lo que proporciona tiempos de conexión más cortos y escalabilidad para tus cargas de trabajo de lectura.

Si bien puedes usar el grupo de conexiones administrado para cualquier carga de trabajo transaccional, este es más adecuado para aplicaciones que contienen más conexiones de corta duración o aplicaciones que podrían experimentar un aumento de conexiones.

Antes de comenzar

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

Roles obligatorios

Para obtener el permiso que necesitas para habilitar y usar el grupo de conexiones administrado, pídele a tu administrador que te otorgue el rol de IAM Administrador de Cloud AlloyDB (roles/alloydb.admin) en la instancia de AlloyDB. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso alloydb.instances.update, que se requiere para habilitar y usar el grupo de conexiones administrado.

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

Opciones de configuración avanzada

El grupo de conexiones administrado de AlloyDB admite las siguientes opciones de configuración de agrupación avanzadas. Puedes personalizar el grupo de conexiones administrado para satisfacer las necesidades de tu instancia con estas opciones de configuración. Puedes establecer estas configuraciones a nivel de la instancia con la console de Google Cloud, gcloud CLI o la API de AlloyDB.

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

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

Sesión (session):
Agrupa las conexiones a nivel de la sesión. Se asigna una conexión de servidor al cliente durante todo el tiempo que permanece conectado. Después de 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)
Es el tamaño máximo del grupo de conexiones. El valor predeterminado es 50 conexiones.
Tamaño mínimo del grupo
(connection-pooling-min-pool-size)
Es el tamaño mínimo del grupo de conexiones. El valor predeterminado es 0 conexiones.
Tiempos de espera de la conexión de cliente inactiva
(connection-pooling-client-connection-idle-timeout)
Es el tiempo que una conexión de cliente permanece inactiva antes de que se agote el tiempo de espera. Este valor puede variar de 0 a 2,147,483 segundos, y el valor predeterminado es de 0 segundos. Solo puedes configurar este parámetro con la consola de Google Cloud.
Tiempos de espera de la conexión del servidor inactivo
(connection-pooling-server-connection-idle-timeout)
Es el tiempo que una conexión del servidor permanece inactiva antes de que se agote el tiempo de espera. Este valor puede variar de 0 a 2,147,483 segundos, y el valor predeterminado es de 600 segundos.
Tiempos de espera de consulta
(connection-pooling-query-wait-timeout)
Es el tiempo que una consulta espera hasta que se agota el tiempo de espera. Este valor puede variar de 0 a 2,147,483 segundos, y el valor predeterminado es de 120 segundos.
Cantidad máxima de instrucciones preparadas
(connection-pooling-max-prepared-statements)
Es la cantidad máxima de comandos de instrucciones preparadas que se envían en el modo de agrupación de transacciones. El valor predeterminado es 0.
Ignora los parámetros de inicio
(connection-pooling-ignore-startup-parameters).
Los parámetros que deseas ignorar y de los que no se realiza un seguimiento en los paquetes de inicio de forma predeterminada
Vida útil del servidor
(connection-pooling-server-lifetime)
Es el tiempo máximo que una conexión de servidor no se usa antes de que el grupo de conexiones administrado la cierre. El valor predeterminado es 3,600 segundos. Solo puedes configurar este parámetro con la consola de Google Cloud.

De forma predeterminada, el grupo de conexiones administrado inicia conexiones con el servidor de AlloyDB. Cuando se establece y autentica una conexión cliente, la agrupación de conexiones administrada puede crear una o más conexiones de servidor para que el tamaño del grupo coincida con la configuración elegida. Luego, se asigna una conexión de servidor disponible a la conexión del cliente. Las conexiones del servidor se mantienen hasta que se cierran de forma explícita o permanecen inactivas durante más tiempo que el período de tiempo de espera de la conexión del servidor inactiva.

Habilita la agrupación de conexiones administradas

Puedes habilitar el grupo de conexiones administrado para cualquier instancia nueva o existente.

Habilita la PITR para una instancia principal nueva

Para crear una instancia principal nueva con el grupo de conexiones administrado habilitado, consulta Cómo crear una instancia principal. Puedes habilitar el grupo de conexiones administrado para una instancia con la consola de Google Cloud, Google Cloud CLI o la API de AlloyDB.

Habilita la función para una instancia de grupo de lectura nueva

Para crear una instancia de grupo de lectura nueva con el grupo de conexiones administrado habilitado, consulta Cómo crear una instancia de grupo de lectura. Puedes habilitar el grupo de conexiones administrado para una instancia con la consola de Google Cloud, Google Cloud CLI o la API de AlloyDB.

Habilita la función para una instancia existente

Puedes habilitar el grupo de conexiones administrado para una instancia existente con la consola de Google Cloud, Google Cloud CLI o la API de AlloyDB.

Console

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

    Ir a los clústeres

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

  3. En la página Descripción general, navega a Instancias en tu clúster.

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

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

  6. Opcional: Para configurar las opciones de grupo de conexiones administradas, haz clic en Opciones avanzadas de grupo.

    Puedes personalizar las opciones de aprovisionamiento de conexiones administradas para satisfacer 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 el grupo de conexiones administrado para una instancia de grupo primario o de lectura existente, 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

Reemplaza lo siguiente:

  • INSTANCE_ID: El ID de la instancia de AlloyDB para la que deseas habilitar el grupo de conexiones administrado.
  • PROJECT_ID: el ID del proyecto.
  • REGION_ID: Es el ID de la región.
  • CLUSTER_ID: El ID del clúster.

Después de habilitar el grupo de conexiones administrado, puedes personalizar las opciones de grupo de conexiones administrado para satisfacer las necesidades de tu instancia configurando las opciones de configuración avanzadas. Para obtener más información sobre cómo configurar las opciones de configuración, consulta Cómo modificar el grupo de conexiones administrado de una instancia.

REST

Para habilitar el grupo de conexiones administrado para una instancia existente del grupo primario o de lectura, usa el siguiente comando y configura connectionPoolConfig:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: el ID del proyecto.
  • LOCATION_ID: Es el ID de la región del clúster.
  • CLUSTER_ID: Es el ID del clúster. Debe comenzar con 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
  }
}

Cómo conectarse al grupo de conexiones administrado

La conexión al grupo de conexiones administrado es idéntica a las conexiones directas a la base de datos, excepto que se realiza en un puerto diferente. La agrupación de conexiones administrada escucha en el puerto 6432. Cualquier usuario que se agregue a la instancia de AlloyDB puede conectarse con el grupo de conexiones administrado.

Cómo conectarse con la autenticación integrada

El ejemplo de comando conecta tu instancia de AlloyDB al grupo de conexiones administrado con autenticación integrada.

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

Conéctate con conexiones SSL

El modo SSL de la instancia también se aplica a cualquier conexión al grupo de conexiones administrado. De forma predeterminada, solo se aceptan las conexiones SSL. Para permitir conexiones no encriptadas, usa el siguiente comando gcloud alloydb instances update para establecer el modo SSL de la instancia en 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

Modifica la agrupación de conexiones administradas de una instancia

Después de habilitar el grupo de conexiones administrado, puedes personalizar las opciones de grupo de conexiones administrado para satisfacer las necesidades de tu instancia con las opciones de configuración avanzadas. Estas opciones de configuración se denominan marcas de aprovisionamiento de conexiones administradas. Para obtener más información sobre las opciones de configuración, sus valores predeterminados y los rangos, consulta Opciones de configuración avanzadas.

Puedes modificar las opciones de configuración del grupo de conexiones administrado de una instancia existente con la consola de Google Cloud, Google Cloud CLI o la API de AlloyDB.

Console

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

    Ir a los clústeres

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

  3. En la página Descripción general, navega a Instancias en tu clúster.

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

  5. En Grupo de conexiones administrado, expande Opciones de grupo de conexiones avanzadas.

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

    • Modo de conexión
    • Tamaño máximo del grupo
    • Tamaño mínimo del grupo
    • Conexión máxima del cliente
    • Tiempos de espera de las conexiones de cliente inactivas
    • Tiempos de espera de la conexión del servidor inactiva
    • Tiempos de espera de la consulta
    • Cantidad máxima de instrucciones preparadas
    • Ignorar parámetros de inicio
    • Vida útil del servidor
  7. Haz clic en Actualizar instancia.

gcloud

Para modificar las opciones de configuración del grupo de conexiones administrado de una instancia existente, 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 \
    }

Reemplaza lo siguiente:

  • INSTANCE_ID: Es el nombre de la instancia de AlloyDB para la que deseas inhabilitar el grupo de conexiones administrado.
  • PROJECT_ID: el ID del proyecto.
  • REGION_ID: Es el ID de la región.
  • CLUSTER_ID: Es 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

REST

Para modificar las opciones de configuración del grupo de conexiones administrado de una instancia de grupo de lectura existente, usa el siguiente comando y establece connectionPoolConfig:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: el ID del proyecto.
  • LOCATION_ID: Es el ID de la región del clúster.
  • CLUSTER_ID: Es el ID del clúster que creaste. Debe comenzar con una letra minúscula y puede contener letras minúsculas, números y guiones.
  • INSTANCE_ID: Es el ID de la instancia que creas.
  • 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"
    },
  }
}

Consulta el estado del grupo de conexiones administrado de una instancia

Puedes ver el estado del grupo de conexiones administrado de una instancia con la consola de Google Cloud, Google Cloud CLI o la API de AlloyDB.

Console

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

    Ir a los clústeres

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

  3. En la página Descripción general, busca la instancia para la que deseas ver el estado del grupo de conexiones administrado. El campo Grupo de conexiones administrado muestra si está habilitado o inhabilitado.

gcloud

Para ver el estado del grupo de conexiones administrado de una instancia existente, 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)"

Reemplaza lo siguiente:

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

Si el grupo de conexiones administrado está habilitado, se muestra la siguiente respuesta:

True

REST

Para ver el estado del grupo de conexiones administrado de tu instancia de AlloyDB, usa el siguiente comando y busca connectionPoolConfig:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

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

Método HTTP y URL:

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

Inhabilita la agrupación de conexiones administradas para una instancia existente

Puedes inhabilitar el grupo de conexiones administrado para una instancia existente con la consola de Google Cloud, Google Cloud CLI o la API de AlloyDB.

Console

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

    Ir a los clústeres

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

  3. En la página Resumen, navega a Instancias en tu clúster.

  4. Haz clic en Editar instancia o Editar grupo de lectura de la instancia en la que deseas inhabilitar la conexión del grupo de conexiones administrado.

  5. En Grupo de conexiones administrado, borra la casilla de verificación Habilitar el grupo de conexiones administrado.

  6. Haz clic en Actualizar instancia.

gcloud

Para inhabilitar el grupo de conexiones administrado para una instancia existente, 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

Reemplaza lo siguiente:

  • INSTANCE_ID: Es el nombre de la instancia de AlloyDB para la que deseas inhabilitar el grupo de conexiones administrado.
  • PROJECT_ID: el ID del proyecto.
  • REGION_ID: Es el ID de la región.
  • CLUSTER_ID: Es el ID del clúster.

REST

Para inhabilitar el grupo de conexiones administrado para una instancia de grupo de lectura existente, usa el siguiente comando y establece connectionPoolConfig en false:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

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

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
  }
}

Supervisa la agrupación de conexiones administradas

AlloyDB proporciona las siguientes métricas para ayudarte a supervisar cómo se ejecuta el agrupamiento de conexiones administrado en tu instancia. Puedes ver estas métricas con el Explorador de métricas.

Nombre de la métrica Descripción
Cantidad de grupos de conexiones

/database/conn_pool/num_pools
Es la cantidad total de grupos de conexiones por base de datos.
Conexiones con clientes

/database/conn_pool/client_connections
Realiza un seguimiento de la cantidad 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 los siguientes:
  • active: Es la cantidad de conexiones activas por base de datos, incluidos los clientes inactivos que no tienen solicitudes de consulta pendientes.
  • waiting: Es la cantidad de clientes que esperan una conexión de servidor por base de datos.
Conexiones del servidor

/database/conn_pool/server_connections
Realiza un seguimiento de la cantidad 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 los siguientes:
  • active: Es la cantidad de conexiones activas por base de datos.
  • idle: Es la cantidad de conexiones de servidor inactivas por base de datos.
Tiempo de espera promedio

/database/conn_pool/client_connections_avg_wait_time
Es el tiempo promedio que pasan todos los clientes en estado de espera de un servidor en microsegundos por base de datos.

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

Limitaciones

Se aplican las siguientes limitaciones durante la versión Versión preliminar y están sujetas a cambios o eliminaciones en la versión GA o después:

  • La agrupación de conexiones administrada no admite la conexión con el proxy de autenticación de AlloyDB ni los conectores de lenguaje de AlloyDB.
  • Si usas el grupo de conexiones administrado en el modo de grupo de transacciones, las siguientes funciones de SQL no son compatibles:
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • Tablas temporales de PRESERVE/DELETE ROW
    • LOAD
    • Bloqueos de advertencia a nivel de la sesión
    • Planes preparados a nivel del protocolo