Attualmente sto cercando di speculare un cluster scalabile orizzontalmente per un'app Web basata su drupal, che assomigli al diagramma colorato di seguito:
Il bilanciamento del carico implementa sessioni permanenti, quindi un utente mantiene lo stato una volta assegnato un server con cui lavorare.
Ogni server app ha i seguenti:
- vernice sul davanti
- drupal 6 in mezzo correndo sulla pila di lampade
- memorizzato nella parte posteriore
I due server di database mysql si trovano su un IP condiviso e si trovano in un cluster HA con DRBD e hearbeat, in modo che perdere uno non riduca l'intera piattaforma.
Ci sono alcune cose di cui non sono sicuro che apprezzerei le tue opinioni su:
In che modo l'archiviazione dei file deve essere ridimensionata orizzontalmente?
Sto pensando di utilizzare NFS per montare una directory di file condivisi su ciascun server di app, quindi un file caricato in una volta è disponibile su tutti. Sto pensando a NFS perché esiste da secoli e non ho esperienza con MogileFS o GlusterFS, ed è qualcosa che abbiamo usato prima, quindi ne abbiamo più familiarità.
Ci sono delle linee guida da seguire per capire quanti server è saggio condividere una directory su NFS in questo modo?
Come dovrebbe essere fornito HA nella memoria file condivisa qui?
Un problema qui è che il server NFS è un singolo punto di errore.
Stiamo già utilizzando Heartbeat e DRBD sui server Mysql e preferirei mantenere il numero di tecnologie coinvolte in uno stack il più basso possibile: quali insidie ci sarebbero se dovessi usare la stessa strategia HA per il file anche i server?
Un approccio alternativo
Questo è per un sito interno rivolto, con un numero limitato di utenti che occasionalmente usano il sito in modo molto intenso per brevi periodi, quando un'iniziativa interna è attiva. Quindi questo non ha bisogno di ridimensionarsi all'infinito come un avvio.
Dato che
- c'è un limite massimo al traffico che possiamo aspettarci
- aggiungere l'aggiunta di HA ai file server e progettare un'impostazione per ridimensionare in orizzontale in questo modo introduce una notevole complessità
Sto anche considerando di rendere i due server Web più robusti in modo che possano gestire il carico di picco tra loro e impostare unisono o sincronizzare i due su un lavoro cron, in modo che:
- i file sono ancora sincronizzati (le sessioni permanenti mantengono un utente sullo stesso server in cui hanno caricato un file)
- perdere uno significa che il sito è ancora operativo.
Questo suona come un possibile modo per aggirare eventuali mal di testa di complessità NFS / DRBD HA?
Grazie,
C