Load-Balancer
Load Balancer vs- NLB
Oft stellt man mir die Frage, warum man nicht einfach das
kostenfreie
NLB nutzt.
Tatsächlich kann auch mit NLB eine Lastverteilung zwischen Server
erreicht werden. Allerdings gibt es oft seitens der
Netzwerkadministratoren Vorbehalte. Zudem kann NLB nicht auf einem
Microsoft Cluster gleichzeitig genutzt werden, was dann gegen den
CAS auf dem Cluster spricht. Der größte Nachteil ist aber wohl, dass
NLB nicht aktiv die Dienste hinter einer IP-Adresse auf die Funktion
prüfen kann. Ein "hängender IIS", der noch Verbindungen annimmt aber
keine Daten mehr liefert, kann NLB nicht erkennen. Ein guter Load
Balancer mit passender Konfiguration aber sehr wohl.
Windows selbst kennt seit NT4-Zeiten die Funktion, mehreren Servern die gleiche IP-Adresse zu geben, um Dienste, die auf allen Servern identisch vorgehalten werden, besser4 verfügbar und skalierbar zu machen. Früher unter dem Codenamen "Convoy und dann WLBS ist NLB seit Windows 2003 nun in jeder Windows Version vorhanden und kann einfach integriert werden. Mit NLB werden Anfragen von allen Server im Team empfangen und einer der Server übernimmt die Aufgabe diese Verbindung zu bedienen. Allerdings erkennt NLB nur, ob der Server und Port erreichbar ist aber nicht, ob der dahinter lauschende Dienst sinnvolle Daten ausliefert. Dies ist ein Grund, warum NLB nicht in allen Fällen die optimale Lösung ist. NLB ist z.B.: nicht kompatible mit Microsoft Cluster. Wer also z.B. einen Exchange 2010 Cluster als Database Availability Group betreibt, kann die darauf mit installieren CAS-Server nicht per NLB verfügbar gestalten. (Siehe auch 2-Server-DAG). Externe Load-Balancer können hier helfen, zwei zusätzliche Exchange Server einzusparen. NLB kann auch nur zwischen Windows Systemen genutzt werden. Firmen würden aber auch gerne andere Systeme bereit stellen und irgendwann kommen Sie dann doch dazu, externe Load-Balancer einzusetzen.
Funktionsprinzip
Doch die Ansichten, was und wie ein Load Balancer funktioniert, sind nicht ganz einheitlich. Klar muss es ein System sein, welches die Anfragen der Clients zuerst erreicht und dann auf einen geeigneten "Backend-Server" weiter gibt. Aber da gibt es gleich mehrere Faktoren
- Reverse-NAT oder Proxy
Ein Teil der Load Balancer funktioniert so, dass die Clients per DNS auf die IP-Adresse des Load-Balancer statt der eigentlichen Server geleitet werden. Dieses System nimmt dann die Anfragen an und gibt sie weiter. Das ist ein ganz üblicher Prozess bei der z.B. Veröffentlichung von Webseiten. Auch hier muss man sich natürlich Gedanken machen, wie der Zugriff auf den Load-Balancer selbst "hochverfügbar" gestaltet werden kann.
Andere Systeme sind für den Client gar nicht real sichtbar, sondern sind eher wie ein "Router" zwischen Client und Backend angesiedelt und nutzen daher Routingprotokolle, um Clientzugriffe bei Ausfällen um zu routen. Vorteil ist hierbei auch, dass z.B. DNS-Einträge durch die eigentlichen Server nicht umgebaut werden müssen. Allerdings wird ihr Netzwerk komplexer da Clients und Server eben getrennt sein müssen. - Test der Backends
Ein Load Balancer sollte immer wissen, welcher der Systeme, die er veröffentlicht, gerade "funktionieren". Verteilen kann er die last nur, wenn es mehrere Systeme im Hintergrund gibt. Diese werden aber auch immer mal mit Patches versehen oder zur anderen Wartungsarbeiten außer Betrieb genommen. Manchmal wird auch ein System auf eine neue Version aktualisiert und erst mal getestet, ehe es produktiv geht. Ein einfacher "Ping" ist als Test sicher nicht ausreichend. Das System sollte schon auf dem Level der Applikation selbst prüfen können, ob der Server korrekt arbeitet. - Affinität
Je nach Anwendung müssen "Sitzungen" gepflegt werden. Wenn sich z.B. ein Client an einem Webserver anmeldet und die Anmeldedaten dann z.B. an der Session oder Cookies festgemacht sind, dann sollte der Load Balancer jede Folgeanfrage des Clients natürlich an den gleichen Server senden. Ansonsten könnte es sein, dass der Anwender sich immer wieder anmelden muss und zudem kostet es einfach viel mehr Ressourcen, wenn mehrere Backends die gleichen Sitzungen erstellen müssen. Anders ist es bei anonymen statischen Daten wie z.B. Bildern, Stylesheets, Downloads. Hier kann der Load Balancer wieder den Server mit der geringsten Last wählen. Das kann er natürlich nur, wenn er so weit ins Protokoll rein schauen kann, um diese Unterschiede zu erkennen
Für andere Protokolle (z. B. RDP, SMTP , POP etc.) gelten natürlich wieder andere Regeln - Firewall und Filter, Offloading und Kompression
Wenn der Load Balancer schon die Verbindungen annimmt, dann kann er auch eine Validierung der übertragenen Daten durchführen. Einige Load Balancer gehen sogar so weit, dass Sie als Application Firewall agieren und URLs filtern und teilweise sogar eine Vorauthentifizierung übernehmen, um die aktiven Server vor Angriffen zu schützen. Sie können sogar SSL-Offloading betreiben und HTTP-Komprimierungen durchführen, und damit die Backend Server weiter entlasten. - Geografische Optimierung (DNS, Rerouting)
Interessant wird es, wenn sie mehrere Server an verschiedenen Orten betreiben und die Anfragen durch einen Load Balancer so umgeleitet werden, dass der Client zum netztechnisch nächsten Server geroutet werden. Diverse intelligente Systeme optimieren dazu die DNS-Antworten abhängig von der anfragenden IP-Adresse (was meist passt, auch wenn der DNS des Providers nur bedingt über den Client etwas aussagt). Andere Systeme nehmen die Anfrage an um den Client dann aber einen Redirect (geht z.B. bei HTTP sehr elegant) auf einen andere Server zu lenken. So kann man auch Last zwischen Server "verteilen" und sogar geografisch optimieren. - Load Balancer und HA
Verteilen ist nur eine Aufgabenstellung. Natürlich sollte auch die Lastverteilung "Hochverfügbar" erfolgen. Und hier stehen die Hersteller vor dem gleichen Dilemma wie ein Windows Admin mit NLB. Entweder mehrere Load Balancer arbeiten aktiv nebeneinander, womit sich auch hier die Frage von "Multicast IP" etc. stellt oder jedem System ist ein "Standby"-System zugeordnet, welches beim Ausfall die Arbeit (und die IP-Adresse) übernimmt. Dies kann abgewandelt auch mit mehreren IPs erfolgen, bei denen die IP-Adresse eines ausgefallenen Systems einem anderen Server zugeordnet wird. (Siehe auch MiniSFT). Nur die ganz teuren Systeme schaffen es auch die Sitzungstabelle zwischen zwei Systemen zu spiegeln und damit beim Ausfall wirklich ohne Unterbrechung weiter zu arbeiten.
Das sind jedem Menge Punkte, die bei der Produktevaluierung und Auswahl zu beachten sind. Schon daher kann die MSXFAQ hier keine Empfehlung geben oder Produktvergleiche anstellen. Ich werde aber, soweit ich davon Kenntnis habe, funktionierende Konfigurationen dokumentieren.
Wer einen "Load Balancer" mit Exchange, OCS o.ä. betreibt, kann mir gerne einen Hinweis zur Installation zukommen lassen. Interessant ist das eingesetzte Produkt mit Versionsnummer, die bereitgestellten Dienste und etwas die Größe. Für Rückfragen kann ich ihre Kontaktdaten gerne aufführen.
Opps die Liste ist fast leer ? Sie können mit helfen die Liste zu füllen und zu pflegen.
| Load Balancer Type/Versionsnummer |
Dienste z.B. OWA, RDP, OCS, EAS |
Umgebung z.B. Größe/Bandbreite |
Ansprechpartner (Firma, Name, Link) |
|---|---|---|---|
| Windows NLB | OWA, EAS, POP, SMTP, IMAP, EWS NICHT RPC ! |
5000 User | z.B. Net at Work |
| ISA mit NLB und CAS-Veröffentlichung als WebArray | OWA, EAS, POP, SMTP, IMAP, EWS NICHT RPC ! |
z.B. Net at Work | |
| KEMP | Alle | Je nach Gerät | KEMP Technologies, Inc Luetzerodestr. 12 30161 Hannover emea@kemptechnologies.com |
| Cisco | |||
| F5 | |||
| Big IP | |||
| Barracuda |
Angeblich will Microsoft zu gegebener Zeit eine Liste von Systemen bereit stellen, die mit OCS ihre Funktion zeigen konnten. Soweit ich aber weiß, gibt es von Microsoft keine Test oder Zertifizierungsprogramme für externe Load Balancer.
Load Balancer und Exchange 2010 CAS
Wenn Sie nur einen Webserver veröffentlichen, dann ist eine Regel noch recht einfach. Wenn Sie aber z.B.: den Exchange 2010 CAS als CAS-Array betreiben und nicht mit NLB veröffentlichen, dann sollte ihr Loadbalancer auch Ports "gruppieren" können. Die RPC Kommunikation verwendet nämlich neben dem Exchange RPC-Port, welchen Sie sowieso für einen solchen Einsatz "fest" einstellen müssen auch noch RPC (135/TCP). Wenn der Load Balancer nun feststellt, dass ein Knoten nicht erreichbar ist, dann muss er nicht nur die Anfragen auf den ExchangeRPC-Port auf die verbliebenen CAS-Server umleiten, sondern auch die Zugriffe auf den Port 135, selbst wenn dieser auf dem defekten CAS-Server natürlich weiterhin erreichbar ist.
- Configuring Static RPC Ports on an Exchange 2010
Client Access Server
http://social.technet.microsoft.com/wiki/contents/articles/configuring-static-rpc-ports-on-an-exchange-2010-client-access-server.aspx - Powershell Skript zum Einstellen
http://cid-14adc5cf1e0cbccf.skydrive.live.com/self.aspx/.Public/Exchange%202010/Scripts/Set-StaticPorts.ps1 - How to configure SSL Offloading in Exchange 2010
http://social.technet.microsoft.com/wiki/contents/articles/how-to-configure-ssl-offloading-in-exchange-2010.aspx - Load Balancing Requirements of Exchange Protocols
http://technet.microsoft.com/en-us/library/ff625248.aspx
Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeRPC\ParametersSystem
Value: TCP/IP Port
Type: DWORD
- Adressbuchservice
Auch dem Adressbuchdienst sollte ein fester Portzugewiesen werden. Das geht bei Exchange 2010 RTM über die microsoft.exchange.adressbook.service.exe.config und ab Exchange 2010 SP1 über die Registrierung:
<configuration>
<appSettings>
<add key="RpcTcpPort" value="55001"
/>
</appSettings>
</configuration>
Key:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesMSExchangeABParameters
Value: RpcTcpPort
Type: REG_SZ
Load Balancer und OCS
Auch für OCS ist der Einsatz von Load Balancern möglich und in einigen Umgebungen sogar erforderlich, z.B. wenn mehrere Edge oder Direktoren ohne Edge verwendet werden.
- Load Balancers for Office Communications Server 2007
R2
http://technet.microsoft.com/en-us/library/dd572362(office.13).aspx - how to configure F5 Big-IP for Office Communications
Server 2007 R2
http://www.f5.com/pdf/deployment-guides/f5-ocs-r2-dg.pdf
Hersteller
Diese Seite kann sicher keine vollständige, aktuelle Übersicht aller Load Balancer im Markt bereit stellen. Sehen Sie diese Links eher als Startpunkt für eigene Recherchen. Zumal die Funktion der Lastverteilung nicht immer die einzige Funktion ist, sondern eine Teilkomponente einer kompletten Lösung. Schon daher ist das nicht alles "vergleichbar". Wie si im Abschnitt "Mehrwert" schon gelesen haben, dann kommen für eine Entscheidung durchaus noch andere Themen dazu.
- F5 BIG IP
http://www.f5.com/products/big-ip/ - Cisco CSS 11500 Series Content Services Switch
http://www.cisco.com/en/US/products/hw/contnetw/ps792/ - Cisco ACE
http://www.cisco.com/en/US/products/ps6906/ - Zeus Load Balancer
http://www.zeus.com/products/load-balancer/index.html - Kemp Technologies Inc
http://www.kemptechnologies.com/en/server-load-balancing-appliances/product-matrix.html
http://www.kemptechnologies.com/emea/loadbalancingresource/ms-exchange-2010.html - Radware AppDirector/AppXcel
http://www.radware.com/Products/ApplicationDelivery/AppDirector/default.aspx - Juniper WX und WXC
http://www.juniper.net/us/en/products-services/application-acceleration/wxc-series/ - crescendonetworks Maestro ALP oder AFE CN5510
http://www.crescendonetworks.com/ - CAI Networks WebMux
http://www.cainetworks.com/products/spec.htm - Nortel Alteon AD4 oder Alteon 2424 SSL
- Brocade ServerIron (Ehemals Foundry)
http://www.brocade.com/products-solutions/products/application-delivery/serveriron-adx-series/index.page - Citrix NetScaler
http://www.citrix.com/English/ps2/products/product.asp?contentID=21679
Weitere Links
- NLB
- Configuring Static RPC Ports on an Exchange 2010
Client Access Server
http://social.technet.microsoft.com/wiki/contents/articles/configuring-static-rpc-ports-on-an-exchange-2010-client-access-server.aspx - Load Balancing Requirements of Exchange Protocols
http://technet.microsoft.com/en-us/library/ff625248.aspx - Microsoft Unified Communications Hardware Load
Balancer Deployment
http://technet.microsoft.com/de-ch/office/ocs/cc843611(en-us).aspx - Hardware Load Balancing with Office Communications
Server 2007 R2 (Load_Balancing_with_OCS_2007_R2.docx )
http://www.microsoft.com/downloads/details.aspx?FamilyID=91bdb328-8b9b-4759-a647-82133ed57908 - Wikipedia Load balancing (computing)
http://en.wikipedia.org/wiki/Load_balancing_(computing) - Oracle zertifiziert zwar keine Load Balancer aber es
gibt eine Liste von getesteten Geräten
http://www.oracle.com/technology/products/ias/hi_av/Tested_LBR_FW_SSLAccel.html - Whitepaper zu Exchange 2010 Hardware Load Balancing
http://www.loadbalancerblog.de/loadbalancing-anwendungen/load-balancing-exchange-2010-berndkruczek/









