Serverdienste auslagern

SPQRInc

New Member
Hallo!

Ich bin neu hier und habe gleich eine Frage:

Ich habe ein Debian-System (7.0) auf dem Proxmox installiert ist. Das Virtualisieren von OpenVZ und KVM-Servern funktioniert schon ganz gut :-)


Nun möchte ich langfristig folgendes erreichen: Ich möchte, dass verschiedene Dienste ausgelagert werden und jederzeit "erweitert" werden können.

Also: Der MySQL-Server beispielsweise soll auf einem KVM-vServer installiert werden. Dieser MySQL-Server soll unter einem Management-Node erreichbar und nutzbar sein.
Sollten nun später weitere Kapazitäten nötig sein, soll es möglich sein, einen weiteren vServer zur Erweiterung "dazu zu schalten".

Gleiches soll vor allem mit dem Webserver umgesetzt werden.

Ist Webinhalts-vServer1 stark belegt, so soll ein anderer vServer dazu geschaltet werden, der die Kapazitäten erweitert.

Sinn der Übung: Ich sammle im Rahmen meines Studiums sehr viele Daten, die gespeichert und ausgegeben werden. Hier möchte ich in Sachen Speicher- und Rechenleistung flexibel bleiben.

Ich weiß nur nicht genau, wonach ich googeln soll: Welcher Begriff gibt das von mir Gewünschte am ehesten wieder?

Danke schon einmal für eure Antworten!
 
Sollten nun später weitere Kapazitäten nötig sein, soll es möglich sein, einen weiteren vServer zur Erweiterung "dazu zu schalten".
Zumal Mysql ist ein sehr schlecht skalierender Dienst. Es lässt sich über mehrere (virtuelle oder relle) Maschinen nur via Sharding (horizontales Skalieren), Clustering (Loadbalancing) und Master-Master Replikation (pseudo-vertikales Skalieren) verteilen. Mal "einfach so" weitere vServer aufschalten geht also nicht.

Ist Webinhalts-vServer1 stark belegt, so soll ein anderer vServer dazu geschaltet werden, der die Kapazitäten erweitert.
Generell gesprochen brauchen _ALLE_ Dienste mindestens einen shared Storage (sei es Cluster-Dateisystem, NFS, ...), Loadbalancer, Session Attribution, ... was viele weitere Probleme mit sich bringt.
Allerdings bin ich mir nicht sicher - sollen diese weiteren vServer auf dem gleichen Host oder einer anderen Maschine liegen? Wenn auf dem gleichen Host kannst du einfach die Leistung des Container schlicht erhöhen.

Hier möchte ich in Sachen Speicher- und Rechenleistung flexibel bleiben.
Gibt es einen spezifischen Grund warum alles in einen eigenen Container gepackt werden muss? Wenn Rechtetrennung oder Libraries das Argument ist so sollte ein Chroot Container die Arbeit genau so gut und bedeutend performanter+flexibler lösen.

In aller Regel ist übrigens (fast) immer die Festplattengeschwindigkeit der limitierende Faktor.
 
Ich finde die angestrebte Separierung und Virtualisierung von Diensten schon sinnvoll (mach ich auch so).

So kann leicht eine VM (z.B. der DB Server) mit mehr Ressourcen versorgt werden, wenn nötig. Auch ein Umzug auf einen anderen, leistungsstärkeren Host (wenn keine Ressourcen mehr verteilt werden können) ist leicht möglich, die VM läuft einfach auf dem anderen Server weiter, neu installiert werde muss nicht. Idealerweise kompartimentiert man das in einer KVM oder VMWare VSphere Umgebung und sollte die Möglichkeit beim Anbieter haben, hier entsprechend Ressourcen zuschalten zu können. Die "Standardhoster" bieten sowas aber nur sehr limitiert an an!

https://www.strato-pro.com/ger/multiserver/ oder https://www.strato-pro.com/ger/server-cloud/ , richtig coole aber auch sehr teuere Sachen kann man bei http://www.ovh.de/dedicated-cloud/index.xml machen.

Mein Weg, der evtl zu dem vorliegenden Problem passt: ich habe einen dedizierten, ESXi fähigen Server bei Datafabrik bestellt und dabei die Hardwarefeatures selbst ausgewählt (kann man bei den Großen nicht machen). Auf dieser Kiste laufen mehrere VMs. Der (demnächst) limitierende Faktor für mehr VMs werden RAM und Festplattenplatz sein. Daher wird nächste Woche das Mainboard ausgetauscht, das RAM verdoppelt und eine neue Festplattenkonfiguration Raid 1 mit 2 Platten auf Raid 5 mit 4 Platten konfiguriert. Die VMs werde ich von einer Platte der alten VM (die temporär dran hängen wird) schlicht auf den neuen Datastore hinüberkopieren und dort einfach weiter laufen lassen. Die Downtime kann dadurch minimiert werden, dass die VMs schon von der alten Platte wieder neu gestartet werden können und eine nach der anderen mit max Festplattenspeed hinüberkopiert werden und dann auf dem Raid5 laufen.

Ein "chroot" hilft in dem Fall doch kaum weiter. Da gehts doch um die sicherheitstechnische Trennung von Services. Und das steht hier m.E. nicht zur Debatte. Bei einem Performanceupgradewunsch hilft ein chroot auch nicht.

Das "Upgrade" eines Dienstes durch Hinzuschalten eines weiteren VServers (wie vom TE skizziert) sehe ich jedoch als kritisch und sehr schwierig umzusetzen an. Noch dazu kann man sich Bottlenecks zwischen diesen beiden Servern einfangen. Wenn überhaupt, müssen solche Konstruktionen auf Applikationsebene umgesetzt werden (wenn es dafür überhaupt Konzepte gibt). Der einfachere und applikationsunabhängige Weg ist, schlicht der VM mehr Ressourcen zu geben.
 
Ob eine Anwendung durch einfaches dazuschalten von Instanzen "skalierbar" ist - hängt hauptsächlich von der Anwendung ab, bei den meisten Webgeschichten klappt das jedoch recht gut - man braucht halt einen entsprechenden Loadbalancer vorne dran.

Bei Datenbanken hängt es meist an der DB-Software, manche sind für einfachen Clusterbetrieb leichter zugänglich als andere.

Alternativ geht man auf Systeme, die per se auf Clusterbetrieb ausgelegt sind - dafür muss halt auch wieder die Anwendung entsprechend gestrickt sein (Hadoop, ElasticSearch, ...).
 
Last edited by a moderator:
Wow, das waren schon sehr viele Antworten :-)

Ich habe mir vor einer Weile das Prinzip der Parallels Plesk Automation angeschaut; hier soll es möglich sein, verschiedene Services "dazu zu schalten" und so zu erweitern.

Nun habe ich aber nicht ohne weiteres privat so viel Geld, um allein für die Lizenz mtl. schon so viel Geld auszugeben.

Wisst ihr, wie Plesk Automation das macht?


Ein paar Informationen zum System: Es handelt sich um ein System mit einem SSD-Raid sowie einem SATA-Raid. Auf dem SSD-Raid soll ein KVM-vServer laufen, dessen einzige Aufgabe es ist, den MySQL-Server auszuführen (ich halte es für sinnvoll, MySQL hier auszuführen, da hier der Festplattenzugriff optimiert werden kann).

Um dies zu gewährleisten wurde Proxmox installiert, da hier einzelne KVM-Virtualisierungen auf die jeweiligen Logischen Volumes installiert werden können. Der MySQL-vServer würde demnach auf die VG der SSD gespielt werden.

Auf der SATA-Platte sollen z.B. virtuelle Maschinen laufen, deren Aufgabe es ist:

- Mailservices bereitzustellen
- Webserver (Apache) bereitzustellen (inkl. Webspeicherplatz)
- ...

Mir wäre es nur wichtig, dass das ganze Skalierbar bleibt, d.h. wenn ich mehr Webspeicherplatz benötige soll der bereitstellende vServer entsprechend auch mehr Webspeicherplatz zur Verfügung stellen.

Problematisch wird es nur in einem Punkt: Wenn ich in Proxmox ein neues Storage hinzufüge kann ich dadurch ja die vServer-Kapazitäten kaum erweitern, oder? Bei KVM gibt es dann ja auch noch das Problem, dass die jeweiligen virtuellen Server nicht ohne weiteres in Puncto HDD-Platz erweitert werden können.



Ich danke euch und freue mich über weitere interessante Ideen und Kommentare.
 
Parallels Automation ist 2-3 Nummern zu groß für Dich, Du hast ja nicht mal mehrere Server.

MySQL Server sind jetzt nicht nur vom Massenspeicher abhängig, auch das RAM spielt eine wichtige Rolle und natürlich die korrekte Konfiguration des Servers und die jeweilige Anwendung spielt auch noch mit rein. Ergo würde ich Dein Auslagern auf die SSD skeptisch sehen. Sinnvoller macht es m.E. z.B. VMWare, wo man SSDs als Cache (für ALLE VMs) verwenden kann. Was bringt Dir in Deinem Fall ein schneller MySQL, wenn der Webserver mit seinen Dateien nicht hinterherkommt?

Nochmal: such Dir einen Serverprovider, bei dem Du die Hardware anpassen kannst. Innerhalb der HW Features kannst Du dann die VMs zuerst hochskalieren und dann die HW erweitern. Das ist auch für privat noch machbar und dem Aufwand angemessen.

Alternativ kannst Du Deine VMs direkt in der Cloud lagern, z.B. auch in http://aws.amazon.com/de/ . Dort kannst Du die Ressourcen nahezu unbegrenzt hochskalieren. Allerdings wird das dann auch wirklich teuer.
 
Back
Top