Lohnt es sich, einen separaten MySQL-Server zu verwenden?

8

Eine ähnliche Frage stellte sich in Meinungs Suppe über hier : Vielleicht gibt es keine ‚richtige‘ Antwort auf diese Frage , aber ich möchte mit der Gemeinde überprüfen.

Mein Kunde ist dabei, eine Fernsehwerbung zu starten. Sie erwarten im kommenden Monat Verkehr in der 7-stelligen Abteilung. Meine Aufgabe ist es, sicherzustellen, dass der Server nicht umfällt.

Meine Frage: Lohnt es sich, die MySQL-Datenbank auf einen separaten Server aufzuteilen, der nur die Datenbank bedient? Ich möchte dann mehrere Server haben, die die Codebasis enthalten und Apache bedienen und mit der Datenbankbox verbunden sind. Alle werden virtuelle Container sein.

Ich denke NICHT, dass ich mehrere DB-Server verwenden möchte - dies führt anscheinend zu unnötiger Komplexität und potenziellen Fehlern / Engpässen.

Liege ich falsch? Würde einige Erfahrungsmeinungen dazu begrüßen. Vielen Dank.

Jongosi
quelle

Antworten:

16

Wir haben in mehreren Fällen, in denen die Geschäfte stark frequentiert waren, einen separaten MySQL-Server verwendet. Das hat einige Vorteile

  1. Dedizierte Datenbankserver können an die spezifischen Anforderungen von MySQL angepasst werden, die sich von denen eines Webservers unterscheiden
  2. Es ist einfach, dem Cluster bei Bedarf einen zweiten Datenbankserver (mit Lastenausgleich) hinzuzufügen
  3. Wenn Ihre Datenbank ausfällt, stürzt das Frontend nicht ab, sodass Sie eine anständige Warn- oder Fehlerseite anzeigen können.

Wenn Magento ordnungsgemäß mit Varnish oder einer anderen FPC-Erweiterung zwischengespeichert wird, besteht der Hauptengpass in der Datenbank, die ich erlebt habe. Die tatsächliche Leistung wird für Ihre Datenbank benötigt. Auf diese Weise können Sie mit einem relativ kleinen Webserver beginnen und mehr in den Datenbankserver investieren.

Sander Mangel
quelle
13

Sicherheit:

Zusätzlich zu Sanders Antwort möchte ich hinzufügen, dass dies bei bestimmten PCI-Konformitätsstufen eine Voraussetzung ist :

Separate Web- und Datenbankserver CHD wird massenweise in der Datenbank gespeichert, was es zu einem hochwertigen Ziel für einen Angreifer macht. Ein separater Datenbankserver bedeutet, dass der Zugriff streng kontrolliert werden kann (begrenzte Exposition). Erforderlich gemäß Abschnitt 1 des PCI DSS.

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

Durch die Trennung von Web- und Datenbankaufgaben begrenzen Sie Ihre Gefährdung. Normalerweise befindet sich Ihre Datenbank in einem privaten Segment Ihres Netzwerks und ist öffentlich nicht zugänglich.

In PCI wird auch eine statische VPN-Verbindung zwischen Ihrem Web / Ihrer Datenbank empfohlen, und auf Ihren Netzwerkgeräten wird dringend eine Intrusion Detection empfohlen. Im Falle eines Kompromisses wird die Datenbank isoliert und die VPN-Verbindung so beendet, dass der Zugriff auf den Datenspeicher gesperrt wurde und nicht mehr zugänglich ist, obwohl Ihre Anwendung und Ihr Verschlüsselungsschlüssel jetzt kompromittiert sind.

Hochverfügbarkeit / Notfallwiederherstellung:

Sander ist hier genau richtig. Geh und stimme ihn ab. Ich würde hinzufügen, dass Ihre Datenbank im Falle einer kleinen Wartungsaufgabe wie einer Dateisystem-Sicherung oder eines Datenbank-Dumps bestenfalls für einige Zeit schreibgeschützt sein wird. In extremen Fällen habe ich gesehen, dass Wartezeiten für Sperren und Prozesswarteschlangen voll sind und alle verfügbaren Verbindungen in die Warteschlange gestellt oder getrennt werden. Die Seite "geht runter", effektiv.

Sie können dies abmildern, indem Sie Ihre Datenbank trennen und Ihren Webserver so planen, dass die Site während dieser Sicherungsfenster in den Wartungsmodus versetzt wird, ohne dass dies Auswirkungen auf das Dateisystem des Webservers hat.

philwinkle
quelle
1
Sicherheit macht dies zu einem Kinderspiel, PCI-DSS oder nicht. Wie bei allen vertraulichen Daten sollte zwischen dem Frontsystem und der Datenbank eine Firewall vorhanden sein.
Nic
0

Ich möchte meinen 1 Cent hinzufügen. Wenn eine Produktionsumgebung entworfen wird, sollten Sie als Faustregel berücksichtigen, dass Anwendung und Datenbank auf verschiedenen Servern vorhanden sind. Es bietet folgende Vorteile direkt oder direkt:

  • Insgesamt bessere Leistung (Ihre Anwendung verfügt über mehr Ressourcen)
  • Zuverlässigeres System (Absturz oder Ersticken eines Systems wirken sich möglicherweise nicht auf das andere aus. Natürlich funktioniert die Anwendung möglicherweise nicht nach Bedarf, sondern nur mit einer Komponente.)
  • Spezielle Ressourcen nach Bedarf (Sie können jedem Server nach Bedarf CPU / RAM / Speicher zuweisen)
  • Bessere Sicherheit (nur mit der Ausnahme, dass Sie eine Datenbankverbindung außerhalb Ihres Computers zulassen, dies kann jedoch durch auf IP-Adressen basierende Firewall-Einschränkungen oder ähnliche Ansätze verringert werden)
  • Muss erforderlich sein, um Highly Available (HA) zu erreichen
  • Systeme Einfache Erfüllung der DR-Anforderungen (Disaster Recovery)
  • Meiner Meinung nach sind nur Nachteile mehr Kosten und mehr Server zu verwalten.

Danke und Reagrd, Imran Javed Zia

Imran Javed
quelle