un’ulteriore nota che si collega direttamente alla parte HAProxy della configurazione sopra.
Esiste un comportamento comune con HAProxy + Discourse per cui la ricostruzione di un container web (ad esempio con ./launcher rebuild app1) restituirà brevemente risposte 503 Service Unavailable perché HAProxy sta ancora inviando traffico a quel backend mentre si sta riavviando. Questo non è un errore in Discourse stesso: accade perché il backend è momentaneamente non disponibile durante la ricostruzione.
La soluzione consigliata consiste nell’utilizzare il socket di amministrazione di HAProxy per:
- disabilitare il server in HAProxy prima della ricostruzione, e
- riabilitarlo dopo che la ricostruzione è terminata
Ciò impedisce quei 503 transitori.
Esiste una discussione esistente su Meta che documenta questo comportamento e la spiegazione della soluzione alternativa:
Se qualcuno qui utilizza HAProxy per le ricostruzioni progressive (rolling rebuilds), quel thread fornisce un contesto utile per spiegare perché i comandi del socket di amministrazione sono inclusi nel runbook.