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.
Em primeiro lugar, nós precisaremos configurar o /etc/drbd.conf em ambos os nós:
# vi /etc/drbd.conf
global {
usage-count no;
}
common {
syncer { rate 100M; }
protocol C;
}
resource postgres {
startup {
wfc-timeout 0;
degr-wfc-timeout
120;
}
disk { on-io-error detach; }
on node1.clusterbr.int {
device /dev/drbd0;
disk /dev/sdb;
address 172.16.0.1:7791;
meta-disk internal;
}
on node2.clusterbr.int {
device /dev/drbd0;
disk /dev/sdb;
address 172.16.0.2:7791;
meta-disk internal;
}
}
Os principais pontos da configuração são:
resource: refere-se ao recurso gerenciado pelo DRBD (aqui é chamado postgres)
disk: refere-se ao dispositivo que será usado (um disco ou partição)
address: Endereço IP e porta usadas pelo DRBD para replicação (repare que estamos usando os endereços da interface Cross-Over)
syncer: a taxa de transferência entre os nós (nós usamos 100M porque temos uma interface Gigabit)
[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.