Best-Practice Loadbalancing WebServer
Hallo zusammen,
ich versuche gerade einen neuen Netzwerkaufbau, allerdings stoße ich an irgendeiner Stelle immer an etwas, dass für mich nicht so recht ins 21. Jahrhundert passen möchte.
Also:
Domain A zeigt auf Loadbalancer
Nun gibt es ja 3 Optionen:
Option 1:
- Loadbalancer agiert als HTTP Balancer, erhält Zertifikat für Domain A und leitet die Anfragen dann unverschlüsselt ins Rechenzentrum an die eigentlichen Webserver weiter
Vorteil:
Geringere Last auf den Webservern, weil nichts entschlüsselt werden muss.
Client IP Adresse kann auf den Apache Webservern ausgelesen werden
Nachteil:
- Unverschlüsselte Kommunikation zwischen dem Loadbalancer und den Webservern quer durch das Netz
- Zusätzliche Anpassungen an den Websites notwendig, da keine HTTP Elemente darin auftauchen dürfen
Option 2:
- Loadbalancer agiert als TCP Balancer, Zertifikate für Domain A sind auf den Webservern - Verbindung zwischen Loadbalancer und Client bei Aufbau unverschlüsselt
Nachteil:
- Apache Webserver hat keine Möglichkeit, die Client IP in Erfahrung zu bringen, da TCP Routing und daher keine Möglichkeit für FORWARED_IP
Option 3:
- Loadbalancer agiert als HTTPS Balancer, erhält Zertifikat für Domain A und leitet die Anfragen dann verschlüsselt an die jeweiligen Webserver weiter
Vorteil:
End2End Verschlüsselung ist auch dann sichergestellt, wenn der Loadbalancer irgendwo in der Cloud steht und die Webserver in einem anderen Rechenzentrum
Client IP Adresse kann auf den Apache Webservern ausgelesen werden
Nachteil:
- zusätzliche Zertifikate sind notwendig.
Variante 3 finde ich ja fast am besten, nur ist mir nicht wirklich klar, was für ein Zertifikat ich hier auf den Backend-Servern brauche. Selbstsignierte werden logischerweise von jedem Browser angemahnt, die gleichen wie auf dem Loadbalancer klingt auch nicht wirklich sinnvoll.
Wie habt ihr sowas bisher umgesetzt?
Danke und Grüße
René
ich versuche gerade einen neuen Netzwerkaufbau, allerdings stoße ich an irgendeiner Stelle immer an etwas, dass für mich nicht so recht ins 21. Jahrhundert passen möchte.
Also:
Domain A zeigt auf Loadbalancer
Nun gibt es ja 3 Optionen:
Option 1:
- Loadbalancer agiert als HTTP Balancer, erhält Zertifikat für Domain A und leitet die Anfragen dann unverschlüsselt ins Rechenzentrum an die eigentlichen Webserver weiter
Vorteil:
Geringere Last auf den Webservern, weil nichts entschlüsselt werden muss.
Client IP Adresse kann auf den Apache Webservern ausgelesen werden
Nachteil:
- Unverschlüsselte Kommunikation zwischen dem Loadbalancer und den Webservern quer durch das Netz
- Zusätzliche Anpassungen an den Websites notwendig, da keine HTTP Elemente darin auftauchen dürfen
Option 2:
- Loadbalancer agiert als TCP Balancer, Zertifikate für Domain A sind auf den Webservern - Verbindung zwischen Loadbalancer und Client bei Aufbau unverschlüsselt
Nachteil:
- Apache Webserver hat keine Möglichkeit, die Client IP in Erfahrung zu bringen, da TCP Routing und daher keine Möglichkeit für FORWARED_IP
Option 3:
- Loadbalancer agiert als HTTPS Balancer, erhält Zertifikat für Domain A und leitet die Anfragen dann verschlüsselt an die jeweiligen Webserver weiter
Vorteil:
End2End Verschlüsselung ist auch dann sichergestellt, wenn der Loadbalancer irgendwo in der Cloud steht und die Webserver in einem anderen Rechenzentrum
Client IP Adresse kann auf den Apache Webservern ausgelesen werden
Nachteil:
- zusätzliche Zertifikate sind notwendig.
Variante 3 finde ich ja fast am besten, nur ist mir nicht wirklich klar, was für ein Zertifikat ich hier auf den Backend-Servern brauche. Selbstsignierte werden logischerweise von jedem Browser angemahnt, die gleichen wie auf dem Loadbalancer klingt auch nicht wirklich sinnvoll.
Wie habt ihr sowas bisher umgesetzt?
Danke und Grüße
René
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 346350
Url: https://administrator.de/forum/best-practice-loadbalancing-webserver-346350.html
Ausgedruckt am: 26.12.2024 um 01:12 Uhr
10 Kommentare
Neuester Kommentar
Moin,
du solltest dir erstmal Gedanken zu Kollege @emeriks Anmerkung machen. Anschließend lese dich zu den verbreitetsten Modis L4 NAT oder L7SNAT ein. Danach überlege nochmals welcher deiner drei Optionen (teilweise) noch sinnvoll sind. Evtl. verschwindet auch der eine oder andere Vor- bzw. Nachteil.
Unabhängig davon werden die SSL-Zertifikate natürlich auf den FQDN des Servers ausgestellt. Evtl. noch im SAN den FQDN des Loadbalancer-Cluster. Wobei das von dem gewählten Modi abhängt.
Da sich um Wordpress handelt, ist natürlich im Vorfeld noch zu überlegen, wie die Last unter Verwendung von Cache-System redudziert werden kann. Schließlich optimiert man zuerst und baut anschließend Infrastruktur, etc... auf.
Gruß,
Dani
du solltest dir erstmal Gedanken zu Kollege @emeriks Anmerkung machen. Anschließend lese dich zu den verbreitetsten Modis L4 NAT oder L7SNAT ein. Danach überlege nochmals welcher deiner drei Optionen (teilweise) noch sinnvoll sind. Evtl. verschwindet auch der eine oder andere Vor- bzw. Nachteil.
Unabhängig davon werden die SSL-Zertifikate natürlich auf den FQDN des Servers ausgestellt. Evtl. noch im SAN den FQDN des Loadbalancer-Cluster. Wobei das von dem gewählten Modi abhängt.
Da sich um Wordpress handelt, ist natürlich im Vorfeld noch zu überlegen, wie die Last unter Verwendung von Cache-System redudziert werden kann. Schließlich optimiert man zuerst und baut anschließend Infrastruktur, etc... auf.
Naja, DNS-Round-Robin als Loadbalancing zu bezeichnen, liegt wohl auch mehr als fern.
Eigentlich nicht. Es gibt genug Best Practices von Microsoft, wo dies sogar empfohlen wird.Gruß,
Dani
Moin,
Loadbalancing. Hier gibt es viele Varianten. Je nach Art und Skalierung deines Setups nutzt man mehrere.
Erstmal sollte man klären, was genau du denn machen willst.
Was du im Grunde komplett streichen kannst ist irgendwelchen Traffic plaintext durchs Netz zu jagen. Bei Layer 4 ist es dir egal, bei höheren Layern arbeitest du einfach Client <-> Loadbalancer mit trusted certificated und Loadbalancer <-> origin server mit einem self-signed Certificates, welches du am Loadbalancer validierst. Können eigentlich alle gängigen Loadbalancer ohne Probleme.
Übrigens bei L4 loadbalacing machst du die Weiterleitung in der Regel ohne Änderung der Source IP, somit kommt die durchaus beim Webserver an, allerdings macht man L4 Loadbalancing auch eigentlich nur im eigenen Netzwerk, sodass man Firewall states für dieses NATing vorhalten kann. Sowas außerhalb zu machen ist unsinnig und gefährlich.
Wenn du dann mal grob die Motive der Loadbalanceridee ausgebreitet hast, können wir uns dann tatsächlich über die Umsetzung unterhalten.
Denn bisher erscheint mir dein Usecase einfach nicht sinnvoll.
Gruß
Chris
Loadbalancing. Hier gibt es viele Varianten. Je nach Art und Skalierung deines Setups nutzt man mehrere.
Erstmal sollte man klären, was genau du denn machen willst.
- Wo soll loadbalanced werden?
- Willst du deine Webseite ausfallsicher haben? Und wenn ja, was bedeutet das bei dir? Welche Ausfallzeiten sind okay?
- Ist die Load auf deinem Server zu hoch? Wenn ja, Lesende oder schreibende Requests?
- Wie wichtig ist der Schutz von Userdaten? Sprich kann ein Drittanbieter an Bord oder nicht?
Was du im Grunde komplett streichen kannst ist irgendwelchen Traffic plaintext durchs Netz zu jagen. Bei Layer 4 ist es dir egal, bei höheren Layern arbeitest du einfach Client <-> Loadbalancer mit trusted certificated und Loadbalancer <-> origin server mit einem self-signed Certificates, welches du am Loadbalancer validierst. Können eigentlich alle gängigen Loadbalancer ohne Probleme.
Übrigens bei L4 loadbalacing machst du die Weiterleitung in der Regel ohne Änderung der Source IP, somit kommt die durchaus beim Webserver an, allerdings macht man L4 Loadbalancing auch eigentlich nur im eigenen Netzwerk, sodass man Firewall states für dieses NATing vorhalten kann. Sowas außerhalb zu machen ist unsinnig und gefährlich.
Wenn du dann mal grob die Motive der Loadbalanceridee ausgebreitet hast, können wir uns dann tatsächlich über die Umsetzung unterhalten.
Denn bisher erscheint mir dein Usecase einfach nicht sinnvoll.
Gruß
Chris