Geschachtelte virtuelle Server Natürlich können Sie auf einem PacketPro Loadbalancer mehr als einen Dienst betreiben: Konfigurieren Sie soviele Dienste in sovielen Serververbänden wie Sie möchten. Diese können sie sowohl von extern als auch, wie im folgenden Artikel beschrieben, von intern nutzen. Ein weit verbreitetes Setup ist beispielsweise die Konfiguration eines Webclusters gepaart mit einem Datenbankcluster. Hier stehen einige Webserver und einige Datenbankserver in jeweils eigenen (privaten) Subnetzen.
Beide Serververbände bilden jeweils einen virtuellen Server. Der Datenbankcluster ist allerdings nicht von aussen erreichbar, sondern wird nur von den Webservern im Backend angesprochen. Dabei werden alle Datenbankabfragen an die Service-IP-Adresse des Datenbank-Loadbalancers geschickt und vom PacketPro Loadbalancer gleichmäßig auf alle Server im Datenbank-Subnetz verteilt. Hierfür muss die verwendete Datenbank Clusterfähigkeiten mitbringen, da neben Lese- auch Schreibzugriffe auf alle Datenbankserver verteilt werden. Eine weitere Lösung wäre die Konfiguration eines Masterservers, der alle Schreibzugriffe entgegen nimmt und die Datenbank auf viele Clients repliziert - von denen nur gelesen werden kann. Diese Art der Datenbankclusterung (Trennen von Lese- und Schreibzugriffen) muss allerdings die Webapplikation bzw. der anfragende Dienst unterstützen. Im linken oberen Bild sieht man darüber hinaus, dass die PacketPro Loadbalancer im Cluster laufen und ein eigenes Management-Subnetz für alle Backend-Server existiert. Hierfür wird ein VLAN oder ein dediziertes Interface auf den Geräten benötigt. Für den Datenaustausch zu den Backendservern ist dies von Vorteil. Hierfür kann aber auch die Routingfähigkeit der PacketPro ausgenutzt werden. Loadbalancing eines MySQL-Datenbank-SetupsEin beliebtes Einsatzgebiet des PacketPro Loadbalancer ist die Lastverteilung über mehrere Datenbanken. Hierbei wird vermehrt auf die Replikationsmethode von MySQL-Datenbanken zurückgegriffen. Bei dieser Art der Datenbankclusterung nimmt ein sogenannter Master alle Schreibzugriffe auf. Diese werden an beliebig viele Slaves verteilt die nur lesenden Zugriff auf die Datenbanken gestatten. Eine Applikation, die ein solches Verfahren unterstützt, muss lesende von schreibenden Zugriffen trennen können. Hierfür kann im Java-Umfeld auf den JDBC-Replication-Treiber von MySQL zurückgegriffen werden. Greift man mit PHP auf MySQL zu, kann man mit einfachen regulären Ausdrücken die Unterscheidung zwischen lesenden und verändernden Zugriffen treffen. Für das Loadbalancer Setup bedeutet die Unterscheidung zwischen Master und Slave zwei virtuelle Server. In der Abbildung auf der rechten Seite ist der MySQL-Master grün dargestellt und wird über einen eingenen virtuellen Server über den Loadbalancer angesprochen. Der Serververbund der MySQL-Slaves wird durch einen weiteren virtuellen Server über den PacketPro verfügbar gemacht. Alle Datenbankserver sollten wegen der Replikation im gleichen Subnetz innerhalb des Backends stehen, daher liegen beide virtuellen Server im gleichen Netzbereich - dies wird durch die gemeinsame Farbe Orange gekennzeichnet. Alle schreibenden Zugriffe auf die Datenbank werden an den einen virtuellen Server des Masters weitergereicht, alle lesenden Zugriffe gehen an den zweiten virtuellen Server, hinter denen sich die Slaves verstecken. In der rechten oberen Abbildung sieht man darüber hinaus, dass die PacketPro Loadbalancer im Cluster laufen.
|