Eu criei um fórum de teste com dois contêineres web_only, o contêiner mail-receiver, Postgres e Redis em uma rede Docker. Os dois contêineres web nginx foram precedidos pelo HAProxy. Eles funcionaram bem, mas descobri que, ao reconstruir um dos dois contêineres web, sempre havia uma pequena quantidade de tempo de inatividade onde 503 era retornado.
Felizmente, encontrei uma solução alternativa mitigadora, mas nada perfeita;
antes de reconstruir app1, execute
echo \"disable server be_discourse/app1\" | socat stdio /run/haproxy/admin.sock
e então, após o término do processo de reconstrução de app1, execute
echo \"enable server be_discourse/app1\" | socat stdio /run/haproxy/admin.sock
Inversamente, para reconstruir
app2execute
echo \"disable server be_discourse/app2\" | socat stdio /run/haproxy/admin.sock
e então, após o término do processo de reconstrução de app2, execute
echo \"enable server be_discourse/app1\" | socat stdio /run/haproxy/admin.sock
isso é baseado em
/etc/haproxy/haproxy.cfgcorresponder em relação abe_discourse, eu não vou colar o arquivo de configuração em um bloco de código ainda, mas se uma massa crítica quiser, eu posso.
então isso mitiga o 503 dizendo ao HAProxy para desviar o tráfego antes que ele saiba que haveria um 503 do contêiner que está inativo.
você pode alternativamente criar uma página de erro, mas eu não tive muita sorte com isso e sinto que precisa de mais pesquisa. No entanto, isso realmente não resolve o problema do tempo de inatividade.