Show TOC

 SAP Applikationsserverliste für HTTP Load Balancing Dieses Dokument in der Navigationsstruktur finden

Zusammenfassung

Der SAP NetWeaver Application Server ABAP und der SAP NetWeaver Application Server Java bestehen aus mehreren Instanzen auf verschiedenen Hosts, um das System zu skalieren und Verfügbarkeit sicherzustellen. Jede Instanz ist ein eigener HTTP-Server. HTTP-Requests müssen zwischen den Instanzen verteilt werden.

Es gibt prinzipiell 2 Lösungsmöglichkeiten:

  • SAP Web Dispatcher ist eine selbstkonfigurierende, innovative Lösung für HTTP/HTTPS Lastverteilung in SAP NetWeaver Application Server Umgebungen.

  • Andere HTTP Lastverteilungslösungen, ob Hardware oder Software.

Im SAP NetWeaver Application Server gibt es einen Webservice, der dem Lastverteiler eine Liste aller momentan aktiven Applikationsserver bereitstellt. Anhand der Informationen dieses Webservice kann die Konfiguration des Lastverteilers automatisiert werden, sodass er dynamisch auf Änderungen im System, wie z.B. das Starten oder Herunterfahren einer Instanz, reagieren kann.

Diese Dokumentation enthält eine detaillierte Spezifikation dieses Webservice, der auch vom SAP Web Dispatcher verwendet wird.

Diese Dokumentation konzentriert sich auf die grundlegende Lastenverteilung von HTTP-Requests. Die Lastverteilung kann bei stateless Requests und bei dem ersten Request einer stateful Session stattfinden. Alle darauf folgenden Requests, die zu dieser Session gehören, müssen auf den selben Applikationsserver geleitet werden.

Hinweis Hinweis

  • In diesem Dokument wird nicht beschrieben, wie man die Stickiness eines Request aktiviert.

  • Bestimmte Aspekte der komplexen SAP-Request-Routing-Logik, wie das Mapping zwischen URLs und SAP-Logon-Gruppen, können nicht auf eine Standard-Web-Switch-Konfiguration gemappt werden.

Ende des Hinweises
Grundbegriffe

Kenntnisse über die NetWeaver-Applikationsserverarchitektur und Grundlagen sowie Grundeinstellungen des SAP Web Dispatcher sind für das Verständnis dieser Dokumentation hilfreich. Links zur Dokumentation zu diesen Themen finden Sie am Ende dieses Dokuments. Für dieses Dokument müssen hauptsächlich folgende Begriffe verstanden werden.

  • Ein SAP-System besteht aus einer oder mehreren Dialoginstanzen und einer Sonderinstanz, die den restlichen Instanzen zentrale Dienste zur Verfügung stellt. Eine der Instanzen ist der sogenannte Message-Server (Programmname: msg_server), der Informationen über alle anderen Instanzen des SAP-Systems zur Verfügung stellt und auf den im Folgenden Bezug genommen wird.

  • Jede SAP-Instanz hat eine Substruktur, die als „Stack“ bezeichnet wird. Stacks von SAP-Instanzen können ABAP- oder Java-Stacks sein. Eine SAP-Instanz kann einen ABAP-Stack, einen Java-Stack oder beide Stacks zusammen enthalten („Dual-Stack-Instanz“).

Konzept

Der Lastverteiler holt in regelmäßigen Abständen eine Liste aller aktiven Applikationsserver eines SAP-Systems von dessen Message-Server via HTTP ein. Die Liste enthält die Hostnamen sowie einen statischen Wert, der die Kapazität jedes Servers angibt (siehe unten). Die Kapazität wird nach Stacks unterteilt, d.h. eine Dual-Stack-Instanz hat eine ABAP-Kapazität und eine Java-Kapazität.

Wenn eine Instanz herunterfährt oder ihr Herunterfahren geplant ist, wird die Kapazität der Instanz auf 0 gesetzt. Dies heißt, dass stateful Requests für bestehende Sessions immer noch an diese Instanz geschickt werden können, die Instanz aber aus der Lastverteilung herausgenommen werden sollte, weil sie keine neuen Logons mehr akzeptiert.

Server werden dynamisch von der Liste entfernt oder ihr hinzugefügt, wenn der SAP-Message-Server feststellt, dass ein neuer Server gestartet wurde oder ein laufender Sever herunterfährt (oder abstürzt).

Aus folgenden Gründen ist es erforderlich, dass ein Lastverteilungsgerät abgestürzte Server sofort von seiner internen Serverliste entfernt:

  • Es kann bis zu zehn Minuten dauern, bis der Message-Server einen Serverabsturz bemerkt. Deshalb ist es möglich, dass die Serverliste nicht den aktuellen Status der Server anzeigt.

  • Der Lastverteiler sollte die Liste nur periodisch aktualisieren (z.B. im Abstand von einigen Minuten).

Verfügbarkeit

Diese Spezifikation gilt für alle SAP-Produkte, die auf Application Server Release 6.20 oder höher mit SAP kernel 6.40 oder höher basieren. Dies entspricht NetWeaver '04 und höher.

Kapazität

Der Kapazitätswert ist ein Integer, der die ungefähre Stärke des Servers angibt. Der Wert 0 (Null) bedeutet, dass der Applikationsserver herunterfährt und aus der Lastverteilung herausgenommen werden muss.

Momentan stellt die vom SAP-System verwendete Heuristik die statische Kapazitätswerte wie folgt fest:

  • AS ABAP: Anzahl der Dialogprozesse in der Instanz.

  • AS Java: Anzahl der Java-Server-Prozesse.

Achtung Achtung

Die Heuristik kann ohne vorherige Ankündigung von SAP geändert werden.

Ende der Warnung.

Der Lastverteiler sollte nie den Absolutwert dieser Kapazitätswerte verwenden oder ihnen eine Bedeutung zuordnen. Nur das Verhältnis der Kapazitäten zwischen den einzelnen Servern ist signifikant.

  • Gibt es einen HTTP(S)-Port in der Liste, ist das System entweder ein ABAP-System oder ein Dual-Stack-System. Senden Sie in diesem Fall alle Requests zum HTTP(S)-Port und verwenden Sie den LB-Wert von der DIAG Line, um die Serverkapazität zu berechnen.

  • Gibt es keinen HTTP(S)-Port in der Liste, handelt es sich um ein Java-System. Senden Sie in diesem Fall alle Requests zum J2EE(S)-Port und verwenden Sie den LB-Wert von der J2EE Line, um die Serverkapazität zu berechnen.

Der Lastverteiler muss die Kapazitätswerte nicht zur Entscheidung über die Lastverteilung verwenden. Es können auch andere Mechanismen, wie Response Time Measurments oder Host-Last, verwendet werden. Es muss jedoch die Bedeutung des Werts 0 (Null) beachtet werden (siehe oben).

Host- und Port-Konfiguration

Der Hostname des Netzwerks und der HTTP-Port des Message-Servers werden über die SAP-Konfigurationsparameter rdisp/mshost im Standardprofil und ms/http_port im Profil des Message-Server konfiguriert.

Aus Gründen der Einfachheit und zur Verbesserung der Performance wird im HTTP-Message-Body ein Klartextformat verwendet, um die Serverliste als eine Menge an Server-Description-Datensätzen (getrennt durch leere Zeilen) wie folgt zu beschreiben (CRLF gibt den Control/LineFeed als End-of-Line-Indicator an).

Einschränkungen

Die Lastverteilung bei Single-Track-Systemen (ABAP- oder Java-Systeme) ist einfacher als bei Dual-Stack-Systemen, da der Request-Typ klar ist. Wollen Sie bei einem Dual-Stack-System die Last verteilen, müssen folgende Voraussetzungen erfüllt sein:

  • Das System ist homogen, d.h. alle Instanzen enthalten AS ABAP und AS Java.

    Hinweis Hinweis

    Sollen zwei Message-Server konfiguriert werden (einer für ABAP und einer für JAVA) müssen die Informationen vom ABAP-Message-Server abgerufen werden.

    Ende des Hinweises
  • Bevor ein Request zum Server geschickt wird, überprüft der Lastverteiler, ob beide Stacks in der Applikationsserverliste vorhanden sind.

Struktur

Der Body der HTTP-Response-Nachricht ist anhand folgender Syntax strukturiert.

Syntax Syntax

  1. <server-list> = "version" <major>"."<minor> CRLF
  2. <sap-server-name> CRLF
  3. <protocol-type> <host> <port> <description> CRLF
  4. ...
  5. <protocol-type> <host> <port> <description> CRLF
  6. CRLF 
  7. <sap-server-name> CRLF
  8. <protocol-type> <host> <port> <description> CRLF
  9. ...
  10. <protocol-type> <host> <port> <description> CRLF
Ende des Codes

CRLF steht für „Carriage Return Line Feed“ (neue Zeile).

Folgende Tabelle erklärt mögliche Werte für die Variablen. Beispiele finden Sie unten.

Hinweis Hinweis

  • Die folgenden Erklärungen beziehen sich auf Version 1.2 des Protokolls (siehe erste Zeile der HTTP-Antwort).

  • Sie können auch HTTPS verwenden, um die Daten vom Message-Server abzurufen. Dazu muss der Message-Server für HTTPS konfiguriert werden. Weitere Informationen finden Sie in der am Ende dieses Dokuments verlinkten Dokumentation.

Ende des Hinweises

Sie erhalten die Aplikationsserverliste über den folgenden HTTP-Request vom Message Server (Release 6.40 und höher):

http://<msg_server_host>:<msg_server_port>/msgserver/text/logon?version=1.2

Die Liste wird im Klartextformat angezeigt. Folgende Tabelle zeigt die Antwort im Detail.

Variable

Wert

Beschreibung

<major>.<minor>

zwei durch einen Punkt getrennte Zahlen

Typische Versionsbeschreibung: die erste Zahl gibt die Major-Version, die zweite Zahl die Minor-Version an.

Im Folgenden verwenden wir Version 1.2.

<sap-server-name>

Zeichenkette

Instanzname

  • AS ABAP- oder Dual-Stack-Instanzen: <host>_<SID>_<inst.no>

  • AS Java-Instanzen: J2EE<node_id>

Hinweis Hinweis

Verwenden Sie diese Strings nicht, um Informationen über den Server zu erhalten. Die Informationen befinden sich in den Zeilen darunter.

Der Instanzname kann ein anonymisierter String sein, wenn Hash-Verschlüsselung im Profilparameter is/instname_encoding im Systemprofil DEFAULT.PFL konfiguriert ist. In der Standardeinstellung hat der Parameter den Wert none, d.h. der Instanzname wird als Klartext übertragen.

Ende des Hinweises

<protocol-type>

AS ABAP

HTTP

Es ist ein HTTP-Port des Server im ICM konfiguriert.

HTTPS

Es ist ein HTTPS-Port des Server im ICM konfiguriert.

DIAG

Server hat Dialog-Work-Prozesse; diese Zeile enthält die LB-Kapazität des AS ABAP.

...

Andere Werte können hier aufgelistet werden: RFC, RFCS, SMTP und andere. Diese Protokolle sind für die Lastverteilung nicht relevant.

AS Java

J2EE

AS Java ist aktiv und ein HTTP-Port ist konfiguriert.

!J2EES

AS Java ist aktiv und SSL-fähig. HTTPS-Port ist konfiguriert.

...

Andere Werte können hier aufgelistet werden: P4, P4S, IIOP, IIOPS und andere. Diese Protokolle sind für die Lastverteilung nicht relevant.

<host>

Zeichenkette

Hostname

<port>

Zahl

Port-Nummer

<description>

Zeichenkette

Folgende Strings sind möglich:

  • LB=<n> zeigt die Kapazität des Applikationsservers für die Lastverteilung an; betrifft DIAG und alle AS-Java-Protokolle.

    Hinweis Hinweis

    Bei DIAG wird die Kapazität mit DIA=<n> in AS ABAP Release 6.40 (NetWeaver 04) angegeben.

    Ende des Hinweises
  • SNC-String (betrifft DIAGS und RFCS, siehe Beispiel unten)

  • Virtueller Host-Index VHOST=<n> (gilt nur für Version 1.2)

    Hinweis Hinweis

    Der virtuelle Host-String wird nur für AS ABAP verwendet. Für jeden im Applikationsserver konfigurierten virtuellen Host (Parameter is/<prot>/virt_host_<n> im Instanzprofil) werden die jeweiligen Ports aufgelistet.

    Ende des Hinweises

Beispiel

Java-System

Folgendes Beispiel zeigt die Applikationsserverliste eines Java-Systems mit zwei Instanzen.

Syntax Syntax

Der HTTP-Request http://ld8060:8081/msgserver/text/logon?version=1.2 an den Message-Server mitt HTTP-Port 8081 könnte folgende Antwort erhalten:

  1. version 1.2
  2. J2EE187834720
  3. J2EE   ld8060.wdf.sap.corp  51800   LB=2
  4. J2EES  ld8060.wdf.sap.corp  51801   LB=2
  5. P4     ld8060.wdf.sap.corp  51804   LB=2
  6. P4S    ld8060.wdf.sap.corp  51805   LB=2
  7. IIOP   ld8060.wdf.sap.corp  51806   LB=2
  8. IIOPS  ld8060.wdf.sap.corp  51807   LB=2
  9. TELNET ld8060.wdf.sap.corp  51808   LB=2
  10.  
  11. J2EE507834720
  12. J2EE   ld8060.wdf.sap.corp  55000   LB=1
  13. P4     ld8060.wdf.sap.corp  55004   LB=1
  14. IIOP   ld8060.wdf.sap.corp  55007   LB=1
  15. TELNET ld8060.wdf.sap.corp  55008   LB=1
Ende des Codes

Hier sind zwei AS-JAVA-Instanzen auf einem physikalischen Host konfiguriert. Einer davon ist SSL-fähig und bietet Ports für alle Protokolle an. Die Instanz J2EE187834720 hat Doppelkapazität (zwei Java-Server-Prozesse sind aktiv) und erhält dadurch vom Web Dispatcher zwei mal so viele Requests wie die andere Instanz J2EE507834720 (solange die Requests stateless sind).

ABAP-System

Syntax Syntax

  1. version 1.2
  2. WDFD00146517A_BIN_53
  3. DIAG	WDFD00146517A	3253	LB=3
  4. RFC	WDFD00146517A	3353
  5. HTTP	WDFD00146517A	1080
  6. SMTP	WDFD00146517A	8025
  7. HTTP	WDFD00146517A	1080	VHOST=0
  8. SMTP	WDFD00146517A	8025	VHOST=0
  9.  
  10. ld8060_BIN_12
  11. DIAG	ld8060.wdf.sap.corp	3212	LB=7
  12. RFC	ld8060.wdf.sap.corp	3312	
  13. HTTP	ld8060.wdf.sap.corp	8888
  14. SMTP	ld8060.wdf.sap.corp	2500
  15. HTTP	ld8060.wdf.sap.corp	8888	VHOST=0
  16. SMTP	ld8060.wdf.sap.corp	2500	VHOST=0
  17.  
  18. pwdf2310_BIN_53
  19. DIAG	pwdf2310.wdf.sap.corp	3253	LB=10
  20. DIAGS	pwdf2310.wdf.sap.corp	3253	p/secude:CN=BIN, O=SAP-AG, C=DE
  21. RFC	pwdf2310.wdf.sap.corp	3353
  22. RFCS	pwdf2310.wdf.sap.corp	4853	p/secude:CN=BIN, O=SAP-AG, C=DE
  23. HTTP	pwdf2310.wdf.sap.corp	8080
  24. HTTPS	pwdf2310.wdf.sap.corp	8443
  25. SMTP	pwdf2310.wdf.sap.corp	25053
  26. HTTP	pwdf2310.wdf.sap.corp	8080	VHOST=0
  27. HTTPS	pwdf2310.wdf.sap.corp	8443	VHOST=0
  28. SMTP	pwdf2310.wdf.sap.corp	25053	VHOST=0
Ende des Codes

Hier sind drei verschiedene AS-ABAP-Instanzen auf verschiedenen Hosts konfiguriert. Sie haben verschiedene Kapazitäten und Protokolle.

Die vom Lastverteiler benötigten Informationen sind die Kapazität in der ersten Zeile und die Ports für HTTP und HTTPS.

Dual-Stack-System

Syntax Syntax

  1. version 1.2
  2. us4251_BCO_27
  3. DIAG	us4251	3227	LB=8
  4. RFC	us4251	3327
  5. HTTP	us4251.wdf.sap.corp	50027
  6. HTTPS	us4251.wdf.sap.corp	44327
  7. SMTP	us4251.wdf.sap.corp	25027
  8. J2EE	us4251.wdf.sap.corp	50027	LB=1
  9. J2EES	us4251.wdf.sap.corp	44327	LB=1
  10. P4	us4251.wdf.sap.corp	52704	LB=1
  11. IIOP	us4251.wdf.sap.corp	52707	LB=1
  12. TELNET	us4251.wdf.sap.corp	52708	LB=1
  13. HTTP	us4251.wdf.sap.corp	52700	VHOST=0
  14. HTTPS	us4251.wdf.sap.corp	44327	VHOST=0
  15. SMTP	us4251.wdf.sap.corp	25027	VHOST=0
  16.  
  17. bcomain_BCO_27
  18. DIAG	bcomain	3227	LB=20
  19. RFC	bcomain	3327
  20. HTTP	bcomain.wdf.sap.corp	52700
  21. HTTPS	bcomain.wdf.sap.corp	44327
  22. SMTP	bcomain.wdf.sap.corp	25027
  23. J2EE	bcomain.wdf.sap.corp	52700	LB=2
  24. J2EES	bcomain.wdf.sap.corp	44327	LB=2
  25. P4	bcomain.wdf.sap.corp	52704	LB=2
  26. P4S	bcomain.wdf.sap.corp	52705	LB=2
  27. IIOP	bcomain.wdf.sap.corp	52707	LB=2
  28. TELNET	bcomain.wdf.sap.corp	52708	LB=2
  29. HTTP	bcomain.wdf.sap.corp	52700	VHOST=0
  30. HTTPS	bcomain.wdf.sap.corp	44327	VHOST=0
  31. SMTP	bcomain.wdf.sap.corp	25027	VHOST=0
Ende des Codes

Das System hat zwei Instanzen, die ABAP und Java bereitstellen. Das erste hat die ABAP-Kapazität 8 und die Java-Kapazität 1. Das zweite hat die Kapazitäten 20 und 2. Wenn Sie die Last in einem Dual-Stack-System verteilen, können Sie einen der Werte als Kapazität nehmen oder eine Berechnung anstellen.