DataSunrise está patrocinando AWS re:Invent 2024 en Las Vegas, por favor visítenos en el stand #2158 de DataSunrise

Optimizando la Agrupación de Conexiones con PgBouncer

Optimizando la Agrupación de Conexiones con PgBouncer

La mayoría de las aplicaciones web utilizan bases de datos para almacenar sus datos. Las aplicaciones cliente pueden recuperar la información de la base de datos estableciendo una conexión con ella. Cada consulta consume recursos, incluyendo memoria, asignación de puertos y tiempo de CPU. Una transacción puede llevar milisegundos, pero establecer una conexión puede llevar hasta varios segundos.

Para simplificar el proceso de conexión a PostgreSQL, especialmente cuando se espera un alto volumen de conexiones de clientes, puedes usar PgBouncer para gestionar eficazmente las conexiones cliente-base de datos. Es un agrupador de conexiones popular que se conecta a la base de datos una vez y usa esta conexión muchas veces para diferentes clientes. Este no es el único beneficio de usar PgBouncer.

Supongamos que tienes 100 clientes que necesitan conectarse a tu base de datos y no quieres compartir la contraseña del usuario de la base de datos entre estos clientes. En este caso, puedes usar PgBouncer. Puedes establecer inicios de sesión y contraseñas individuales para que se conecten, de modo que PgBouncer y los clientes no usarán las contraseñas del usuario de la base de datos. Además, puedes asignar un nombre alias para la base de datos, de modo que los clientes no verán el nombre real de la base de datos.

En lugar de crear una conexión a la base de datos, se crea una conexión con PgBouncer que usa conexiones ya existentes a la base de datos.

DataSunrise Database Security Suite junto con muchas otras características soporta la agrupación con PgBouncer. Trabajando eficazmente con el mapeo cliente-base de datos, mantiene una seguridad integral de la base de datos cuando PgBouncer está en funcionamiento.

Ventajas de usar agrupaciones de conexiones con PgBouncer:

  • reducción del tiempo de procesamiento
  • reducción del consumo de recursos del servidor para mantener un gran número de conexiones del servidor a una o varias bases de datos
  • soporte de reinicio o actualización en línea sin desconectar las conexiones de los clientes
  • ocultar el nombre real de la base de datos
  • la capacidad de evitar compartir la contraseña del usuario de la base de datos con todas las aplicaciones cliente

Configurando PgBouncer

Después de la instalación, PgBouncer funciona como un servicio en Windows y como un daemon en Linux (denominado pgbouncer en ambas ocasiones).

Para cambiar las configuraciones, encuentra el archivo pgbouncer.ini en el siguiente directorio: pgbouncer/share. Contiene los siguientes parámetros:

 [database] secciónPuedes agregar bases de datos, definir sus hosts, puertos, asignar nombres alias para las bases de datos y especificar un inicio de sesión y contraseña de usuario de la base de datos (todos los clientes conectados al nombre alias especificado a través de PgBouncer usarán el inicio de sesión y la contraseña del usuario de la base de datos especificados en esta sección).
 [pgbouncer] secciónEspecifica las direcciones IP que serán escuchadas por el daemon de PgBouncer. Usa Listen_addr = * para escuchar todas las direcciones disponibles.
 auth_filePgBouncer no es parte de PostgreSQL, por lo que necesitas proporcionar una lista de usuarios con contraseñas encriptadas necesarias para conectarse a PgBouncer.  Auth_file es una ruta de directorio al archivo que contiene nombres de usuario y contraseñas.
 auth_type (md5 | crypt | plain | trust | any) Md5 es un argumento para usar contraseñas especificadas en el auth_file. Md5 está configurado por defecto.
 max_client_connEl máximo número de clientes que puede conectarse al pool (100, por defecto).
 admin_usersAsignación de privilegios con acceso a la consola de administración.
 default_pool_size Asignación del número máximo de conexiones de servidor por cada combinación usuario/base de datos.
 reserve_pool_sizeEl número máximo de conexiones adicionales permitidas en caso de que ocurra algún problema.
 pool_modeDefine el modo de agrupación: (session) PgBouncer asigna una conexión de servidor al cliente. Cuando la aplicación cliente se desconecta, la conexión se libera y vuelve al pool. (transaction) PgBouncer asigna una conexión de servidor a la aplicación cliente hasta que la transacción se complete. (statement) PgBouncer asigna una conexión de servidor para cada declaración de la aplicación cliente.

Como puedes ver, PgBouncer proporciona una solución fácil para gestionar pools de conexiones, especialmente al tratar con arquitecturas multi-hilo. Al usar conexiones existentes, PgBouncer elimina la necesidad de crear una conexión a la base de datos para cada cliente.

Nuestros desarrolladores han analizado a fondo los esquemas de mapeo de PgBouncer y han configurado DataSunrise Database Security Suite para funcionar plenamente junto con este agrupador de conexiones.

Siguiente

Balanceo de Carga con HAProxy

Balanceo de Carga con HAProxy

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Información general:
[email protected]
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
[email protected]