Você está na página 1de 7

Administrando o banco de

dados PostgreSQL
Mauro Pichiliani
Balanceamento de carga no
PostgreSQL
• Balanceamento de carga por software (load balance) permite dividir as
conexões entre diferentes servidores PostgreSQL
• Nota: somente roteia as conexões. Dados ainda precisam ser replicados
• PostgreSQL não possui recurso nativo para balanceamento de carga
• Balanceamento: um por vez (round robin), por carga, menor latência
ou outra regra de roteamento
• Soluções comuns para o Linux:
• HAProxy - http://www.haproxy.org/
• Linux Virtual Server - http://www.linuxvirtualserver.org/
• Nginx - https://nginx.org/

• Soluções para Windows: Nginx e balanceador de carga do Windows


(NLB)
Exemplo de balanceamento: NGinx
Aplicação


Servidor: 192.168.91.182
Porta: 5400
Roteamento: Round robin

Servidor: 192.168.91.182 Servidor: 192.168.91.183


Porta: 5432 Porta: 5432
Login:postgres Login:postgres
Password:postgres Password:postgres
Balanceamento no PostgreSQL
com o Nginx no Windows
• Arquivo postgres.conf: parâmetro listen_addresses dos dois servidores

listen_addresses = '*,192.168.91.182'

listen_addresses = '*,192.168.91.183'

• Modifique o arquivo pg_hba.conf dos dois servidores:

host all all 192.168.91.182/32 md5


host all all 192.168.91.183/32 md5

• Teste a conectividade com o psql e o pgAdmin

C:\>psql –h 192.168.91.182 –U postgres


C:\>psql –h 192.168.91.183 –U postgres
Balanceamento no PostgreSQL
com o Nginx no Windows
• Download do Nginx: https://nginx.org/
• Documentação de rotamento TCP: http://bit.ly/2dEXX51
• Iniciar: start nginx
• Parar: nginx –s stop
• Teste no browser: http://localhost
• Veja log de erros na pasta /logs do Nginx
Balanceamento no PostgreSQL
com o Nginx no Windows
• Modificar o arquivo de configuração do Nginx /conf/nginx.conf

stream {
upstream db {
server 192.168.91.182:5432;
server 192.168.91.183:5432;
}
server {
listen 5400;
proxy_pass db;
}
}

• Simular a conexão cliente abrindo conexões no PgAdmin: veja que cada


conexão abre um servidor por vez!

• Verificar a lista de processos de cada um dos servidores (pgAdmin)


Conclusão
• Balanceamento de carga permite rotear conexões
• É preciso implementar replicação de forma separada do
roteamento
• O PostgreSQL não possui recurso nativo para load
balance
• HAProxy e NGinx podem rotear conexões TCP
• Diferentes formas de roteamento
• Antes de montar solução, crie diagrama de arquitetura
e documente o roteamento

Você também pode gostar