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ón | Puedes 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ón | Especifica las direcciones IP que serán escuchadas por el daemon de PgBouncer. Usa Listen_addr = * para escuchar todas las direcciones disponibles. |
auth_file | PgBouncer 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_conn | El máximo número de clientes que puede conectarse al pool (100, por defecto). |
admin_users | Asignació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_size | El número máximo de conexiones adicionales permitidas en caso de que ocurra algún problema. |
pool_mode | Define 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.