2013-08-01 9 views
7

La società esegue attualmente un singolo sito Web basato su LAMP su un server VPS in modo che il DB e il server Web si trovino effettivamente nella stessa casella.Il nostro DB MySQL dovrebbe essere separato dai nostri server Apache?

Stiamo sviluppando un nuovo sito, che intendiamo ospitare sullo stesso server singolo (ad esempio, avremo tutto per foo.com e bar.com sul Server A).

Tuttavia, ci aspettiamo che il traffico aumenti e desideriamo migliorare la resilienza e la scalabilità. Ho suggerito un'architettura con bilanciamento del carico con un server DB separato, ad esempio

       Internet 
            ¦ 
           Load Balancer 
          /  \ 
         ¦ Server A ¦ ¦ Server B ¦ 
           \  /
           ¦ MySQL DB ¦ 

È un approccio ragionevole? O è troppo ingegnerizzato? Mi sembra rischioso tenere tutto su un unico server. Anche se non è possibile richiedere il bilanciamento del carico in questa fase, è comunque ragionevole dividere il DB dal server Web?

Ho visto un paio di domande simili a questo ma non sono sicuro se si applicano in un contesto Apache/MySQL. Quando ho lavorato su ambienti server Windows hanno sempre avuto server DB separati.

risposta

7

Sì, è una buona idea dividere il database e i server web. Decisamente.

Uno dei motivi principali è che ciascuna tecnologia (server Web, database) competerà per le risorse fisiche. Ad esempio, immagina di mettere anche il caching sul singolo server. Ora hai un server web, la memorizzazione nella cache e un database in competizione per la RAM. Solo così tanto per andare in giro.

Inoltre, le diverse tecnologie si scaleranno a un ritmo diverso. Potrebbero essere necessarie solo 2-3 macchine di database in un cluster e 10 server web. Hanno esigenze diverse e cresceranno in modo diverso. Non è una cattiva idea mordere il proiettile ora con un occhio verso la crescita.

Per quanto riguarda il nervosismo su un singolo server MySQL ... considererei obbligatorio impostare un lavoro per il backup dell'intero database ogni notte.

Inoltre, ho visto le macchine di produzione replicare i dati in un'altra casella MySQL che funge da backup a caldo. Non così difficile da configurare, ma costa un'altra macchina.

+0

Utilizziamo un backup a caldo su un sito con molti dati importanti inviati dall'utente. Non solo abbiamo un db replicato al secondo, possiamo anche eseguire backup a intervalli di mezz'ora senza influire sul sito principale eseguire ANCE. – TheJosh

4

Non sono d'accordo con ryan1234.

Il modello di utilizzo delle risorse dovrebbe essere abbastanza diverso tra un DBMS e un server web.

Inoltre, se hai intenzione di aumentare il numero di macchine, è piuttosto sciocco non cogliere l'occasione per rendere il sito MOLTO più resistente alle interruzioni.

Se fossi stato avrei probabilmente andare con 2 scatole entrambi i server web che eseguono sia MySQL in esecuzione, sia che servono le stesse vhosts e master-master replica asincrono sul database (con la possibilità di indirizzare il traffico verso un singolo nodo di il database/nodo singolo dei server Web.

Sì, se è necessario aggiungere molto più hardware di questo per gestire la capacità, quindi dividere il DBMS in un livello separato è una buona idea, ma sembra che tu sia un lungo

Problemi correlati