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:
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.
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:
- Nodo marcado como válido y sobre el que pgpool no ha escrito desde que se marcó con este estado.
- Nodo marcado como válido y sobre el que pgpool ya ha realizado escrituras.
- 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.