A continuación se muestra un ejemplo de arquitectura pgpool:
Esto implica que solo necesita tener pgpool en un único servidor; ¿Es esto cierto? Cuando miro la configuración, también veo que configuras backends pgpool.conf
; así que esto implica más. Pero, no explica por qué veo pgpool en los servidores de fondo también.
Cuando reviso la documentación también veo:
Si está utilizando PostgreSQL 8.0 o posterior, se recomienda encarecidamente instalar la función pgpool_regclass en todos los PostgreSQL a los que accede pgpool-II, ya que pgpool-II lo utiliza internamente.
Entonces no estoy seguro de qué pensar; si es una buena práctica tener pgpool en todos los servidores o solo un servidor dedicado?
postgresql
architecture
pgpool
scalability
connection-pooling
Erwin Brandstetter
fuente
fuente
Respuestas:
En general, no instalaría Pgpool en los servidores de fondo. Lo que ves en tu imagen es la configuración más común. Pgpool es un servidor independiente que esencialmente se encuentra frente a las bases de datos. Los dos servidores Postgres a menudo se configuran con replicación de transmisión; siendo uno el amo y el otro el esclavo.
Esto permite que Pgpool equilibre la carga de todas las consultas de lectura entre las dos (o más) bases de datos. Cualquier consulta que involucre escrituras se enrutará al servidor maestro, que a su vez se replica al esclavo.
Como dijo @Neil McGuigan , también puede tener múltiples servidores Pgpool para lograr una mejor disponibilidad. Técnicamente, podría instalar Pgpool en los servidores de bases de datos en esta configuración, pero esto sería una mala práctica. Ejecutar múltiples servidores Pgpool es una configuración mucho más compleja. Si esta es su primera vez con Pgpool, comenzaría con un servidor Pgpool antes de que funcionen dos.
En cualquiera de las configuraciones, su servidor de aplicaciones cree que solo se está conectando a una única base de datos Postgres.
Acerca de
pgpool_regclass
, que realmente debería ser una pregunta separada, esto es de las preguntas frecuentes de Pgpool :Si necesita esto, es solo un código SQL ejecutado en su servidor maestro de Postgres para agregar una función que Pgpool utiliza.
Con regclass, hay un paso adicional que debes hacer (estaba pensando en insert_lock). Si está compilando desde la fuente (generalmente la mayoría de las distribuciones tienen versiones realmente desactualizadas de Pgpool), también deberá compilar una biblioteca de Postgres.
Si compiló desde la fuente, tendrá que ir a la
.../pgpool-II-3.X.X/src/sql/pgpool-regclass
carpeta y hacer un./configure; make
.Copie el archivo pgpool-regclass.so en el directorio de extensión de Postgres. En mi servidor de Ubuntu 14.04 (solo usando el paquete Postgres 9.3 instalación), se encuentra en:
/usr/lib/postgresql/9.3/lib
. Recuerde hacer esto para todos los servidores de Postgres.Una vez que se haya completado, puede ejecutar
pgpool-regclass.sql
en el maestro. Esto solo asigna lapgpool_regclass
función a la biblioteca que copió.fuente
Al igual que con todo lo demás, hay muchas maneras en que puede lograr su implementación de alta disponibilidad. Aquí sugeriré algo de mi experiencia (mi propia implementación de HA):
Finalmente, recomendaré este tutorial paso a paso que lo guiará desde cero (instalando el servidor PostgreSQL ...) para completar la implementación de alta disponibilidad. El tutorial mencionado describe la implementación que uso.
Espero que haya ayudado.
ACTUALIZACIÓN: Gracias @Moshe Katz: el enlace cambió. Ahora actualizado aquí, en la publicación original también.
fuente