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.
https://github.com/spbgovbr/sei-docker/releases/tag/3.0.0
Substituição do haproxy pelo traefik