Il modo migliore per condividere una directory di upload di file su server Web con ridimensionamento orizzontale


9

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.

inserisci qui la descrizione dell'immagine

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

Risposte:


3

Il server NFS dovrà disporre almeno della stessa disposizione del server MySQL, poiché hanno sostanzialmente le stesse funzioni e limitazioni (entrambi sono luoghi in cui si scrivono i dati). Non mi piace l'idea di più autori di NFS, rende molto complessa la gestione dei blocchi di file e le mie esperienze su questo punto non sono andate molto bene.

Il mio suggerimento sarebbe quello di concentrare tutte le scritture su uno dei server delle app (forse avere un server delle app dedicato alla scrittura sul server NFS) e più server delle app per i lettori che lo montano in sola lettura (so che drupal ha alcune anteprime dinamiche che devono essere scritto, ma puoi mantenerlo al massimo su un RO fs). Sarà necessario almeno un secondo server NFS (utilizzare DRBD è la scelta migliore qui se non si dispone di una memoria condivisa come una SAN) per garantire HA.

Per ultimo, dai un'occhiata a Gluster e ad altri sistemi distribuiti.


0

Puoi provare mogileFS. L'avevo usato per i nostri progetti. È facile da usare e configurare e può ridimensionare e non ci sono singoli punti di errore.

http://danga.com/mogilefs/


0

Il modo migliore è trovare una buona soluzione di archiviazione. A seconda della scala e del tipo di applicazione, è possibile utilizzare un buon NAS, con supporto per NFS e almeno due porte gigabit e alimentatori (controlla alcune soluzioni aziendali).

Se sei davvero serio sulla tua applicazione, la soluzione migliore è controllare alcune soluzioni SAN, ma questo potrebbe essere molto costoso in quanto richiede hardware speciale (può essere fatto con hardware standard ma potrebbe essere troppo lento).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.