Vale la pena usare un server MySQL separato?


8

Una domanda simile si è trasformata in una zuppa di opinioni qui : quindi forse non c'è una risposta "giusta" a questo, ma voglio verificare con la comunità.

Il mio cliente sta per lanciare un annuncio TV. Si aspettano traffico nel dipartimento a 7 cifre nel prossimo mese. Il mio compito è garantire che il server non cada.

La mia domanda: vale la pena dividere il database MySQL su un server separato, che serve solo il database. Voglio quindi avere più server che contengono la base di codice e servono apache, interfacciarsi con la casella del database. Tutti saranno contenitori virtuali.

NON (penso) voglio usare più server DB - sembra che introdurrà complessità inutili e potenziali errori / colli di bottiglia.

Ho sbagliato? Gradirei alcune opinioni sull'esperienza in merito. Grazie.

Risposte:


16

Abbiamo utilizzato un server MySQL separato in diversi casi in cui i negozi stavano attraversando un traffico elevato. Ci sono un paio di vantaggi

  1. I server di database dedicati possono essere adattati alle esigenze specifiche di MySQL che sono diverse da un server web
  2. È facile aggiungere un secondo server di database (con bilanciamento del carico) al cluster quando necessario
  3. Quando il database si arresta, il front-end non si arresta in modo da poter visualizzare una pagina di avviso o errore decente.

Quando Magento viene correttamente memorizzato nella cache con Varnish o qualsiasi altra estensione FPC, il principale collo di bottiglia sarà il database di quello che ho sperimentato. Il vero potere sarà richiesto per il tuo database. In questo modo è possibile iniziare con un server Web relativamente piccolo e investire di più nel server di database.


13

Sicurezza:

Oltre alla risposta di Sander, aggiungerei che a determinati livelli di conformità PCI questo è un requisito :

Server Web e database separati CHD è archiviato in massa nel database, rendendolo un bersaglio di alto valore per un aggressore. Un server di database separato significa che l'accesso può essere rigorosamente controllato (esposizione limitata). Richiesto dalla Sezione 1 del PCI DSS.

Fonte: http://www.focusonpci.com/site/index.php/PCI-101/technical-requirements.html

Separando le funzioni di web e database stai limitando la tua esposizione. In genere il tuo db si trova in un segmento privato della tua rete e inaccessibile pubblicamente.

Una connessione VPN statica è anche suggerita, in PCI, tra il tuo web / db e il rilevamento delle intrusioni è fortemente consigliato sulle tue apparecchiature di rete. In caso di compromissione, il db verrà isolato e la connessione VPN interrotta in modo tale che, anche se l'applicazione e la chiave di crittografia sono state compromesse, l'accesso all'archivio dati è stato bloccato ed è inaccessibile.

Disponibilità elevata / Disaster Recovery:

Il punto di Sander è qui. Vai a votarlo. Aggiungo che anche in caso di piccole attività di manutenzione come l'esecuzione di un backup del filesystem o di un dump del database, il tuo db sarà, nella migliore delle ipotesi, limitato alle letture per un po 'di tempo. In casi estremi ho visto timeout di attesa blocco e code di processo riempire che tutte le connessioni disponibili sono messe in coda o eliminate. Il sito "scende", in modo efficace.

Puoi mitigarlo separando il tuo db e programmando il tuo server web per mettere il sito in modalità di manutenzione durante queste finestre di backup senza alcuna conseguenza per il filesystem del web server.


1
La sicurezza lo rende un gioco da ragazzi, PCI-DSS o no. Come per tutti i dati sensibili, dovrebbe esserci un firewall tra il sistema frontale e il database.
Nic,

0

Vorrei aggiungere il mio 1 centesimo, quando viene progettato un ambiente di produzione, considera di avere l'applicazione e il database su server diversi come regola empirica. Darà i seguenti benefici direttamente o direttamente:

  • Prestazioni complessivamente migliori (la tua applicazione ha più risorse)
  • Sistema più affidabile (lo schianto o il blocco di uno potrebbe non influire sull'altro. Naturalmente l'applicazione potrebbe non funzionare secondo le necessità, ma un componente)
  • Risorse dedicate secondo necessità (È possibile allocare CPU / RAM / Archiviazione su ciascun server secondo necessità)
  • Migliore sicurezza (solo a eccezione del fatto che si consenta la connessione al database all'esterno del computer, ma ciò può essere mitigato con restrizioni del firewall basate su indirizzi IP o approcci simili)
  • Requisito necessario per ottenere Highly Available (HA)
  • Sistemi Facilità di risposta alle esigenze di Disaster Recovery (DR)
  • A mio avviso, solo gli svantaggi sono più costi e più server da gestire.

Grazie e Reagrd, Imran Javed Zia

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.