Abaixo está um exemplo da arquitetura pgpool:
Isso implica que você só precisa ter o pgpool em um único servidor; isso é verdade? Quando olho para a configuração, também vejo que você configura back-end pgpool.conf
; então isso implica ainda mais. Mas, não explica por que vejo o pgpool nos servidores de back-end também.
Ao examinar a documentação , também vejo:
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.
Então, eu não tenho certeza do que pensar; se é uma boa prática ter o pgpool em todos os back-end ou apenas em um servidor dedicado?
postgresql
architecture
pgpool
scalability
connection-pooling
Erwin Brandstetter
fonte
fonte
Respostas:
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ê 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 apgpool_regclass
função para a biblioteca que você copiou.fonte
Como em todo o resto, existem várias maneiras de realizar sua implantação de alta disponibilidade. Aqui vou sugerir algo da minha experiência (minha própria implementação de HA):
Finalmente, recomendo este tutorial passo a passo que o levará do zero (instalando o servidor PostgreSQL ...) para concluir a implementação de alta disponibilidade. O tutorial mencionado descreve a implementação que eu uso.
Espero que tenha ajudado.
ATUALIZAÇÃO: Obrigado @Moshe Katz - o link mudou. Agora atualizado aqui, no post original também.
fonte