Ho creato un forum di test con due container web_only, il container mail-receiver, Postgres e Redis su una rete Docker. I due container web nginx erano preceduti da HAProxy. Hanno funzionato bene, ma ho scoperto che ricostruendo uno dei due container web c’era sempre una piccola quantità di tempo di inattività in cui veniva restituito 503.
Fortunatamente, ho trovato una soluzione mitigante, ma niente di perfetto;
prima di ricostruire app1, esegui
echo \"disable server be_discourse/app1\" | socat stdio /run/haproxy/admin.sock
e poi, dopo che il processo di ricostruzione di app1 è terminato, esegui
echo \"enable server be_discourse/app1\" | socat stdio /run/haproxy/admin.sock
Viceversa, per ricostruire
app2esegui
echo \"disable server be_discourse/app2\" | socat stdio /run/haproxy/admin.sock
e poi, dopo che il processo di ricostruzione di app2 è terminato, esegui
echo \"enable server be_discourse/app1\" | socat stdio /run/haproxy/admin.sock
questo si basa sul fatto che
/etc/haproxy/haproxy.cfgcorrisponde per quanto riguardabe_discourse, non incollerò il file di configurazione in un blocco di codice per ora, ma se una massa critica lo desidera potrei farlo
quindi questo mitiga il 503 dicendo ad HAProxy di deviare il traffico prima che sappia che ci sarebbe stato un 503 dal container che è giù.
puoi creare alternativamente una pagina di errore, ma non ho avuto molta fortuna con quella e ritengo che necessiti di ulteriori ricerche. Tuttavia, questo non risolve realmente il problema del tempo di inattività.