CAS und NLB

Der Exchange 2007 CAS-Server ist ja geradezu prädestiniert, über ein NLB-Cluster (Network Load Balancing) hochverfügbar und skalierbar bereit gestellt zu werden. Mehrere Server haben die gleiche IP-Adresse und teilen sich brüderlich die Arbeit und springen auch für einander sein.

Bei dieser Seite handelt es sich nicht um eine "How-To" Seite, sondern um eine Diskussionsgrundlage und Denkanstöße. Ob diese Konfiguration für Sie zutreffend ist, müssen Sie selbst entscheiden. Für die meisten Firmen ist es nicht erforderlich, vor allem wenn die Outlook Systeme Mitglied der Domäne sind

Allerdings durfte diese Funktion nur für POP3, IMAP4, ClientSMTP (587/TCP) und HTTP (80 +443) aktiviert werden. Die Nutzung von SMTP als NLB-Team wird erst seit Exchange 2007 SP1 offiziell unterstützt. Wer also Clients hatte, die per SMTP Mails eingeliefert haben, konnte nur mit DNS--RoundRobin oder einer IP-Adresse arbeiten, die im Fehlerfall auf den anderen Server übertragen wurde (z.B.: MiniSFT) oder die Client haben nicht den Standardport 25/TCP sondern 587/TCP genutzt.

Für die hohe Verfügbarkeit aus dem Internet sollte man sich den ISA2006-Server mal genauer anschauen. NLB funktioniert mit dem ISA-Server nur dann gut, wenn bei der Veröffentlichung der ISA-Server nicht die eigenen IP-Adresse zur Anfrage verwendet, da ansonsten das NLB-Team aufgrund der Affinität immer nur einen Knoten nutzt. ISA2006 hingegen kann mehrere identische Webseiten intern unter einem Namen nach Extern veröffentlichen. Natürlich können Sie mehrere ISA2006-Server nebeneinander wieder als Team betreiben.

Insofern gilt die Regel:

Fußangeln und Feinheiten

Was aber so einfach aussieht, kann ganz schön tückisch sein, da es nicht damit getan ist, einfach zwei oder mehr CAS-Server mit dem NLB-Assistent zu einem Team zu formen. Es gibt hier gleich mehrere Fakturen zu betrachten:

Das sind eine ganze Menge Vorbedingungen, die bei der Planung einer NLB-Farm berücksichtig werden müssen.

So könnte es aussehen

Daher möchte ich hier einen Vorschlag einer Konfiguration vorstellen, der mit einem "Single LAN" arbeitet und dennoch Verbindungen von den Clients zum CAS-Server von den Verbindungen zum Mailbox Server im Backend trennt. Durch die beiden Netzwerkkarten pro Server können die Adapter im Team ohne Microsoft Client betrieben werden (Sicherheit) und die Kommunikation mit anderen Servern läuft über die dedizierten Karten und bringt die Switches nicht ins Schwitzen. Weitere Details zur NLB-Konfiguration finden Sie auf Network Load Balancing.

CAS und NLB

Im Hinblick auf Exchange finden wir auf beiden CAS-Servern erst einmal die "Default Webseite", welche auf allen IP-Adressen lauscht und mit einem Selbstzertifikat, Ausgestellt auf den kurzen (NetBIOS) und langen (FQDN) Servernamen auch SSL anbietet. Da müssen wir was tun, um zwei und mehr Server mit einem gemeinsamen Namen im Netzwerk bereit zu stellen.

Sicher könnte man ein großes SSL-Zertifikat erstellen, welches die Namen aller CAS-Server in beiden Schreibweisen und die zusätzlichen Namen des NLB-Clusters enthält. Aber wenn Sie z.B.: offizielle Zertifikate benutzen, dann kann das sehr schnell teuer werden. Daher kann man die Umgebung auch mit mehreren Zertifikaten aufbauen. Dazu muss man aber wissen, dass auf eine Kombination aus IP-Adresse und Port immer nur genau ein Zertifikat gebunden werden kann. und dies natürlich auch mit dem Namen im DNS übereinstimmen muss. Da aber auch einige Systeme direkten Zugriff auf den CAS-Servernamen und nicht nur das NLB-Team durchführen, sollte man dies berücksichtigen.

Die Servernamen sind natürlich auf die dedizierten Adressen der Server registriert, während der Name für das NLB-Team auf eine eigene NLB-IP-Adresse verweist.

Konfiguration

Viele Einstellungen kann man per grafischer Oberfläche machen, aber einige Parameter können auch mit Exchange 2007 SP1 nur per Powershell konfiguriert werden. Auf jedem CAS-Server sind folgende Einstellungen erforderlich.

Name = CAS
IP = <IP-Adresses des CAS-Servers>
Basisverzeichnis C:\inetpub\<CAS-Servername>root
Zertifikat = Selbstzertifikat oder ausgestellt aus Servername und Servername.domain.tld

New-OWAVirtualDirectory `
        -WebSiteName "CAS1" `
        -OwaVersion:Exchange2007 `
        -InternalURL:https://CAS1.msxfaq.de/owa
        -ExternalURL: $null 
New-OWAVirtualDirectory `
        -WebSiteName "CAS1" `
        -OwaVersion:Exchange2003or2000 `
        -VirtualDirectoryType Mailboxes `
        -Name "exchange"
New-OWAVirtualDirectory `
        -WebSiteName "CAS1"  `
        -OwaVersion:Exchange2003or2000 `
        -VirtualDirectoryType PublicFolders `
        -Name "public"
New-OWAVirtualDirectory  `
        -WebSiteName "CAS1" `
        -OwaVersion:Exchange2003or2000 `
        -VirtualDirectoryType Exchweb `
        -Name "exchweb"
New-OabVirtualDirectory `
         -WebSiteName "OWAExtern"
New-ActiveSyncVirtualDirectory `
        -WebSiteName "CAS1" `
        -InternalURL "https://CAS1.msxfaq.de/Microsoft-Server-ActiveSync"
        -ExternalURL: $null
New-AutoDiscoverVirtualDirectory `
        -Websitename "CAS1" `
        -WindowsAuthentication $true `
        -DigestAuthentication $true `
        -InternalURL "https://CAS1.msxfaq.de/autodiscover/autodiscover.aspx"
        -ExternalURL: $null
New-WebServicesVirtualDirectory `
        -WebsiteName "CAS1" `
        -InternalURL "https://CAS1.msxfaq.de/EWS/Exchange.asmx"
        -ExternalURL: $null
New-UMVirtualDirectory `
        -WebsiteName "CAS1" `
        -InternalUrl "https://CAS1.msxfaq.de/UnifiedMessaging/Service.asmx" `
        -ExternalUrl $null
set-OWAVirtualDirectory `
        -identity "owa (Default Web Site)"
        -ExternalURL "http://webmail.msxfaq.de/owa" `
        -InternalURL "http://webmail.msxfaq.de/owa"
set-ActiveSyncVirtualDirectory `
        -identity "Microsoft-Server-ActiveSync (Default Web Site)" '
        -ExternalURL "http://webmail.msxfaq.de/Microsoft-Server-ActiveSync" `
        -InternalURL "http://webmail.msxfaq.de/Microsoft-Server-ActiveSync"
set-AutoDiscoverVirtualDirectory `
        -Websitename "Autodiscover (Default Web Site)" `
        -WindowsAuthentication $true `
        -DigestAuthentication $true `
        -ExternalUrl "https://autodiscover.msxfaq.de/autodiscover/autodiscover.aspx" `
        -InternalURL "https://autodiscover.msxfaq.de/autodiscover/autodiscover.aspx"
set-WebServicesVirtualDirectory `
        -WebsiteName "EWS (Default Web Site)" `
        -ExternalUrl "https://webmail.msxfaq.de/EWS/Exchange.asmx" `
        -InternalURL "https://webmail.msxfaq.de/EWS/Exchange.asmx"
Set-UMVirtualdirectory 
        -Identity "MAIL05ADD\UnifiedMessaging (Default Web Site)"`
        -InternalUrl "https://autodiscover.msxfaq.de/UnifiedMessaging/Service.asmx" `
        -ExternalURL "https://autodiscover.msxfaq.de/UnifiedMessaging/Service.asmx"
Set-ClientAccessServer `
        -Identity "CAS-01" `
        -AutodiscoverServiceInternalURI "https://autodisover.msxfaq.de/autodiscover/autodiscover.xml" `
        -AutodiscoverServiceSiteScope "Paderborn"

Diese Einstellungen sind für die anderen CAS-Server im Team entsprechend durchzuführen. Mit diesen Einstellungen haben wir nun erreicht, dass die vormals "Default Web Site" nun unter der NLB-IP-Adresse per SSL erreichbar ist. Weiterhin gibt es auf jeden CAS-Server eine dedizierte Webseite, die unter dem Namen des Servers erreichbar ist und das SSL-Zertifikat für diesen Server nutzt.

NLB und MOMT

Mit Exchange 2010 übernimmt die CAS-Rolle auch den RPC-Verkehr von Outlook (MOMT - MAPI on the Middle Tier). Wer also mehrere CAS-Server hat, kann diese auch "zusammenschalten". Dazu muss aber ein CAS-Array konfiguriert werden, da ansonsten der Client weiterhin den physikalischen Namen des Postfachservers verwendet.

New-ClientAccessArray 
  -Name CAS 
  -Fqdn cas.domain.tld
  -Site Paderborn

Get-MailboxDatabase `
   | Set-MailboxDatabase -RpcClientAccessServer cas.domain.tld

Diese Eintragungen sind pro Site angestimmt vorzunehmen. Denken Sie daran, dass Sie den hier verwendeten Namen "cas.domain.tld" natürlich auch im DNS eintragen müssen, das er auf die NLB-Adresse verweist und das Zertifikat sollte für alle Fälle auch passen.

Achtung
Laut Microsoft muss sichergestellt, dass die "Affinität" gewahrt bleibt, d.h. dass ein Client bei einer Verbindung auch immer zum gleichen RPC-Knoten kommt und kein "Load Balancing" oder gar DNS-RoundRobin stattfindet.

Weitere Links

Keywords:CAS E2K7 NLB