Quote:
Originally Posted by puchlij54
wenn ich die DB vom CMS in die MYSQL vom Gameserver einfüge, laden die Seiten extrem lange.
|
Da solltest du primär dran arbeiten.
Wenn ich davon ausgehe, dass deine beiden Server irgendwo in Europa stehen, sollten RTTs ("Pings") von über 20ms kaum vorkommen.
Die Bandbreite eines üblichen Servers (>= 100Mb/s) sollte selbst für umfangreiche Queries (bzw. große Ergebnismengen) ausreichen.
Weiter gehe ich mal davon aus, dass dein Gameserver (inkl. DB) nicht überlastet ist, die Queries also auf beiden Datenbankhosts ähnlich schnell bearbeitet werden können.
Da bleibt die Frage:
Warum verlängern sich die Ladezeiten der Website "extrem", wenn die Netzwerkverzögerung von üblicherweise 20ms (RTT) der einzige zusätzliche Zeitfaktor ist?
- Die Datenbank auf dem Gameserver ist langsam.
Das würde dann auch InGame auffallen, Abhilfe schafft bei ausgelasteten Servern Tuning, ansonsten ein Server-Upgrade.
- Die RTT zwischen beiden Servern liegt weit über 20ms (zu testen mit ping-Tool auf Server A zu Server B).
Einer der Hoster hat vmtl. einfach eine sehr schlechte Anbindung (zum anderen Hoster oder allgemein). Ein Hoster-/Standortwechsel schafft Abhilfe.
- Firewalls o.ä. verursachen Probleme bei der Verbindung, der Verbindungsaufbau dauert lange etc.
Das kann man testen, indem man z.B. mit PHP's microtime die Zeiten für Verbindungsaufbau und Queries misst, oder indem man mysql direkt in der Konsole verwendet.
Abhilfe schafft evtl. ein Verbindungstunnel wie ich ihn weiter unten bei der Sicherheit nochmal beschreibe.
Replikation (aka "Synchronisierung") löst das vermutliche Problem nicht. Übliche Netzwerkverzögerungen (max. 20ms in Europa) lassen sich zwar für den Client (die Website) eliminieren, aber die Replikation selbst erfolgt mit Verzögerung.
Außerdem kenne ich kaum einen Privatserver, bei dessen Website es auf (maximal) 20ms ankommt. Bei meinem eigenen Projekt wird zwar Replikation zum Einsatz kommen, aber das ist in erster Linie mit Ausfallsicherheit begründet.
Zum Punkt Sicherheit:
Das MySQL-Protokoll ist ansich unverschlüsselt, unterstützt aber nativ SSL/TLS. Persönlich habe ich mich noch nie damit befasst.
Um die (unsichere) Verbindung aber sicher zu tunneln, kann man ein VPN - z.B. OpenVPN - installieren (das benötigt Grundkenntnisse über Routing).
Eine einfachere Alternative ist eine persistente SSH-Portweiterleitung.
Hilfreich ist dafür das Programm

, welches als SSH-Client dient und die Verbindung im Fehlerfall neu aufbaut.
Beispiel:
Auf dem Webserver eine SSH-Verbindung öffnen:
Code:
autossh -M 0 -f -N -L 3307:localhost:3306 <gameserver>
Als MySQL-Adresse für die Website dient dann "localhost:3307", was durch den Tunnel zum Gameserver und von dort zu "localhost:3306" weitergeleitet wird.
Für Details zur Konfiguration schaust du dir am besten das

und

an.