MONTANDO OS CLUSTERS:

Maquina 1 : Master : (10.0.0.1)

Maquina 2 : Slave : (10.0.0.2)

Maquina 3 : Pgpool : (10.0.0.3)

Especificações:

  • postgresql - version 10.0

  • pgpool - version 3.7

  • ubuntu - 16.04

Montando as maquinas:

Maquina 1 : MASTER : 10.0.0.1

1.1 - Instalar o postgres-10

sudo apt-get install postgresql-10

  • Caso venha a usar uma versão diferente lembre-se que as maquinas devem estar na mesma versao

1.1.1 - Caso não tenha o pacote do postgresql-10:

$ echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' >> /etc/apt/sources.list.d/pgdg.list
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install postgresql-10
  • Caso ainda nao consiga pesquise na internet outro metodo ou instale uma versao diferente

1.2 - Criar um usuario no banco de dados.

$ sudo su - postgres
$ createuser -P pgpool
  • Preste atencao neste usuario ele será importante em todos as etapas

1.3 - Mudar as configurações do postgresql:

  • Altere ou adicione se caso não exister as seguintes configurações:

$ sudo vim /etc/postgresql/10/main/postgresql.conf

listen_addresses = 'localhost,10.0.0.1'
wal_level = hot_standby
max_replication_slots = 3
max_wal_senders = 3
  • Reinicie para aplicar as configurações

$ sudo service postgresql restart

1.4 - Mudar as configurações das permissões de conexão do postgres:

  • Altere ou adicione se caso não existir

$ sudo vim /etc/postgresql/10/main/pg_hba.conf

 local   all           postgres                 peer
 local   all           all                      peer
 host    all           all        127.0.0.1/32  md5
 host    all           all        ::1/128       md5
 host    replication   all        10.0.0.2/32   trust   # the slave
 host    postgres      pgpool     10.0.0.3/32   trust   # the client
 host    all           all        10.0.0.3/32   md5     # the client
  • Reinicie para aplicar as configurações

$ sudo service postgresql restart

1.5 - Criar um slot para o slave:

$ sudo su - postgres
$ psql
$ select * from pg_create_physical_replication_slot('theslave');
  • Reinicie para aplicar as configurações

$ sudo service postgresql restart

Maquina 2 : SLAVE : 10.0.0.2

2.1 - Instalar o postgres-10

$ sudo apt-get install postgresql-10

  • Caso venha a usar uma versão diferente lembre-se que as maquinas devem estar na mesma versão

2.3 - Mudar as configurações dos postgresql:

  • Altere ou adicione se caso não exister as seguintes configurações:

$ sudo vim /etc/postgresql/10/main/postgresql.conf

listen_addresses = 'localhost,10.0.0.2'
wal_level = hot_standby
hot_standby = on
hot_standby_feedback = on
  • Reinicie para aplicar as configurações

$ sudo service postgresql restart

2.4 - Mudar as configurações das permissões de conexão do postgres:

  • Altere ou adicione se caso não existir

$ sudo vim /etc/postgresql/10/main/pg_hba.conf

 local   all           postgres                 peer
 local   all           all                      peer
 host    all           all        127.0.0.1/32  md5
 host    all           all        ::1/128       md5
 host    postgres      pgpool     10.0.0.3/32   trust   # the client
 host    all           all        10.0.0.3/32   md5     # the client
  • Reinicie para aplicar as configurações $ sudo service postgresql restart

2.5 - Criar um usuario no banco de dados, foi criado o usuario com o nome pgpool

$ sudo su - postgres
$ createuser -P pgpool
  • Preste atencao neste usuario ele será importante em todos as etapas

2.6 - Fazer a replicação:

$ sudo service postgresql stop
$ sudo su - postgres
$ cd 10/
$ rm -rf main
$ pg_basebackup -v -D main -R -P -h 10.0.0.1
  • Volte o serviço do postgres

$ sudo service postgresql start

Maquina 3 : pgpool : 10.0.0.3

3.3 - Instale o postgresql-client-10

$ sudo apt-get install postgresql-client-10$

  • Lembre-se, que deve ser o cliente e nao o serviço

3.4 Instale o pgpool2

$ sudo apt-get install pgpool2

3.5 - Mudar as configurações do pgpool2

$ sudo vim /etc/pgpool2/pgpool.conf

listen_addresses = '*'
port = 5432

backend_hostname0 = '10.0.0.1'
backend_port0 = 5432
backend_weight0 = 1
backend_flag0 = 'DISALLOW_TO_FAILOVER'

backend_hostname1 = '10.0.0.2
backend_port1 = 5432
backend_weight1 = 1
backend_flag1 = 'DISALLOW_TO_FAILOVER'

enable_pool_hba = on
pool_passwd = 'pool_passwd'
connection_cache = off
replication_mode = off
replicate_select = off
load_balance_mode = on
master_slave_mode = on
master_slave_sub_mode = 'stream'
sr_check_user = 'pgpool'
wd_lifecheck_user = 'pgpool'

3.6 - Mudar as configurações do arquivo de conexâo

$ sudo vim /etc/pgpool2/pool_hba.conf

  • em algumas versoes este arquivo pode ter nome diferente
local   all         all                               md5
host    all         all          127.0.0.1/32         md5
host    all         all          ::1/128              md5
$ sudo pgpool reload
$ sudo service pgpool2 restart

3.7 - Criar um usuario através do pgpool para autenticação

$ sudo pg_md5 -u pgpool -m 123
$ sudo pgpool reload

3.8 - Reinicie o pgpool2 novamente

$ sudo pgpool reload
$ sudo service pgpool2 restart
  • Caso você queira debugar a execução do pgpool:
$ sudo service pgpool2 stop
$ sudo pgpool -n -d -f /etc/pgpool2/pgpool.conf

3.9 - Fazendo uma conexao

  • aqui voce entrará no postgres

$ psql -p 5432 -U pgpool -d postgres

Criando um banco

4.1 Na maquina 10.0.0.1

  • Crie o banco de dados que voce deseja
- sudo su - postgres
- createdb teste
  • Adicione permissoes de conexoes nele

$ sudo vim /etc/postgresql/10/main/pg_hba.conf

host    teste      pgpool     10.0.0.3/32   md5   # the client
  • E garanta os privilegios para o usuario
GRANT ALL PRIVILEGES ON DATABASE teste TO pgpool;
  • Reinicie para aplicar as configurações

$ sudo service postgresql restart

4.2 Na maquina 10.0.0.2

  • Adicione permissoes de conexoes nele

$ sudo vim /etc/postgresql/10/main/pg_hba.conf

host    teste      pgpool     10.0.0.3/32   md5   # the client
  • Reinicie para aplicar as configurações

$ sudo service postgresql restart