Der Aufbau hochskalierbarer Serverfarmen

Werbung
Der Aufbau hochskalierbarer Serverfarmen
Einleitung
Zur Anpassung an den ständig
steigenden Site-Verkehr und
einer damit gekoppelten
Leistungssteigerung muss eine
wohl durchdachte und
entsprechend aufgebaute
Serverfarm leicht und
kostengünstig erweiterbar, also
skalierbar sein. Mit der
Commerce Edition von Site
Server 3.0 (SSCE 3.0) steht
Ihnen zum Aufbau einer
ökonomisch vertretbaren,
hochskalierbaren Serverfarm
genau das richtige Werkzeug zur
Verfügung. In diesem Beitrag
erfahren Sie, wie man eine
Serverfarm auf ein
Durchsatzvolumen von 100000+
gleichzeitig zugreifenden
Benutzern skaliert und dazu nur
ein notwendiges Minimum an
Servern einsetzt.
Eine leistungsstarke,
hochskalierbare Serverfarm
besteht aus wenigen
konsolidierten Webservern, die
leichter zu verwalten sind als
unkonsolidierte. Mit Hilfe
moderner Verwaltungssoftware
wie z.B. HP OpenView oder CA
Unicenter TNG lassen sich
Komplexität und
Verwaltungskosten merklich
reduzieren.
In der Tabelle werden die
verschiedenen Verfahren zum
Aufbau einer hochskalierbaren
Site beschrieben:
Vertikale HardwareSkalierbarkeit
Verbessern des Durchsatzes
durch verschärfte HardwareSpezifikationen unter
Beibehaltung der physikalischen
Anordnung sowie der Anzahl der
Server einer Serverfarm. Die
Horizontale HardwareSkalierbarkeit
Verbesserung der
Systemarchitektur
Durch Einsatz der beschriebenen
Skalierungsverfahren sind
Serverfarmen in einer
Größenordnung möglich, die die
vertikale Hardwareskalierung
vereinfacht zwar das SiteManagement, verursacht jedoch
höhere Hardwarekosten als eine
horizontale Skalierung oder eine
Verbesserung der
Softwarearchitektur. Und
dennoch muss bei Erreichen der
Maximalwerte die vorhandene
Hardware auf horizontale
Skalierung umgestellt werden.
Verbesserte Leistung durch
Hinzufügen von zusätzlichen
Servern. Die horizontale
Skalierung ermöglicht eine
hardwareseitige
Kapazitätserhöhung bei
niedrigeren Kosten; Wird der
Aufwand für die Site-Verwaltung
jedoch zu groß, muss auf die
vertikale Skalierung umgestellt
werden.
Man verbessert den
Serverdurchsatz bereits durch
das Aufspüren von Operationen
mit gleichen oder ähnlichen
Belastungsfaktoren und verteilt
die einzelnen Operationen auf
eine entsprechende Anzahl von
Servern. Die Methode der
Serverzuteilung an Operationen
mit gleicher, statt gemischter
Belastung ist wesentlich
effizienter und erhöht die
Kapazität um ein Vielfaches.
Verbesserungen an der
Systemarchitektur sollten daher
zu einem möglichst frühen
Zeitpunkt in der Projektplanung
berücksichtigt und implementiert
werden. Der Aufbau und Betrieb
einer Site mit effizienter
Architektur verursacht geringere
Kosten.
ursprünglich vorgesehenen
Designgrenzen weit übertreffen.
Vertikale Hardwareskalierung
Aktuelle Server haben
heutzutage soviel Hauptspeicher,
dass man darin fast den
gesamten Inhalt einer Site in den
Cache nehmen kann. Wird der
NTFS-Dateicache auf einer
schnellen Festplatte verwendet,
sind beachtliche I/ODurchsatzraten zu erzielen. Die
höchsten Steigerungsraten
werden jedoch gewöhnlich durch
den Symmetrischen
Mehrprozessorbetrieb (SMP)
erreicht. Dabei wird in der Regel
ein einzelner Server mit
zusätzlichen Prozessoren,
Speicher, Festplatten und
Netzwerkkarten ausgestattet. Für
eine vertikale Skalierung von
SSCE 3.0 stehen daher mehr als
genug Ressourcen zur
Verfügung.
Die Leistung von SSCE 3.0 ist
ziemlich CPU-orientiert, was auch
von Microsoft durchgeführte
Geschwindigkeits- und
Durchsatzbenchmarks
bestätigten. Durch die
"Geschwindigkeitsbremse" der
rechenintensiven ASPSeitenverarbeitung, wird die CPU
stark belastet. An der "VulkanKaffee"-Beispielssite (wird mit
SSCE 3.0 mitgeliefert) mit einem
Einzelprozessorsystem (Pentium
Pro, 200 MHz) ergibt sich ein
Durchsatz von 400
Benutzerzugriffen. Die
Konfiguration entsprach dem im
Dokument beschriebenen
"Durchsatz und
Leistungsanalyse" des Microsoft
Site Server 3.0 Commerce
Server (zu finden auf dem Site
Server 3.0 Commerce Edition
Resource Kit) und deren
angegebenen Spezifikation.
Vertikale Skalierung von SSCE
3.0 erfolgt durch die Erhöhung
der
Verarbeitungsgeschwindigkeit
und wird gewöhnlich mit einem
schnelleren Prozessor (z. B. ein
Pentium II, Pentium III und
deren Xeon-Ableger mit
vergrößertem Level 2-Cache)
erreicht. Zusätzlich können Sie
SSCE 3.0 auf einer mit jeder
UNIX-Hardwareplattform
vergleichbaren Compaq/Digital
Alpha-Hardwareplattform oder
auf Servern mit 64 Prozessoren
von Data General oder Unisys
ausführen. Als kleiner
Nebeneffekt kann ein Server
einen höheren Siteverkehr
verarbeiten.
Eine weitere Möglichkeit der
vertikalen Skalierung von SSCE
3.0 ist der Einsatz von Windows
NT 4.0 Server auf SMP-Servern
mit vier Prozessoren. Beachten
Sie jedoch in diesem Fall, dass es
beim Einsatz von SSCE 3.0 auf
Hardware-Systemen mit zwei
oder mehr Prozessoren zu
Performanceeinbrüchen kommen
kann. Obwohl der
Aggregatsdurchsatz höher ist,
steigen jedoch auch die
Investitionskosten
überproportional (der Per
Prozessor-Durchsatz ist bei SMPSystemen mit vier Prozessoren
niedriger als bei 2-ProzessorSystemen).
Generell geben wir folgende Empfehlung:


Verwenden Sie
bis zu vier
Prozessoren in
einem SMPSystem mit
horizontalen
oder
architekturalen
Skalierungsver
fahren.
Verwenden Sie
einen
möglichst
großen
Hauptspeicher,
das verbessert
den I/ODurchsatz des
IIS/ASPServerspeicher
s mit
kompiliertem
Skript,
einschließlich
der NTFSFestplattencac
he-Puffer.
 Vergrößern Sie
den Durchsatz
durch
Hinzufügen
mehrerer
SCSIPlattencontroll
er zur
besseren
Datenverteilun
g.
 Verwenden Sie
zusätzliche 100
mbsNetzwerkkarte
n zur Erhöhung
des
Netzwerkdurch
satzes.
 Eine ATMVerbindung mit
optischen
Glasfaserkabel
n ist zwar
relativ teuer,
aber dennoch
sehr
empfehlenswer
t.
Das Diagramm zeigt die
Erweiterung eines 1-Prozessor
(Pentium II)-Servers auf zwei
Pentium III Xeon-CPUs und
weiter auf einen Server mit 14
Alpha 21264Hochleistungsprozessoren.
Abbildung 1: Vertikale Hardwareskalierung
Horizontale Hardwareskalierung
Die horizontale
Hardwareerweiterung erhöht die
Leistung durch Hinzufügen von
SSCE 3.0-Servern zur
Serverfarm. SSCE 3.0Komponenten können über
mehrere Server hinweg
ausgeführt oder verteilt werden.
Durch diese Umverteilung wird
die Leistung erhöht.
Erweitern Sie Ihre Serverfarm
horizontal, muss die Last
gleichmäßig auf mehrere Server
verteilt werden, wozu es
geeignete Verfahren in Form von
Software wie Windows Load
Balancing Services (WLBS,
Betriebssystem-Software), DNS
Round Robin (NetzwerkSoftware) und Hardware wie
Cisco LocalDirector
(Netzwerk/Router) gibt. Vorzüge
der Lastverteilung sind die
Bereitstellung redundanter
Dienste, sowie eine erhöhte
Aggregatskapazität durch das
gezielte Verteilen der Last auf
mehrere Server.
In der Standardeinstellung
erstellt der SSCE 3.0-Site Builder
Wizard lastverteilungsfreundliche
Sites durch Vergabe von URL
oder Kunden-IDs auf CookieBasis. Der Assistent erstellt auch
Sites mit einer Sitzungs (engl.
Session)-/Statusverwaltung, die
sich zentral, jedoch abgetrennt
von den ASP-Servern in der
Commerce-Geschäftsdatenbank
befindet. Damit werden
Benutzeranfragen vom Load
Balancer zu jeder Zeit an jeden
verfügbaren Server adressiert,
ohne dass die Session oder der
Status des Benutzers verloren
gehen. Der Vorteil daran ist, dass
ohne Sitzungsvariable keine
Ressourcen für die Verwaltung
der Anwendersitzungen
verwendet werden.
Hinweis: Um Hardware effektiv
horizontal zu skalieren, sollten
Sie keine IIS-Sitzungsvariablen
verwenden und das IIS-SessionManagement abschalten.
Alternativ benutzen Sie die
Dynamic Data-Features des
SSCE 3.0 LDAP-Dienstes.
In Fällen, in denen eine
Anwendung mit der IISSitzungsverwaltung kodiert ist,
verwenden Sie den Cisco
LocalDirector-Router zur
Lastverteilung. Der Cisco
LocalDirector wird so
konfiguriert, dass sich jeglicher
Verkehr an der Client-/Quell-IPAdresse orientiert und der Client
bei jeder Anfrage an den gleichen
Ursprungsserver
zurückverwiesen wird. Dies
ergibt den gewünschten Effekt
der Lastverteilung. Die
Sessionvariablen befinden sich
lokal auf jedem Server; der
Client sieht den korrekten Satz
der Variablen samt Status.
Achtung: Das Anwenden dieses
Verfahrens kann bei bestimmten
Proxyserverfarmen zu Problemen
führen. Weitere Informationen zu
diesem Thema erhalten Sie im
Abschnitt "Abschalten der IISSessionverwaltung und Entfernen
der Session-Variablen".
Folgende Komponenten einer
SSCE 3.0-Serverfarm lassen sich
horizontal skalieren:
HTML/ASP-Server
LDAP-Server
Setzen Sie zusätzliche Server als
ASP-Server ein. Extern versehen
Sie die Server mit einem
gemeinsamen Domänennamen
und einer virtuellen IP-Adresse,
die einem Load BalancingSystem zugeordnet ist. Dieses
leitet den Verkehr an
verschiedene Server weiter. In
der Regel leitet die
Lastverteilung eineTCPVerbindung (z. B. eine HTTPAnfrage) an einen speziellen
Server und lässt diese
Serverleitung bis zur Beendigung
der TCP-Session bestehen.
Setzen Sie zusätzliche Server als
LDAP-Server ein. Extern
versehen Sie die Server mit
einem gemeinsamen
Domänennamen und einer
virtuellen IP-Adresse, die einem
Load Balancing-System
zugeordnet ist. Die ASP-ServerPersonalisierungs- und
Membership-Verzeichnis
Commerce-Shop
Das Diagramm verdeutlicht den
horizontalen Skalierungsprozess.
Folgende Server werden
Mitgliedschaftsinstanzen
verweisen auf den gemeinsamen
Domänennamen. Das Load
Balancing-System verzweigt den
Verkehr auf mehrere Server. In
der Regel leitet die
Lastverteilung eine TCPVerbindung (z. B. eine HTTPAnfrage) an einen speziellen
Server und lässt diese
Serverleitung bis zur Beendigung
der TCP-Session bestehen.
Partitionieren Sie die
Membership-Datenbank und
hosten jede Datenbankpartition
auf dedizierten SQL-Servern.
Vor dem Aufspielen von Daten
muss die MembershipDatenbank partitioniert werden.
Die partitionierten Datenbanken
können natürlich zuerst auf einer
Maschine verwaltet und erst
später auf dedizierten SQLServern angelegt werden. Wird
die Membership-Datenbank
schon vor der Partitionierung mit
Mitgliederdaten bevölkert,
müssen Sie mit einem
Migrationstool die partitionierte
Membership-Datenbank mit dem
Inhalt der aktuellen
Membership-Datenbank
repopularisieren.
In der DBStorage-Datenbank
werden Einkaufskorb, Aufträge
und Quittungen gespeichert. Die
DBStorage-Datenbank lässt sich
auch nicht so ohne weiteres
partitionieren. Minimale
Codeveränderungen (wie im
Abschnitt "Verbessern der
Architektur" beschrieben)
ermöglichen jedoch eine
Partitionierung und horizontale
Skalierung dieser Datenbank.
eingesetzt: IIS/ASPMehrfachserver, LDAPMehrfachserver, partitionierte
Membership-Datenbank-SQLServer, sowie ein Commerce
Store SQL-Datenbankserver.
Abbildung 2: Horizontale Hardwareskalierung
Die horizontale
Hardwareskalierung erhöht die
Kapazität der Serverfarm. Eine
weitere Skalierung erfordert
Verbesserungen an der
Systemarchitektur.
Verbessern der Systemarchitektur
Eine Verbesserung der
Systemarchitektur zur Erhöhung
der Effizienz der Serverfarm
erfordert die Konstruktion und
Bereitstellung der Applikation.
Grundsätzlich liegt das Ziel in der
Aufteilung der Arbeitsprozesse
gemäß deren Lastfaktoren, in der
Zuteilung von Servern zu jeder
Art von Belastung und in der
Leistungssteigerung jedes
Einzelnen. Dadurch können die
Server einfache Operationen
schneller ausführen und eine
größere Benutzerzahl pro Server
bedienen. Operationen mit
höheren Lastfaktoren, aber
geringeren Kapazitätsansprüchen
werden nur an einige wenige
Server vergeben.
Dedizierte Server bedienen
voluminösere Inhalte, wie z. B.
ASP-Inhalte, MTS und
BestellungspipelineKomponentenausführung. Auf
diese Art wird die gesamte
Serverbandbreite ohne
Beeinflussung der Wartung
statischer HTML/GIFInhaltsanfragen effizient
genutzt.
IIS beantwortet statische
HTML/GIF-Inhaltsanfragen
wesentlich schneller als ASPPage-Anfragen. So kann ein mit
der Bereitstellung von HTML/GIFInhalten beauftragter IIS-Server
10000 Benutzeranfragen
gleichzeitig abarbeiten, während
ein mit der Bedienung von
ASP/Commerce Pipeline
beschäftigter IIS-Server nur
1000 gleichzeitig erfolgende
Transaktionen bearbeiten kann.
Eine jüngst von Intel
durchgeführte Studie beweist,
dass alle Kundenzugriffe auf
Electronic-Commerce-Websites in
eine der fünf Kategorien fallen:
Browsen
Suchen
Anwenderregistrierung
Warenkorb füllen
Kaufen
Die Studie verdeutlicht, dass die
Anwender Browse-,
Registrierungs- und
Suchoperationen neunmal öfter
ausführen, als z. B. Operationen
wie "Ware in den Warenkorb
legen" oder "Kauf prüfen".
Anders ausgedrückt, bedeutet
das, dass von 100000 Benutzern
nur ungefähr 10000 den
Warenkorb füllen und kaufen,
aber 90000 Anwender browsen,
etwas suchen oder sich
registrieren lassen.
80%
9%
2%
5%
4%
Ungefähr 80 % des Verkehrs
werden von Servern bedient, die
statische Inhalte wie Browsen,
Anwenderregistrierung und
Suchoperationen ausführen
können; die verbleibenden 20 %
der anfallenden Transaktionen
und Anfragen erledigen spezielle,
für Hochlastbetrieb (Warenkorb
füllen und Kaufen) ausgelegte
Server. Da jedoch der
Hochlastbetrieb einhergeht mit
einer verringerten Anzahl von
Benutzerzugriffen, nimmt die
Zahl solcher Server ständig ab.
Dieses Schema lässt sich auf
einige Situationen anwenden, z.
B. statischen Inhalt (HTML/GIF),
dynamischen Inhalt
(ASP/Commerce-Pipeline),
Geschäftsvorschriften (MTSKomponenten), Plattendurchsatz
(cachen Sie alle aktiven Dateien)
und so weiter. Durch zusätzliche
architekturale Maßnahmen, die
im Folgenden aufgeführt sind,
lassen deutliche
Leistungssteigerungen bei
verbesserter Skalierbarkeit
erzielen:
 Abschalten des
IIS-SessionManagement
und Entfernen
der SessionVariablen
 Strikte
Trennung
statischer
Inhalte von
allen anderen
Inhalten
 Cachen von
statischen
Inhalten
 Cachen von
statischen
Suchanfragen
 Die gesamte
Geschäftslogik
wird auf
dedizierten
Servern
zusammengefa
sst
 Systemupdate
mit MSMQ oder
E-Mail






Batchverarbeit
ung von
Anfragen
Optimieren des
ASP-Codes
Optimieren der
Commerce
Pipeline
Optimierung
des
DatenbankSchemas
Optimierung
der
Katalogerstellu
ngs- und
Suchdienste
Optimierung
der SQLServerdatenba
nken
Abschalten der IIS-Sessionverwaltung und Entfernen von SessionVariablen
Vergewissern Sie sich, dass der
Applikationscode das IISSessionmanagement abschaltet
und keine Session-Variablen
verwendet werden. Die
Sessionsverwaltung von IIS
reserviert für jeden Anwender
einen ganz bestimmten
Speicherbereich, der dadurch
ständig vergrößert wird, dass die
Anwendung wegen der Zunahme
an Benutzerzugriffen ständig
neue Werte in die SessionVariable schreibt. Solange nur
wenige Werte in den SessionVariablen vorhanden sind, wird
die Leistung nicht merkbar
beeinflusst. Werden diese
Session-Variablen jedoch immer
umfangreicher (z. B. bei einem
Objektmodell) ist ein deutlicher
Leistungseinbruch nicht zu
verhindern.
Verbraucht die Session-Variable
zum Beispiel pro Benutzer 1 MB
Speicher, ergibt das bei 1000
gleichzeitig zugreifenden
Benutzern einen Speicherbedarf
von 1 GB. An diesem Beispiel
sieht man sehr schön, dass der
Gebrauch von Session-Variablen
bei einem vorhandenen
Speicherplatz von 1,5 GB in
Sachen Skalierbarkeit den
limitierenden Faktor darstellen.
Ohne diesen enormen
Ressourcenverbrauch könnten im
Rahmen der Verarbeitungsgrenze
der CPU eine ganze Menge mehr
Benutzer bedient werden.
Ein weiterer Nachteil von
Session-Variablen ist ihre
ausschließliche "Stationierung"
auf dem lokalen Server. Mit
anderen Worten, da die SessionVariable nur auf dem Server, der
sie gestartet hat gespeichert ist,
muss zwischen Client und diesem
Server eine Beziehung bestehen.
Um die unangenehmen
Nebeneffekte von "On-The-FlyRedundanz (egal, ob der Server
abstürzt oder heruntergefahren
werden muss, die Session ist zu
Ende) und dynamischem
Lastausgleich (verursacht
unbeständige Zugriffszeiten, d.
h. ein Benutzer verzeichnet sehr
lange Wartezeiten, bei einem
zweiten arbeitet das System
normal) zu vermeiden, setzt man
in diesem Fall den Befehl
"session stickiness" ein.
Die oben beschriebene Affinität
zwischen Client und Server wird
durch den Einsatz eines Cisco
LocalDirector-Routers
abgefedert, da dieser die QuellIP-Adresse verwendet, um die
Anfrage an einen Zielserver zu
heften. Verwendet der Client
jedoch zur Einwahl in das
Internet einen "load balanced"
Proxyserver, kann auch der
Cisco-Router wegen der
unterschiedlichen externen IPAdresse die "Session Stickiness"
nicht mehr weiter aufrecht
erhalten. Besonders
problematisch ist das Problem für
AOL-Kunden. Da AOL am
gesamten
Internetverkehrsaufkommen mit
ca. 25% beteiligt ist, wird dieses
Problem auch von den
entsprechenden SiteAdministratoren adressiert. Ein
beliebter Workaround ist der
Einsatz eines eigenen AOLServers zur kurzfristigen
Entlastung. Auf längere Sicht
wird ein einzelner dafür
abgestellter Server bei dem zu
erwartenden Wachstum von AOL
schlicht und ergreifend
"untergehen".
Soll für eine Benutzer-Session
der Status beibehalten werden,
empfiehlt sich als brauchbare
Alternative der Einsatz der
dynamischen Datenfunktion von
SSCE 3.0's LDAP-Dienst. Weitere
Informationen finden Sie unter
"Verwendung von MembershipVerzeichnis und Active User
Object (AUO) für SessionStatusdaten" des Site Server 3.0
Commerce Edition Resource
Kits.
Trennung von statischen und anderen Inhalten
Unter Bezugnahme auf die
erwähnte Intel-Studie werden in
den folgenden Tabellen die
beiden Verfahren zur
Bereitstellung eines
Zugriffsvolumens für 100000
gleichzeitig einwählende
Benutzer vorgestellt.
Verfahren 1: Nicht konsolidierte Serverfarm
Anzahl
der
Operation Inhaltsty Benutz
en
pen
er in
Prozen
t
Anzahl
der
Webser
ver
Anzahl
der
gleichzeit
ig auf
einen
Server
zugreifen
den
Benutzer
Browsen,
Suchen,
Anwenderregistrieru
ng, Ware
in den
Einkaufsko
rb, Kaufen
Alle
(statisch,
dynamisch 100%
, ASP,
etc.)
100
1,000
Gesamt:
Alle
100
nicht
100000
verfügbar
100%
Gesamtza
hl der
gleichzeiti
g
zugreifen
den
Benutzer
100000
Verfahren 2: Konsolidierte Serverfarm
Anzahl Anzahl
Operation Inhaltsty
der
der
en
pen
Benutz Webser
Anzahl
Gesamtza
der
hl der
gleichzeit gleichzeiti
er in
ver
Prozen
t
90%
g
zugreifen
den
Benutzer
9
ig auf
einen
Server
zugreifen
den
Benutzer
10000
10,000
Browsen
Ware in
den
Einkaufsko
rb, Kaufen,
Suchen,
Anwenderregistrieru
ng
Statisch
Andere
(dynamisc
10%
h, ASP,
etc.)
10
1,000
Gesamt:
Alle
19
nicht
100,000
verfügbar
100%
90000
Die Auswertung der Tabellen
zeigt einen Abfall der Front-EndServer von 100 auf nur 19, wenn
der statische Inhalt von den
anderen Inhaltstypen getrennt
wird.
Der Internet Information Server
(IIS) verarbeitet statische HTMLoder GIF-Inhalte sehr effizient,
die Bearbeitung ganzer ASPSeiten nimmt jedoch ziemlich
Prozessorzeit in Anspruch und
das geht auf Kosten der
Leistung. Zur optimalen
Auslastung dieser Server
kombiniert man am besten
Operationen mit gleichen oder
ähnlichen LastfaktorCharakteristika bzw.
Kapazitätsansprüchen und trennt
alle anderen davon. Nach
aktuellen Benchmarks kann ein
einzelner IIS-Server folgende
Benutzeranzahl gleichzeitig
bedienen:
Statische HTML/GIF-Inhaltsanfragen
Suchen - ASP-Seitenanfrage
Anwenderregistrierung - ASP-Anfrage
Ware in den Einkaufskorb - ASP-Anfragen
Kaufprüfung - ASP-Anfragen
Diese Zahlen verdeutlichen die
Notwendigkeit für den Einsatz
von drei verschiedenen Servern:
Einer zur Bearbeitung der
10,000 Benutzer
1,500 Benutzer
1,500 Benutzer
1,200 Benutzer
1,200 Benutzer
statischen HTML/GIF-Anfragen,
einer zum bearbeiten der ASPSuch- und
Anwenderregistrierungsanfragen
und der letzte zum bearbeiten
der Warenkorb und
Kaufprüfungs-ASP-Anfragen.
Überträgt man zum Beispiel die
vorstehenden Benchmarkzahlen,
die Prozentergebnisse der IntelStudie und legt 100000 Clients
zu Grunde, könnte die
Serverausstattung in etwa so
aussehen:
Statische HTML/GIFInhaltsserver
Suchen + Anwenderregistratur-ASP-Server
Ware in den
Warenkorb +
Kaufprüfungsserver
100,000 *
80%=
100,000 *
11%=
80,000 Users /
10,000 Users=
11,000 Users /
1,500 Users=
100,000 *
9%=
9,000 Users / 1,200
8 Server
Users=
Gesamtzahl der erforderlichen Frontend-Server:
(Die in der Tabelle präsentierten
Zahlen setzen die Trennung der
ASP-Produktseiten voraus, die
dann als statische HTML zur
Aufbauoptimierung umgesetzt
werden. Ganz so einfach, als dies
die Tabellenangaben vermuten
lassen, verhalten sich die Sites in
der Praxis doch nicht).
Cachen von statischen Inhalten
ASP-Seiten übersetzen die
mannigfaltigsten Skripts in HTML,
weder ganz dynamisch, noch
ganz statisch. Beispiele für
solche Daten sind
Produktattribute (Information,
Beschreibung, Preis usw.), SiteAnnouncements und
Verkaufsankündigungen.
Es gibt Verfahren, mit denen
man diese Informationen in
statische HTML-Seiten übersetzt
und als statischer HTML/GIFInhalt präsentiert werden. Durch
den Verzicht auf die ASPDatenbearbeitung und die
fehlende SQL-Server Anfrage
ergibt sich ein größerer
Durchsatz.
Ist zwar die Art der Information
ziemlich statisch, wird aber
8 Server
8 Server
24
Server
mancher Inhalt (z. B. der
Produktpreis) von einer
Datenbanktabelle (z. B. die
Preisermittlung durch ZIP-Code)
gesteuert, kombiniert man diese
Technik, indem man die
Produktinformation getrennt vom
Produktpreis in einem separaten
HTML-Rahmen ausgibt. Eine
andere Möglichkeit ist die
Verwendung eines ISAPI-Filters,
der HTML lesen kann und eine
Suche in einer Speicherbank
startet, so ähnlich, wie früher mit
.idc und .htx-Dateien die
Datenbankintegration vollzogen
wurde. Dieses Verfahren
vermeidet eine ASPDatenbearbeitung und
gewährleistet schnelle HTMLUmsetzung.
Cachen von statischen Look-Up-Daten
Sind Ihre Daten von
dynamischen Wertetabellen (z.
B. der Produktpreis abhängig
vom Zip-Code oder einer
Kunden-ID) oder von
Datenbanktabellen (wie die
Preisgestaltung mit Hilfe des ZIPCode) abhängig, verwenden Sie
zum Cachen der Wertetabelle
eine Speicherdatenbank, die Sie
nächtens (oder wenn
erforderlich) aus Gründen der
Datenaktualisierung auffrischen
können. Der, in Zusammenhang
mit der netzwerküberspannenden
Datenbeschaffung anfallende
Overhead entfällt.
Vielfach kann der in Echtzeit
vorhandene Inventarstatus, wie
z. B. die Anzahl der vorhandenen
Artikel, gegen eine "auf Lager"Flag ersetzt werden. Auch die
Look-Ups können im
Speichercache gehalten werden,
um nachts oder bei Bedarf
aktualisiert zuwerden. Ein, in
Zusammenhang mit der
Datenbeschaffung von einem
SQL-Server anfallende Overhead
entfällt. Eine Vorhaltung der
Daten im Speicher bringt ein
schnelleres Suchergebnis durch
verringerte Latenz (verursacht
durch die netzwerkumspannende
Datenbeschaffung) und
verbessert die Leistung.
Bei Anwendung dieses
Verfahrens sind kleine Tabellen
ideal. Durch Erhöhung der
Speicherkapazität können bei
Bedarf auch größere Tabellen
untergebracht werden. Eine
Analyse der IIS- und SQLServerlogs gibt Aufschluss
darüber, auf welche Tabellen
jüngst zugegriffen wurde und
welche Tabellen von einem Cache
am meisten profitieren würden.
Auf vielen Sites besteht der
Seiteninhalt aus einem HTMLListenfeld oder einer Combobox
(wie Produktkategorien oder
Produktabteilungen), die aus
einer Tabelle ermittelt wurden.
Es ist sinnvoll, diese Listen
einmal aufzunehmen und dann
das HTML-Fragment global im
ASP-Anwendungsobjekt zu
cachen, statt sie jedes Mal von
neuem mühsam holen zu
müssen. Daten cached man mit
dem Commerce Dictionary (gibt
es mit SSCE) oder dem MSDNDictionary-Object (wird von der
MSDN-Ressource gestellt).
Konsolidierte Geschäftslogik auf dedizierten Servern
Da Site Server 3.0 CPU-abhängig
ist, verbessert eine reduzierte
CPU-Nutzung die Leistung der
ASP-/Commerce PipelineVerarbeitung. Der CPU-Zugriff
wird durch Identifizierung und
Trennung von komplexen,
rechenintensiven Geschäftsregeln
(z. B. MTS-Komponenten) durch
spezielle Server vermindert.
Es gibt einen Trade-Off
hinsichtlich der Leistung
zwischen der Ausführung von
Komponenten innerhalb eines
Prozesses und einer Ausführung
der Komponenten außerhalb des
Prozesses über DCOM. Um den
exakten Wert des Trade-Offs zu
bestimmen, kann man die
Benchmarks beider Methoden
ermitteln, um dann die für die
eigene Site beste Methode zu
ermitteln.
Ist die Geschäftsregel sehr
rechenintensiv und sind die
Leistungskosten höher als die
Verwaltungskosten durch DCOM,
könnten Sie die Komponente als
MTS-Komponente entwickeln und
dafür einen extra Server zuteilen.
Dadurch wird wegen der
Durchsatzverbesserung auf der
ASP/Commerce Pipeline zugleich
deren Leistung verbessert.
Enthält die Geschäftsregel jedoch
nur einige Zeilen nicht sehr
rechenintensiven Codes, ist ein
dedizierter Server zur
Ausführung zu teuer. In diesem
Fall belassen Sie bitte den Code
als ASP-Funktionsschnippsel
(spart Objektaktivierungs- und
Invocationskosten) oder wenn es
sich bei dem Code um einen
komplizierten ASP-Code handelt,
kodiert man diesen mit Visual
C++/ATL als ASP COMKomponente und aktiviert ihn
örtlich (mit Hilfe des im ATLWizard enthaltenen ThreadingModells).
Systemupdate mit MSMQ oder E-Mail
Zum Updaten von Anforderung,
Data Warehouse, Berichte und
anderen Systemen verwenden
Sie statt einer
Datenbanktransaktion Microsoft
Message Queue Server (MSMQ)
oder E-Mail. MSMQ bzw. E-Mail
beeinflusst positiv die
asynchrone Kommunikation und
erzielt einen ziemlich guten
Transaktions- und
Operationsdurchsatz.
Zugriffsverzögerungen wegen
Datenbeschaffung oder
aufwendiger Berechnungen
werden vermieden.
Gibt beispielsweise eine Firma
(oder ein anderes Unternehmen)
die übliche Bestellanforderung
von einem geographisch anderen
Ort, als dem Standort des
Bestellungs-Empfängers ab (drop
ships), müssen beide Standorte
regelmäßig neue Bestellungen
und Versandbedingungen
miteinander austauschen. In
diesem Fall führt man keine
Datenbanktransaktion (z. B.
eine periodische Batch-Datei)
durch und sendet das Ergebnis
an die Remote Site, sondern
benutzt zum Versand von
Benachrichtigungen (z. B. neue
Bestellungen) die MSMQ-Dienste
oder E-Mail und erhält von der
Remote Site eine Bestätigung.
Die Frontend-Server akzeptieren
die Anfrage und leiten diese
geschwind weiter an MSMQ oder
zu einem E-Mail-Server, der die
Information an die Remote
Location übermittelt. Man erhält
dadurch eine schnellere
Verarbeitungsgeschwindigkeit
mit kürzerer Antwortzeit des
Frontend-Servers, d. h. die Sites
werden auf diese Weise schneller
aktualisiert.
Im allgemeinen erfordern die
meisten Sites unter bestimmten
Bedingungen die Anfertigung von
Berichten (zu Bestellungen,
Transaktionen, Gebrauch usw.)
Diese Berichte werden von den
Site-Administratoren als Kopien
von, auf der Hauptdatenbank
befindlichen Online-Logs oder
Datenbankprotokollen erstellt.
Mit MSMQ können solche Kopien
fast in Echtzeit auf einem zum
Empfang dieser Protokolle
berechtigten Server bereitgestellt
werden. Damit unterbindet man
elegant die sehr zeitraubenden
"Aufzeichnen-Kopieren"Datenbankoperationen. Die
Weiterverarbeitung der
Protokolle erfolgt fast in Echtzeit,
daher stehen an der Remote
Location ständig aktuelle Berichte
zur Verfügung. Die
Speicherkosten können nochmals
nach Erstellung der notwendigen
Berichte durch Ablegen der
weitergeleiteten und bereits
verarbeiteten Protokolle gesenkt
werden.
Statt eine In-LineDatenbanktransaktion
durchzuführen, können
Commerce Server-Bestellungen
und Quittungen asynchron
aufgezeichnet werden. Man
vermeidet damit
Transaktionsverzögerungen der
ASP-Seite, die die Informationen
schneller weiterverarbeiten kann.
Nachteilig an der Geschichte ist,
der Kunde erhält keine sofortige
Bestätigung seiner Bestellung,
sondern muss auf ein
bestätigendes E-Mail warten
(oder auf den Abschluss der
Bestell- und Belegtransaktionen
in Ihrer Datenbank). Die
asynchrone Aufzeichnung von
Commerce Server-Bestellungen
und Belegen empfiehlt sich
bestens für Sites mit ständigen
Lastspitzen.
Batch-Verarbeitung von Anfragen
Kreditkarten-, Steuer- und
ähnliche verarbeitungsintensive
Angelegenheiten werden am
besten im Batch-Modus auf
einem dedizierten Server
ausgeführt. Dadurch können
Frontend-Server auf Anfragen
wesentlich schneller mit höherer
Geschwindigkeit reagieren.
Ausfall- und Ausnahmeberichte
werden dem Käufer über E-Mail
zur Verfügung gestellt. Vielfach
existieren bereits LegacySysteme, die Batch-Verarbeitung
durchführen.
Optimieren des ASP-Codes
Vielfach werden Internet-Sites
auf "die Schnelle" entwickelt, d.
h. die Entwicklungsdauer ist
kurz, aber regelmäßig. Sehr oft
sind derartige "Entwicklungen"
auf einem unterentwickeltem
Code aufgebaut, dem es an
Effizienz, Klarheit und
Wiederverwendbarkeit fehlt.
Jeder dieser Faktoren beeinflusst
negativ die ASPCodeverarbeitung.
Zur Optimierung Ihres ASPCodes erstellen Sie ein einfaches
Utility, das den
Instrumentencode in Ihre ASPQuelltexte zum Aufzeichnen der
Ausführungszeit jeder Codezeile
einsetzt. Wird dann der ASPCode ausgeführt, erstellt dieser
ein sogenanntes
Quellenausführungsprofil, mit
dem jeder Quelltext, der einer
weiteren Optimierung bedarf,
identifiziert werden kann.
Manche Gruppierungen
behandeln Geschäftsbedingungen
als Commerce Pipeline-Skripte,
die nie kompiliert werden. Bei
jeder Skript-Komponente bemüht
der Commerce Server eine
Skript-Engine und das resultiert
in einer ständigen Aktivierung
und Anrufung mit
dementsprechendem Overhead.
Eine merkliche
Leistungssteigerung erhält man,
indem man
Geschäftsbedingungen in eine
Visual C++/ATL-kompilierte
Commerce-Pipeline- Komponente
konvertiert.
Optimierung der Commerce-Pipeline
Den Datendurchsatz der
Commerce Pipeline verbessert
man einerseits durch Entfernen
unnötiger Pipelinestufen,
andererseits unterteilt man die
Pipeline, wo möglich, in eine
eigene Ausführungsstufe und
vermeidet dadurch den
Aktivierungsoverhead und erhöht
die
Verarbeitungsgeschwindigkeit.
Natürlich kann die Pipeline
vollkommen umgangen werden,
es werden dafür angepasste
MTS-Komponenten verwendet.
Da man den Zugang zu ISVPipelinekomponenten
(Steuerkalkulation, Fracht,
Kreditkarten- Authorisierung)
von Drittherstellern verliert und
dadurch die Entwicklungskosten
rapide in die Höhe schnellen,
kann diese Maßnahme nicht
empfohlen werden.
Optimierung des Datenbank-Schemas
Die Optimierung des DatenbankSchemas geschieht durch völliges
Umgehen des Commerce-Shops;
man schreibt Warenkörbe,
Bestellungen und Belege direkt in
eine SQL-Serverdatenbank. Um
die DBStorage-Funktion zu
ersetzen, muss allerdings der
Code angepasst bzw. modifiziert
werden. Eigentlich umgeht man
mit diesem Verfahren die mit der
DBStorage-Funktion
einhergehenden
Zuordnungsfehler. Wie dem auch
sei, jedes zusätzliche Feld
erfordert eine Modifikation des
Datenbankschemas inklusive des
Read/Write-Codes zur
Unterbringung des neuen Felds.
Vielleicht sieht das alles sehr
einfach aus, erfordert jedoch ein
sorgfältiges Design, wobei ein
Benchmark des
Datenbankschemas zur
Überprüfung der maximalen
Leistungssteigerung nicht
Schaden kann.
Ein Nachteil in der Anwendung
dieser Technik liegt im Verlust
der Flexibilität des Commerce
Dictionary Object, sowie im
Zwang einer Modifizierung der
Datenbank, wenn dem
Warenkorb (orderform object)
ein neues Feld hinzugefügt wird.
Optimierung der Katalogerstellungs- und Suchdienste
Durch Trennen der statischen
von den dynamischen
Inhaltsanfragen und durch
Behandeln der verschiedenen
Anfragetypen auf einem
dedizierten Servern werden die
Katalogerstellungs- und
Suchdienste optimiert. In SSCE
3.0 sind die folgenden Dienste
integriert:
Katalogerstellungss Erstellt den Index-Katalog, der auf einem
erver
dedizierten Server ausgeführt wird.
Greift mit Suchanfragen auf den Katalog zu,
Suchserver
der auf einem dedizierten Server ausgeführt
wird.
Jede Instanz des
Katalogerstellungsdienstes kann
bis zu 32 Suchserver beinhalten;
zur Katalogerstellung und
Durchsuchung das optimale
Verfahren. Die Suchkapazität
kann durch Hinzufügen weiterer
Suchserver nochmals gesteigert
werden.
Optimierung der SQL-Serverdatenbanken
Microsoft® SQL Server™ 7.0
bietet gegenüber früheren
Versionen wesentliche
Verbesserungen, wie z. B.
automatisches Vergrößern,
verbesserte Leistung und die
Fähigkeit, Online-Backups
durchzuführen. Sie können von
SSCE 3.0 verwendete
Commerce-Shops, Ad Server und
Produktdatenbanken durch
Platzierung auf vertikal
skalierten, dedizierten High EndServern individuell erweitern.
Nimmt der Verkehr auf Ihrer Site
deutlich zu, sollten Sie folgende
Maßnahmen ergreifen:
 Weisen Sie der
Ad ServerDatenbank
mehrere SQLServer zu,
einen für jeden
Frontend-ASPServer, auf
dem Werbung
läuft. Planen
Sie die
Verwaltung der
KampagnenInformation,
das Sammeln
von Eindrücken
und
DurchklickErgebnissen.
 Weisen Sie
auch der
Produktdatenb
ank mehrere
SQL-Server zu.
Die Datenbanken des SSCE 3.0
Commerce Shops können auch
horizontal durch Partitionierung
mit dem Hash der Kunden-ID.
Dabei wird das Hash der KundenID zur Weiterleitung der
Datenbankoperationen (z. B.
Ware in den Einkaufskorb,
Bestellungen, Quittungen usw.)
an eine dedizierte CommerceShop-Datenbank eines
dedizierten High End-Servers
verwendet. Die letzten vier
Ziffern der Kunden-ID ordnen Sie
einem SQL-Server einer Gruppe
von Commerce-Shopverwaltenden SQL-Servern zu.
Das folgende Diagramm
verdeutlicht die
Strukturverbesserungen wie
dedizierte statische HTML/IISServer, dedizierte Such/Benutzerregistrations-ASPServer, dedizierte
Warenkorb/Kaufprüfungsserver,
parallele LDAP-Server, parallele
Membership-SQL-Server und
partitionierte Commerce-ShopDatenbanken auf parallelen SQLServern.
Abbildung 3: Architektonische Verbesserungen
Argumente gegen konsolidierte Webserver
Obwohl Sie Ihre Server
konsolidieren können, gibt es
Argumente, die gegen ein
solches Vorgehen sprechen. In
der Regel wird eine kommerzielle
Website mit hoher Kapazität,
starkem Verkehr und
Hochverfügbarkeit betrieben.
Stehen weniger Frontend-Server
zur Verfügung, bedeutet dies für
jeden einzelnen prozentual
anteilig eine höhere Belastung,
stärkeres Verkehrsaufkommen
und Verfügbarkeit. Folgende
Nachteile treten bei der
Konsolidierung einer WebserverFarm auf:
 Der Verlust
eines Servers
bedeutet einen
erheblich
höheren
Kapazitätsverlu
st als bei nicht
konsolidierten
Webservern.
 Eine
Kapazitätserhö
hung kann nur
in großen
Stufen
durchgeführt
werden.
 Die HardwareWartung ist
schwierig; die
Ausfallzeit
eines Servers
schwächt die
Leistung der
gesamten
Site.
 Die Redundanz
ist stark
begrenzt oder
kann nur mit
großem
Kostenaufwand
erreicht
werden.
 99.9%
Verfügbarkeit
ist beim
"Offline
nehmen"
großer
Kapazitätsblöc
ke kaum zu
gewährleisten.
Natürlich kann man die Nachteile
durch den Einsatz redundanter
Server, Festplatten, Netzteile
usw. etwas wettmachen. Wird
jedoch neue Hardware
hinzugefügt, sieht die Site in
Bälde wie eine unkonsolidierte
Webfarm aus.
Zusammenfassung
Man kann eine hochskalierbare
Site mit der geringstmöglichen
Anzahl von Servern durch
vertikale und horizontale
Skalierung und die
Implementierung struktureller
Verbesserungen aufbauen.
Werden die Server für das
Internet aufgesetzt, empfehlen
wir die horizontale Skalierung;
die dann redundanten Server
lassen eine vorausberechenbare,
abgestufte Kapazitätserhöhung
oder -minderung zu.
Das Konsolidieren von
Operationen gleicher
Belastungsfaktoren mit
dedizierten Servern ermöglicht
eine effiziente Ausstattung ihrer
Serverfarm mit der geringst
möglichen Anzahl von Servern.
Mit den in diesem Beitrag
beschriebenen Verfahren kann
SSCE 3.0 theoretisch so skaliert
werden, dass 88 Frontend-Server
100000 gleichzeitig zugreifende
Benutzer bedienen (die Zahlen
wurden auf einer Kunden-Site
durch Leistungstests ermittelt).
Skalieren Sie Backend-Server
nach Bedarf; die meisten Sites
bedürfen jedoch keiner
horizontalen Skalierung der
Backend-Server, da das gleiche
Resultat auch mit einer
vertikalen Serverskalierung
erzielt wird.
In Zukunft stehen Ihnen mit
Windows 2000, IIS 5 mit
Webclustern und anderen
Verfahren wie z. B. 1GHz Alphaund Merced-Prozessoren,
Windows 2000 64-bit weitere
aufregende Technologien zur
Skalierung, Leistungs- und
Kapazitätssteigerung Ihrer
Server zur Verfügung.
Die in diesen Unterlagen
enthaltenen Angaben und Daten,
einschließlich URLs und
Internetwebsites, können ohne
vorherige Ankündigung geändert
werden. Die BenutzerInnen
verwenden dieses Ressource Kit
auf eigene Verantwortung und
Risiko. Für dieses Ressource Kit
gibt es keine Unterstützung, es
wird so zur Verfügung gestellt,
wie es vorliegt, ohne
Garantieanspruch jeglicher Art,
weder ausdrücklich noch
unterstellt. Die Beispielfirmen,
Organisationen, Produkte,
Personen und Ereignisse sind frei
erfunden, soweit nichts anderes
angegeben ist. Jede Ähnlichkeit
mit echten Firmen,
Organisationen, Produkten,
Personen oder Ereignissen ist
unbeabsichtigt und rein zufällig.
Daraus kann keine
Schlussfolgerung, wie auch
immer, gezogen werden. Die
BenutzerInnen sind zum
Einhalten aller anwendbaren
Urheberrechtesgesetze
verpflichtet. Unabhängig von der
Anwendbarkeit der
entsprechenden
Urheberrechtsgesetze darf ohne
ausdrückliche schriftliche
Genehmigung der Microsoft
Corporation kein Teil dieser
Unterlagen für irgendwelche
Zwecke vervielfältigt oder
übertragen werden, unabhängig
davon, auf welche Art und Weise
oder mit welchen Mitteln,
elektronisch, mechanisch, per
Fotokopie, Aufnahme oder
ähnliches, dies geschieht.
Es ist möglich, dass Microsoft
Rechte an Patenten bzw.
angemeldeten Patenten, an
Marken, Urheberrechten oder
sonstigem geistigem Eigentum
besitzt, die sich auf den
fachlichen Inhalt dieses
Dokuments beziehen. Das
Bereitstellen dieses Dokuments
gibt Ihnen jedoch keinen
Anspruch auf diese Patente,
Marken, Urheberrechte oder auf
sonstiges geistiges Eigentum, es
sei denn, dies wird ausdrücklich
in den schriftlichen
Lizenzverträgen von Microsoft
eingeräumt.
 1999 Microsoft Corporation.
Alle Rechte vorbehalten.
Microsoft, Windows, Windows NT,
Microsoft SQL-Server und Visual
C++ sind entweder eingetragene
Warenzeichen oder Warenzeichen
der Microsoft Corporation in den
USA und/oder anderen Ländern.
Herunterladen