Pode ser necessário ativar a ligação não local no host do docker.
Adicione net.ipv4.ip_nonlocal_bind=1
ao final do arquivo /etc/sysctl.conf
e force o recarregamento do arquivo com o comando sudo sysctl -p
.
Eu quero praticar na criação de aplicativos da web de alta disponibilidade usando vários contêineres do Docker em uma única máquina.
Eu inicio vários servidores web nos contêineres do Docker. Digamos, três servidores rest1
, rest2
e rest3
.
Eu uso o Docker com o balanceador HAProxy, que é vinculado a 127.0.0.1:80
e direciona as consultas para rest
servers. Isso me permite ter certeza de que quando um ou dois rest
servidores falharem, poderei fazer consultas para 127.0.0.1:80
e receber resultados corretos.
O ruim é: quando o HAProxy está desativado, o aplicativo da web está inativo.
Eu quero usar vários contêineres HAProxy Docker com serviço Keepalived em cada contêiner.
O problema é: eu preciso de vários contêineres do Docker para ouvir um IP e uma porta. Por exemplo, eu terei haproxy1
e haproxy2
, que serão vinculados a localhost
via Keepalived.
Quando eu defino o IP no arquivo de configuração HAProxy, que não é um IP do contêiner atual do Docker, ele me mostra um erro, que o HAProxy não pode escutar esse IP e PORT.
É possível configurar vários contêineres Docker com HAProxy e Keepalived para escutar um IP e PORT?
Configuração do HAProxy:
defaults
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
mode http
bind 172.17.0.10:80
default_backend BACKEND
backend BACKEND
option httpchk
server rest1 rest1:8080 maxconn 32 check
server rest2 rest2:8080 maxconn 32 check
server rest3 rest3:8080 maxconn 32 check
falha com erro
Starting frontend http-in: cannot bind socket [172.17.0.10:80]
172.17.0.10 é membro da sub-rede do Docker e não está reservado na minha máquina.
Pode ser necessário ativar a ligação não local no host do docker.
Adicione net.ipv4.ip_nonlocal_bind=1
ao final do arquivo /etc/sysctl.conf
e force o recarregamento do arquivo com o comando sudo sysctl -p
.