Geralmente você não instalaria o Pgpool nos servidores back-end. O que você vê na sua foto é a configuração mais comum. O Pgpool é um servidor autônomo que fica basicamente na frente dos bancos de dados. Os dois servidores Postgres geralmente são configurados com replicação de streaming; sendo um o mestre e o outro o escravo.
Isso permite que o Pgpool balanceie todas as consultas de leitura entre os dois (ou mais) bancos de dados. Quaisquer consultas que envolvam gravações serão roteadas para o servidor mestre, que por sua vez é replicado para o escravo.
Como @Neil McGuigan disse , você também pode ter vários servidores Pgpool para obter melhor alta disponibilidade. Tecnicamente, você pode instalar o Pgpool nos servidores de banco de dados nessa configuração, mas isso seria uma prática ruim. A execução de vários servidores Pgpool é uma configuração muito mais complexa. Se esta é sua primeira vez no Pgpool, eu começaria com um servidor Pgpool antes de colocar dois no trabalho.
Em qualquer uma das configurações, seu servidor de aplicativos pensa que está apenas se conectando a um único banco de dados Postgres.
Sobre pgpool_regclass
, que realmente deve ser uma pergunta separada, esta é da FAQ do Pgpool :
Se você estiver usando o PostgreSQL 8.0 ou posterior, é altamente recomendável instalar a função pgpool_regclass em todo o PostgreSQL a ser acessado pelo pgpool-II, pois é usada internamente pelo pgpool-II. Sem isso, o tratamento de nomes de tabelas duplicados em esquema diferente pode causar problemas (tabelas temporárias não são um problema).
Se você estiver usando o PostgreSQL 9.4.0 ou posterior e o pgpool-II 3.3.4 ou posterior, 3.4.0 ou posterior, não será necessário instalar o pgpool_regclass, pois o PostgreSQL 9.4 incorporou o pgpool_regclass como a função "to_regclass".
Se você precisar disso, são apenas alguns códigos SQL executados no servidor mestre do Postgres para adicionar uma função que o Pgpool usa.
Com regclass, há uma etapa adicional que você deve executar (eu estava pensando em insert_lock). Se você estiver compilando a partir do código-fonte (geralmente a maioria das distribuições tem versões realmente desatualizadas do Pgpool), você também precisará compilar uma biblioteca do Postgres.
Se você compilou a partir do código-fonte, precisará ir para a .../pgpool-II-3.X.X/src/sql/pgpool-regclass
pasta e fazer a ./configure; make
.
Copie o arquivo pgpool-regclass.so no diretório de extensão do Postgres. No meu servidor Ubuntu 14.04 (apenas usando o pacote Postgres 9.3 instalar), situa-se em: /usr/lib/postgresql/9.3/lib
. Lembre-se de fazer isso para todos os servidores Postgres.
Quando isso estiver concluído, você poderá executar pgpool-regclass.sql
no mestre. Isso apenas mapeia a pgpool_regclass
função para a biblioteca que você copiou.