spbgovbr/sei-docker

Balanceador presente no projeto não funciona com o docker compose na v2.x.x

marlinhares opened this issue · 3 comments

Atualmente usamos um haproxy customizado.
https://github.com/docker-archive/dockercloud-haproxy

Ele cria os backends automaticamente de forma transparente bastando informar poucas diretivas.
Ele usa o docker.sock do host para mapear a necessidade de autoreconfiguração e discovery das entradas.

Com a chegada do docker compose v2.x esse haproxy parou de funcionar. Provavelmente a nova versão mudou a api de discovery e fez com que o haproxy pare de funcionar.

Com isso surge a necessidade de ou adaptar o atual para funcionar sem o mecanismo de discovery ou usar um novo mantendo as caracterísitcas atuais do projeto:

novo servico habilitado no env, significa nova entrada no balanceador (ex: /sei, /sip/, /solr, /admindb, /mail, etc)
escalonamento de servico ele faz o balancemento mantendo o sticksession para o sei

Maiores informações nesta issue do super-docker:
pengovbr/super-docker#15

Isso acontece pois a versão do docker compose usada difere ligeiramente da versão docker-compose na qual foi construído o projeto.

Diferenças de comportamento encontradas:

Estas duas versões tratam o volume exportado de forma diferente. O volume /sei/controlador-instalacoes ao invés de parar dentro do volume de instalacao, era criado em novo volume. Isso já foi resolvido no commit: pengovbr/super-docker@e9989c4

Estas duas versões tratam os serviços docker de forma diferente internamente. O haproxy que usamos precisa acessar o docker.sock do host para configurar automaticamente seus backends. Como esse tratamento é diferente nas duas versões o haproxy usado não consegue configurar os backends.

Verifique as sugestões de solução abaixo.

Soluções Atualmente Disponíveis Para Esse Caso:

1. Uso do docker-compose na versão 1.29 que é compatível

para instalar:

  • caso exista na sua vm um alias ou link simbólico do docker compose para o docker-compose, desfaça-o e baixe a versão docker-compose 1.29 como abaixo

  • baixe o docker-compose na versão compatível:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version
  • o ultimo comando deverá retornar 1.29

Desta forma o haproxy vai conseguir se auto-configurar e tudo deve funcionar como esperado.

2. Desabilitar o Balanceador

Esta segunda opção é para o caso de não querer adotar a solução 1 acima.
Caso vc não queira usar o docker-compose indicado então terá que abrir mão do balanceador enquanto não o substituirmos por outro compatível ou adequarmos o atual para funcionar com a nova versão do compose.

Para desabilitar o balanceador, vc pode mandar o ecossistema ignorá-lo e hablitar apenas o apache. Isso já existe de forma automática no projeto, basta atualizar as seguintes variáveis no envlocal.env:

export BALANCEADOR_PRESENTE=false
export APP_PORTA_80_MAP_EXPOR=true
export APP_PORTA_443_MAP_EXPOR=true

Alterar o comando no Makefile
na linha:
COMMMADCOMPOSE = docker-compose
altere para:
COMMMADCOMPOSE = docker compose

n esqueça de antes de alterar o envlocal.env, rodar o make clear e tb o make apagar_volumes ou então pare e remova todos os conteineres bem como os volumes.