miércoles, 24 de septiembre de 2014

Comandos útiles para pgpool-II

Pgpool-II es un middleware entre clientes y servidores PostgreSQL que permite montar un sistema de réplica. Si no lo conocéis os aconsejo que le echéis un vistazo. Es muy interesante y cubre necesidades que otros métodos de réplica sobre PostgreSQL no abordan.

Un aspecto negativo de este proyecto es que no hay demasiada documentación. A continuación indico algunos comandos que facilitan la administración del cluster y permiten conocer el estado de pgpool-II:

Conocer el número de conexiones disponibles

Es necesario saber cuántas conexiones hay disponibles para los clientes con el propósito de anticiparse a un 100% de uso y por tanto a no aceptar nuevas conexiones.

ps -ef | grep "wait for connection request" | grep -v grep | grep -v PCP | wc -l
3030

Conocer el número de conexiones usadas por un equipo

Cuando se usan librerías de terceros para conectar una aplicación a una base de datos, como Hibernate, no se sabe a ciencia cierta cuántas conexiones abre contra pgpool-II. Esta métrica permite conocer mejor el uso que hacen estas librerías de las conexiones y posibilita saber cuántos clientes podemos tener conectados al mismo tiempo.

ps -ef | grep -E "pgpool: .*192.168.46.6" | grep -v grep | wc -l

Ver el estado de los nodos configurados en el cluster

En pgpool-II cada nodo PostgreSQL añadido al cluster puede estar en uno de estos tres estados:
  1. Nodo marcado como válido y sobre el que pgpool no ha escrito desde que se marcó con este estado.
  2. Nodo marcado como válido y sobre el que pgpool ya ha realizado escrituras.
  3. Nodo fuera de servicio, bien porque esa máquina está apagada, no tiene PostgreSQL en ejecución o sí lo está pero no tiene sus datos sincronizados con el resto de servidores válidos.

Dado que el log de pgpool-II tiene bastante verbosidad, la mejor forma de ver el estado de los servidores es el siguiente:

# tail -f /var/log/pgpool.log | grep "DB node"


Poco a poco iré poniendo más trucos sobre Pgpool-II, pues pueden resultar muy útiles para los que se inician en este mundo.