Alta disponibilidade e alta performance com PostgreSQL 9.0 + Pgpool-II

Com o novo modelo de replicação do PostgreSQL, torna-se viável a utilização de balanceamento de carga nas operações de leitura, uma vez que os servidores de contingência permanecem em modo read-only (Hot Standby). Até a versão 8.4, o balanceamento de carga só era possível se utilizado juntamente com ferramentas de replicação de terceiros, por exemplo Slony.

Apesar de ser uma replicação Master/Slave assíncrona, a funcionalidade Streaming Replication do PostgreSQL 9.0 garante uma replicação consistente e com atraso praticamente imperceptível para o usuário final. Este comportamento viabiliza a utilização dos servidores de contingência, denominados slaves, como fonte de dados atualizada, reduzindo a carga de leitura sobre o servidor master.

A ferramenta Pgpool-II possui a funcionalidade de balanceamento de carga, que visa distribuir operações de leitura entre os servidores envolvidos. Pensando na popularidade da replicação do PostgreSQL 9.0, o grupo de desenvolvedores do Pgpool-II acrescentou algumas funcionalidades específicas de integração com a nova versão do PostgreSQL, lançando a versão 3.0 do Pgpool-II.

A seguir um cenário possível envolvendo PostgreSQL 9.0 e Pgpool-II 3.0:

Pgpool-II é um software intermediário(middleware) entre a aplicação(frontend) e o servidor PostgreSQL(backend). Age de forma transparente e suporta até 128 nós de replicação. Pode-se considerar as seguintes funcionalidades principais:

Pooling de conexões (Aglomerador de conexões)

  • Mantém conexões abertas com o servidor PostgreSQL, reutilizando-as para novas conexões com as mesmas propriedades.
  • Reduz o overhead causado pela abertura de novos processos (fork) no servidor PostgreSQL.

Fonte: Pgpool Global Development Group

As conexões são fechadas entre o usuário e o Pgpool-II. O usuário devolve a conexão ao pool, mas as mesmas persistem no servidor de banco de dados para reutilização:

Fonte: Pgpool Global Development Group

Replicação

Permite o envio de todas as operações para todos os servidores PostgreSQL envolvidos.

Balanceamento de carga

Distribui consultas de forma aleatória entre os servidores PostgreSQL envolvidos.

Fonte: Pgpool Global Development Group

Consultas paralelas

Particiona tabelas entre os servidores envolvidos, possibilitando a execução de consultas ao mesmo tempo sobre conjuntos diferentes de dados.A funcionalidade de replicação do Pgpool-II não oferece a consistência necessária para a maioria das aplicações. O modelo de replicação é conhecido como Dual-master, sendo baseado em comandos. Desta forma os comandos são executados em cada servidor, tornando possível a existência de bases de dados com informações diferentes quando utilizadas funções que retiram informações do servidor. Por exemplo: now() e random().

A paralelização de consultas não é o foco deste artigo, mais informações sobre estas funcionalidades estão disponíveis no site do projeto http://pgpool.projects.postgresql.org/.

Para o ambiente em questão utiliza-se apenas as füncionalidades de pool de conexões e balanceamento de carga.

A versão 3.0 do Pgpool-II provê a este ambiente, as seguintes características:

  • Failover automático através da detecção de falha no processo monitor do Pgpool-II e execução de comando definido no parâmetro failover_command;
  • Modo de balanceamento Master/Slave específico para Streaming Replication;
  • Interpretação de comandos (parser) para distinguir comandos de alteração e consultas;
  • Verificação do atraso do servidor slave em relação ao master. Caso o atraso exceda o valor definido no parâmetro delay_threshold, as consultas só serão enviadas ao servidor master;
  • Possibilidade de adição de servidores slaves sem reiniciar o serviço do Pgpool.

Para que o próprio servidor do Pgpool-II não seja um ponto único de falha, pode-se configurar uma réplica do servidor. O script pgpool-HA é um recurso do software Heartbeat que pode garantir o serviço do Pgpool-II sempre ativo independente do servidor.

A ferramenta web Pgpooladmin pode auxiliar na administração das funcionalidades do Pgpool-II. Instalada no próprio servidor do Pgpool-II ela facilita tarefas de monitoramento, administração do processo e alterações na configuração. Estas ferramentas auxiliares estão disponíveis no site do projeto http://pgfoundry.org/projects/pgpool/.

A análise de ferramentas de alta disponilidade e desempenho para servidores PostgreSQL é o foco do Treinamento PostgreSQL Alta disponibilidade, promovido pela Dextra Sistemas. Este e outros ambientes são configurados pelos próprios alunos durante treinamento, visando capacitar o aluno na escolha e implantação da tecnologia adequada em ambientes corporativos.

Rolar para cima