
Optimiza 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 tardar hasta varios segundos.
Para simplificar el proceso de conexión a PostgreSQL, especialmente cuando se espera un alto volumen de conexiones de clientes, se puede usar PgBouncer para gestionar eficazmente las conexiones entre clientes y la base de datos. Es un agrupador de conexiones popular que se conecta a la base de datos una sola vez y utiliza esa conexión en múltiples ocasiones para diferentes clientes. Y esa no es la única ventaja de utilizar PgBouncer.
Supongamos que tienes 100 clientes que necesitan conectarse a tu base de datos y no deseas compartir la contraseña del usuario de la base de datos entre estos clientes. En este caso, puedes usar PgBouncer. Puedes configurar logins y contraseñas individuales para conectarte, 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 vean 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 utiliza las conexiones ya existentes a la base de datos.
DataSunrise Database Security Suite junto con muchas otras características soporta la agrupación de conexiones con PgBouncer. Trabajando eficazmente con la asignación cliente-base de datos, mantiene una seguridad integral de la base de datos mientras PgBouncer esté en funcionamiento.
Ventajas de utilizar agrupadores de conexiones 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 para reinicio o actualización en línea sin desconectar las conexiones de los clientes
- ocultar el nombre real de la base de datos
- la posibilidad 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 demonio en Linux (llamado pgbouncer en ambos casos).
Para cambiar la configuración, localiza 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 a las bases de datos y especificar el login y la contraseña de un usuario de la base de datos (todos los clientes conectados al nombre alias especificado a través de PgBouncer utilizarán el login y la contraseña del usuario de la base de datos especificados en esta sección). |
[pgbouncer] sección | Especifica las direcciones IP en las que el demonio PgBouncer escuchará. Utiliza el Listen_addr = * para escuchar en todas las direcciones disponibles. |
auth_file | PgBouncer no forma parte de PostgreSQL, por lo que necesitas proporcionar la lista de usuarios con contraseñas cifradas necesarias para conectarse a PgBouncer. Auth_file es la 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 utilizar las contraseñas especificadas en el auth_file. Md5 está establecido por defecto. |
max_client_conn | La cantidad máxima de clientes que pueden conectarse al agrupador (100, por defecto). |
admin_users | Asignación de privilegios para el acceso a la consola de administración. |
default_pool_size | Asignación del número máximo de conexiones al 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 al servidor al cliente. Cuando la aplicación cliente se desconecta, la conexión se devuelve al agrupador. (transaction) PgBouncer asigna una conexión al servidor a la aplicación cliente hasta que se finaliza la transacción. (statement) PgBouncer asigna una conexión al servidor para cada consulta de la aplicación cliente. |
Como puedes ver, PgBouncer proporciona una solución sencilla para gestionar agrupadores de conexiones, especialmente cuando se trabaja con una arquitectura multi-hilo. Al utilizar 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 asignación de PgBouncer y han configurado DataSunrise Database Security Suite para proporcionar funcionamiento en toda su extensión, junto con este agrupador de conexiones.