Dieser Artikel beschreibt, wie die
Syntax für die Inhaltsregel (das Muster) für die Komponente CBR verwendet wird, und enthält Szenarien und Beispiele zu ihrer Verwendung.
Syntax für Inhaltsregel (Muster)
Achtung: Nur gültig bei Auswahl von content als Regeltyp.
Geben Sie die Mustersyntax ein, die Sie verwenden möchten, und beachten Sie die folgenden Einschränkungen:
- Im Muster dürfen keine Leerzeichen verwendet werden.
- Sonderzeichen, außer wenn ihnen ein umgekehrter Schrägstrich (\) vorangestellt wird:
- *
- Platzhalter (stimmt mit 0 bis x beliebigen Zeichen überein)
- (
- linke runde Klammer, die für logische Gruppierung verwendet wird
- )
- rechte runde Klammer, die für logische Gruppierung verwendet wird
- &
- Logisches Und-Zeichen
- |
- Logisches Oder-Zeichen
- !
- Logisches Nicht
Reservierte Schlüsselwörter
Auf reservierte Schlüsselwörter folgt immer ein Gleichheitszeichen "=".
- Method
- HTTP-Methode in der Anforderung, z. B. GET, POST
- URI
- Pfad der URL-Anforderung (Groß-/Kleinschreibung muss beachtet werden)
- Version
- Spezifische Version der Anforderung, HTTP/1.0 oder HTTP/1.1
- Host
- Wert vom Host: Header (Groß-/Kleinschreibung kann ignoriert werden)
Wichtig: In HTTP/1.0-Protokollen optional.
- <Schlüssel>
- Ein gültiger HTTP-Headername, nach dem Dispatcher suchen kann. Beispiele für HTTP-Header sind
User-Agent und Connection, Referrer
Ein Browser, in dem
http://www.company.com/path/webpage.htm aufgerufen wird, kann folgende Werte zurückgeben:
Method=GET
URI=/path/webpage.htm
Version=HTTP/1.1
Host=www.company.com
Connection=Keep-Alive
Referer=http://www.company.com/path/parentwebpage.htm
Die Betriebssystemshell kann Sonderzeichen, z. B.
"&", interpretieren und in alternativen Text umwandeln, bevor diese vom Befehl
cbrcontrol ausgewertet werden.
Wenn Sie den Befehl über
dscontrol,
cbrcontrol oder eine Konfigurationsdatei eingeben,
setzen Sie die Sonderzeichen in doppelte Anführungsanzeichen
(
" ").
Der folgende Befehl ist z. B. nur gültig, wenn Sie die Eingabeaufforderung
cbrcontrol>> oder eine Konfigurationsdatei verwenden:
rule add 10.1.203.4@80@cbr_prod_rule_ek type content
pattern "uri=/nipoek/*"
Damit dieser Befehl mit Verwendung von Sonderzeichen an der Eingabeaufforderung des Betriebssystems angegeben werden kann,
müssen Sie die den gesamten Befehl in Anführungszeichen einschließen:
cbrcontrol "rule add 10.1.203.4@80@cbr_prod_rule_ek type content
pattern uri=/nipoek/*"
Fehlen die Anführungszeichen, könnte beim Speichern der Regel in CBR ein Teil des
Musters abgeschnitten werden.
Szenarien und Beispiel für die Verwendung von Mustersyntaxen
Szenario
1
Das Setup für einen einzelnen Clusternamen
erfordert eine Gruppe von Web-Servern für Standard-HTML-Inhalt, eine weitere Gruppe von Web-Servern mit
WebSphere Application Server
für Servletanforderungen und eine Gruppe von
Lotus-Notes-Servern für
NSF-Dateien. Der Zugriff auf die Clientdaten ist erforderlich, um zwischen den angeforderten Seiten
unterscheiden zu können. Die Daten müssen außerdem an die jeweils geeigneten Server gesendet werden.
Die Erkennungsregeln für Inhaltsmustererkennung ermöglichen die für diese Tasks notwendige
Trennung. Es wird eine Reihe von Regeln konfiguriert, die die nötige Trennung der Anforderungen automatisch
vornehmen. Mit den folgenden Befehlen können Sie die genannte Trennung in drei Gruppen
erreichen:
>>rule add cluster1@80@servlets type content pattern "uri=*/servlet/*" priority 1
>>rule uses cluster1@80@servlets server1+server2
>>rule add cluster1@80@notes type content pattern "uri=*.nsf*" priority 2
>>rule uses cluster1@80@notes server3+server4
Wenn Load Balancer eine Anforderung für eine NSF-Datei
empfängt, wird zuerst die servlets-Regel angewendet, bei der jedoch keine Übereinstimmung gefunden
wird. Anschließend wird die Anforderung mit der notes-Regel abgeglichen und eine Übereinstimmung
festgestellt. Die Clientdaten werden auf Server3 und Server4 verteilt.
Szenario 2
Ein weiteres
allgemeines Szenario ist die Steuerung unterschiedlicher interner Gruppen durch die Hauptwebsite. Beispiel:
www.company.com/software bezieht verschiedene Server und Inhalte aus dem Bereich
www.company.com/hardware ein. Da alle Anforderungen vom Root-Cluster
www.company.com ausgehen,
sind Inhaltsregeln erforderlich, um die URI-Unterscheidung für den Lastausgleich vorzunehmen. Die Regel für dieses Szenario würde
wie folgt aussehen:
>>rule add cluster1@80@div1 type content pattern "uri=/software/*" priority 1
>>rule uses cluster1@80@div1 server1+server2
>>rule add cluster1@80@div2 type content pattern "uri=/hardware/*" priority 2
>>rule uses cluster1@80@div2 server3+server4
Szenario 3
Bei bestimmten Kombinationen ist die Reihenfolge wichtig, in der die Regeln durchsucht werden.
Im Szenario 2 wurden die Clients beispielsweise ausgehend von einem Verzeichnis in ihrem Anforderungspfad aufgeteilt. Der Zielverzeichnispfad
kann jedoch auf verschiedenen Ebenen dieses Pfades angezeigt werden und dort jeweils zu anderen
Ergebnissen führen. So ist das Ziel
www.company.com/pcs/fixes/software
beispielsweise von
www.company.com/mainframe/fixes/software verschieden. Die Regeln müssen dieser Möglichkeit Rechnung tragen und so konfiguriert werden, dass die nicht
zu vielen Szenarien gleichzeitig gerecht werden. Die Platzhaltersuche
uri=*/software/* wäre in diesem Falle zu breit angelegt. Alternative Regeln könnten wie
folgt strukturiert sein:
- Mit einer kombinierten Suche kann hier eine Eingrenzung vorgenommen werden:
>>rule add cluster1@80@pcs type content pattern "(uri=/pcs/*)&(uri=*/software/*)"
>>rule uses cluster 1@80@pcs server1
- In Fällen, in denen keine Kombinationen anwendbar sind, ist die Reihenfolge wichtig:
>>rule add cluster1@80@pc1 type content pattern "uri=/pcs/*"
>>rule uses cluster1@80@pc1 server2
- Die zweite Regel wird angewendet, wenn "pcs" im Verzeichnis nicht an erster Stelle, sondern an einer späteren
Stelle erscheint.
>>rule add cluster1@80@pc2 type content pattern "uri=/*/pcs/*"
>>rule uses cluster1@80@pc2 server3
- In fast allen Fällen sollten Sie die Regeln durch eine Standardregel ergänzen, die immer wahr (always true)
ist und für alles gelten soll, was nicht unter
die übrigen Regeln fällt. In Szenarien, in denen alle Server für einen bestimmten Client
nicht in Frage kommen, könnte dies auch ein Server mit der Regel "Die Site ist derzeit nicht verfügbar, versuchen Sie es später
erneut" sein.
>>rule add cluster1@80@sorry type true priority 100
>>rule uses cluster1@80@sorry server5