Este artigo explica como configurar (e monitorar) um Cluster PostgreSQL Ativo/Passivo, usando Pacemaker, Corosync e DRBD. Escrito por Rafael Marangoni, do time de Servidor Linux da BRLink.
Acessando via rede
Se você precisar acessar o PostgreSQL via rede, não se esqueça de apontar para o DBIP (10.0.0.190). Será interessante configurar os acessos no postgresql.
Aqui, vamos setar autenticação MD5 via rede local 10.0.0.0/24. No nó que o postgresql estiver rodando (usar o crm_mon -1), executar o comando:
# echo "host all all 10.0.0.0/24 md5">> /var/lib/pgsql/data/pg_hba.conf
O monitoramento do cluster é algo obrigatório em ambientes sérios de alta disponibilidade. Principalmente porque caso um nó falhe, o cluster não deverá sofrer interrupções de serviço. Se o administrador não monitora a estrutura, fatalmente não perceberá a degradação do cluster.
Nós recomendamos o uso do Zabbix para ambientes de produção. Sugerimos que o Zabbix monitore, em cada um dos nós, de maneira independente e através de um agent:
Checar o Ping Local (10.0.0.191, 10.0.0.192 e 172.16.0.1, 172.16.0.2)
Checar Ping ao DBIP (Cluster IP) 10.0.0.190
Checar porta TCP do PostgreSQL (5432) no DBIP 10.0.0.190
Checar serviços gerais como uso de disco, processos, memória, processador etc.
Usar o seguinte script (bastante simples) chamado monitor_drbd.sh (que retorna 1 quando está tudo certo com o DRBD e 0 quando o DRBD tem problema).
Segue o script monitor_drbd.sh para o Zabbix:
#!/bin/bash
CHECK=`cat /proc/drbd | grep UpToDate/UpToDate | cut -d: -f5 | cut -c1-17`
STRING_OK="UpToDate/UpToDate"
# Comparando as duas.
if [ "$CHECK" == "$STRING_OK" ] ; then
# Is ok, returning 1
echo 1;
else
# Not ok, returning 0
echo 0;
fi
[2] Comentário enviado por mvquintella em 13/12/2010 - 18:54h
Olá.
Estou tentando esse procedimento mas estou empacando num ponto:
# mount -t ext3 /dev/drbd0 /var/lib/pgsql
Quando eu monto a pasta conforme o tutorial, (no meu caso como uso debian, o caminho que monto é /usr/local/pgsql) todas as pastas que estao dentro do pgsql somem (incluvise a pasa bin onde está localizado o initdb). Estou fazendo algo errado será??
[3] Comentário enviado por rafatmb em 14/12/2010 - 10:04h
Olá mvquintella,
Esta pasta /var/lib/pgsql no redhat (e afins) possui por exemplo a pasta data, onde o postgres armazena os dados da base.
Não tenho certeza qual é a pasta no debian. De qualquer modo, na primeira vez que você montar, você terá que usar o initdb para iniciarlizar os dados do postgres e popular a base.
[4] Comentário enviado por mvquintella em 15/12/2010 - 10:19h
Olá!
No debian o caminho da pasta data fica no caminho: /usr/local/pgsql/data
No caso eu devo fazer a montagem assim certo?
# mount -t ext3 /dev/drbd0 /usr/local/pgsql
Só que quando eu faço esse procedimento, todos os arquivos que estão dentro de /usr/local/pgsql somem... Inclusive a pasta data.
Eu devo rodar o initdb antes de fazer a montagem então?
Talvez eu esteja fazendo alguma cabaçada, gostaria de tentar entender onde hehe
[5] Comentário enviado por mvquintella em 15/12/2010 - 10:49h
Cara, obrigado pela ajuda. Provavelmente era alguma besteira que eu estava fazendo!
Recomecei do zero e consegui passar desse ponto. Conto com sua ajuda se eu travar em outro ponto heeein heheheh
Abs!
[6] Comentário enviado por rafaelbiagi em 05/03/2011 - 16:05h
Amigo, otimo artigo, bem explicado.
mas eu não sei o que acontece, segui certinho as configurações, um servidor pinga o outro mas esta apresentando o seguinte status no DRBD
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
[8] Comentário enviado por sbambam em 13/06/2012 - 22:48h
Prezados,
Gostaria de uma ajuda...
Ao executar o passo "yum install -y pacemaker corosync drbd83 kmod-drbd83 heartbeat" em pré-requisitos me deparo com as informaçoes abaixo. Eu acredito que não devo continuar sem esses pacotes...alguem pode dar uma luz...
[root@node1 ~]# yum install -y pacemaker corosync drbd83 kmod-drbd83 heartbeat
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: centos.redeminastelecom.com.br
* epel: mirror.cogentco.com
* extras: centos.redeminastelecom.com.br
* updates: centos-mirror.hostdime.com.br
Setting up Install Process
Package pacemaker-1.1.6-3.el6.x86_64 already installed and latest version
Package corosync-1.4.1-4.el6_2.2.x86_64 already installed and latest version
No package drbd83 available.
No package kmod-drbd83 available.
Package heartbeat-3.0.4-1.el6.x86_64 already installed and latest version
Nothing to do
[root@node1 ~]#
[9] Comentário enviado por felipeogutierrez em 15/12/2012 - 22:26h
[6] Comentário enviado por rafaelbiagi em 05/03/2011 - 16:05h:
Amigo, otimo artigo, bem explicado.
mas eu não sei o que acontece, segui certinho as configurações, um servidor pinga o outro mas esta apresentando o seguinte status no DRBD
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
[10] Comentário enviado por paulosantos41 em 12/09/2015 - 23:38h
Boa noite a todos,
eu estava fazendo esta configuração de cluster, e tudo funciona normalmente até o passo de criar o banco pgbench no node 1, mas quando vou checar se o banco pode ser acessado pelo node 2, o postgresql informa que não existe role para o usuário admpgsql. Alguém poderia me ajudar?
Estou utilizando o debian wheezy para fazer as configurações e estou seguindo todos os passos do artigo.