linux:docker_postgresql

Essa é uma revisão anterior do documento!


Nessa arquitetura utilizaremos 3 máquinas em um cluster swarm. A pgPool que irá fazer o balanceamento de carga e monitoramento constante do status das máquinas, bem como o switchover para uma nova máquina master caso a master original venha a cair. Teremos a máquina pgMaster que terá o papel de master e a pgSlave que terá o papel de standby ou slave. A máquina Master ficará em modo Escrita/Leitura e a Slave ficará em modo apenas Leitura. Quando uma consulta de leitura, ex: Select * From users;, poderá ser direcionada pelo pgPool para qualquer uma das duas máquinas, porém, uma consulta de escrita, ex: Insert Into…, só poderá ser direcionada para a máquina Master. Abaixo temos um desenho da infraestrutura de modo geral:

* Configurando o DNS no resolv.conf

$ sudo vim /etc/init.d/resolv.conf

* adicione as linhas:

nameserver 8.8.8.8
nameserver 8.8.4.4

* Configurando o DNS no resolv.conf

$ sudo vim /etc/network/interfaces

* adicione as linhas, logo acima da linha dns-nameservers já existente:

dns-nameservers 8.8.8.8
dns-nameservers 8.8.4.4

* Adicione a chave do repositório Docker

$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

* Adicione o repositório

$ sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'

* Adicione o repositório

$ sudo apt-get update

* Instale o pacote do docker

$ sudo apt-get install -y docker-engine

* Adicionando o usuário atual do sistema ao grupo que pode usar o docker sem sudo

$ sudo usermod -aG docker $(whoami)

* Obtenha o script

$ wget https://github.com/docker/machine/releases/download/v0.6.0/docker-machine-$(uname -s)-$(uname -m)

* Troque o nome do script

$ mv docker-machine-Linux-x86_64 docker-machine

* Dando permissão de executável

$ chmod +x docker-machine

* Movendo o script para ficar disponível para os usuários

$ sudo mv docker-machine /usr/local/bin

* Inicialize o cluster Swarm na máquina primária, no nosso caso, pgpool.ifce.edu.br

$ sudo docker swarm init --advertise-addr <IP_VALIDO_DA_MAQUINA>

* Obtenha o comando para adicionar novos nós manager

$ sudo docker swarm join-token manager

* Copie o código impresso na tela e execute-o nas outras máquinas. O código será semelhante ao código abaixo:

docker swarm join \
    --token <TOKEN_MANAGER> \
    <IP_VALIDO_DA_MAQUINA_LEADER>:2377

* Verifique se o cluster está ativo e com todas as máquinas adicionadas. Execute o comando abaixo:

$ sudo docker node ls

A resposta será algo parecido com o texto abaixo:

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
xxxxxxxxxxxxxxxxxxxxxxxxx     postgres-master     Ready               Active              Reachable
xxxxxxxxxxxxxxxxxxxxxxxxx     postgres-slave      Ready               Active              Reachable
xxxxxxxxxxxxxxxxxxxxxxxxx *   pgpool              Ready               Active              Leader
  • linux/docker_postgresql.1496334663.txt.gz
  • Última modificação: 2021/08/25 10:33
  • (edição externa)