Dieser Artikel wurde maschinell übersetzt.

Windows Azure-Insider

Messen und automatisches Skalieren mehrinstanzenfähiger Anwendungen in Windows Azure

Bruno Terkaly
Ricardo Villalobos

Bruno Terkaly and Ricardo VillalobosIn unserem letzten Artikel (msdn.microsoft.com/magazine/dn201743), wir stellten Konzepte in Bezug auf das Erstellen von Multi-Tenant-apps, für zwei der vier Säulen, die berücksichtigt werden sollten, wenn ein solches System zu erstellen: Identität und Sicherheit sowie Daten Isolierung und Trennung. In diesem Monat konzentrieren wir uns auf zwei andere wichtige Bereiche, die tief interwined sind: Dosier- und automatische Skalierung. Dosierung ermöglicht es Unternehmen, Informationen über die verschiedenen Komponenten zu sammeln, die unter den Mietern gemeinsam genutzt werden; Autoskalierung garantiert, dass die Benutzerfreundlichkeit Zeiten mit hohem Verkehrsaufkommen betroffen ist nicht und Server Benutzer sind, wenn die Ressource Auslastung geringer ist.

Sammeln von Informationen über Ressourcennutzung ist üblich, bei der Problembehandlung für Anwendungen, insbesondere während der Entwicklung und Prüfprozesse. Dadurch Schwellen und Hardware-Anforderungen, die eine optimale Leistung der Lösung garantieren können festgelegt werden, und minimalen Hardwareanforderungen können empfohlen werden. Unter Windows erfolgt diese Aufgabe mithilfe von Leistungsindikatoren, die helfen, Engpässe im System und Fehlerbedingungen zu bestimmen.

Dosierung ist besonders wichtig, wenn Multi-Tenant-Lösungen in der Cloud und nicht nur während der Entwicklungsphase ausgeführt. Unterstützt mehrere Benutzer gemeinsam gemeinsame Ressourcen stellt spezifische Herausforderungen, wie erzwingen Sie Quoten für Mieter, identifizieren Sie alle Benutzer, die übermäßig viele Ressourcen verbraucht werden, oder entscheiden, ob die Preisgestaltung Stufen müssen neu definiert werden. Denken Sie daran, die Belichtungsmessung Multi-Tenant-Lösungen nicht nur über die Ermittlung oder Überprüfung der Nutzung Rechnung aus Ihrer Cloud-Anbieter ist — in diesem Fall Windows Azure – aber auch über die Optimierung von Ressourcen in der Bereitstellung, die das Niveau der Dienstleistungen garantieren Mietern erwarten, normalerweise ausgedrückt in einem Service Level Agreement (SLA).

In diesem Artikel werden wir auf Dosierung und Autoskalierung der Compute-Teil einer Multi-Tenant-Lösung die Lösung ist geben, die durch Veränderungen in der Anzahl der Benutzer, die Zugriff auf die Anwendung am meisten betroffen ist. Windows Azure mehrere Bereitstellungsmodelle der Wolke (Cloud Services, virtuelle Computer und Websites) unterstützt, ist es wichtig zu verstehen, die verschiedenen Protokollierungs- und Diagnosemöglichkeiten, dass jeweils bietet und wie sie Autoscaled sein können auf der Grundlage dieser Informationen. Für den Fall, dass Sie besser zu verstehen, die grundlegenden Unterschiede, vor- und Nachteile dieser Bereitstellung-Modelle müssen, finden Sie eine gute Anleitung bei bit.ly/Z7YwX0.

Sammeln von Daten von Windows Azure Cloud-Services

Cloud-(basierend auf der Plattform als Service-Konzept), sammelt Daten über die Infrastruktur von Windows Azure Diagnose (WAD), die auf das Tracing für Windows (Event Tracing for Windows, ETW)-Framework aufbaut. Da Cloud Services auf Staatenlose virtuellen Maschinen (VMs) basiert, ermöglicht WAD Daten lokal zu speichern und, basierend auf einem Zeitplan in einem zentralen Repository in Windows Azure Storage mithilfe von Blobs und Tabellen übertragen. Sobald die Diagnosedaten von mehreren Instanzen in der Rolle gesammelt wurden, können Sie analysiert und für mehrere Zwecke verwendet. Abbildung 1 zeigt, wie dieser Prozess funktioniert.

Windows Azure Diagnostics for Cloud Services
Abbildung 1 Windows Azure-Diagnose für Cloud-Services

Um eine Diagnose für Cloud-Dienste zu aktivieren, sollte das entsprechende Modul in der Rolle-Bereitstellung (über die ServiceDefinition.csdef-Datei) importiert und dann über die WAD-Konfigurationsdatei (diagnostics.wadcfg) aktiviert. Ein anderer Ansatz ist, programmgesteuert konfigurieren Diagnose innerhalb der OnStart-Methode für die Rolle, aber mithilfe der Konfigurationsdatei wird bevorzugt, weil es zuerst geladen wird und Störungen mit Bezug zu Start Aufgaben gefangen und protokolliert werden können. Auch benötigen keine Änderungen an der Konfiguration auf den Code wieder aufgebaut werden. Abbildung 2 zeigt die einfachste Ausführung der Service-Definition und Diagnose Konfigurationsdateien.

Abbildung 2 grundlegende Service-Definition und Diagnose-Konfigurationsdateien für Cloud-Services

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyHostedService" xmlns=
  "https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"
  schemaVersion="2012-10.1.8">
  <WebRole name="WebRole1">
    <!--<Sites> ...
</Sites> -->
    <!-- <Endpoints> ...
</Endpoints> -->
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>
<?xml version="1.0" encoding="utf-8" ?>
<DiagnosticMonitorConfiguration xmlns=
  "https://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"
  configurationChangePollInterval="PT1M"
  overallQuotaInMB="4096">
  <Directories bufferQuotaInMB="0" scheduledTransferPeriod="PT30M">
    <IISLogs container="wad-iis" directoryQuotaInMB="0" />
  </Directories>
</DiagnosticMonitorConfiguration>

Das ConfigurationChangePollInterval-Attribut definiert, wie oft eine Instanz für Konfigurationsänderungen, überprüft, während der ScheduledTransferPeriod gibt das Intervall für die lokalen Dateien auf Windows Azure Storage übertragen werden (in dem Beispiel in Abbildung 2, in den "Wad-Iis" Blob Container). Beachten Sie, dass eine Minute (PT1M) der Standard- und der Mindestwert für die geplante Übertragung von Dateien-Parameter ist, aber es wäre Overkill für die meisten Szenarien. Das OverallQuotaInMB-Attribut definiert den Gesamtbetrag der Dateisystem-Speicherung für Protokollierung Puffer reserviert. Das BufferQuotaInMB-Attribut für jede Datenquelle kann entweder der Standardwert 0 (null) gelassen werden – d. h. es ist kleiner als die OverallQuotaInMB-Eigenschaft — oder es explizit festgelegt werden. Die OverallQuotaInMB muss kleiner als die Summe aller BufferQuotainMB Eigenschaften sein.

Obwohl unterschiedliche Datenquellen zum Sammeln von Diagnoseinformationen für Cloud-Services verwendet werden können, ist das mit ihnen um zu ermitteln, welche bestimmte Mieter die meisten Compute-Ressourcen verbrauchen nicht einfach. Die nächste Metrik, die für diesen Zweck verwendet werden kann wird durch den IIS World Wide Web Consortium (W3C)-Protokollen, vorausgesetzt-Verkehr von den verschiedenen Nutzern bereitgestellt und Mieter ist per URL-Parameter oder bestimmte virtuelle Verzeichnisse verfolgt. Sie können den IISLogs XML-Knoten in die Diagnose-Konfigurationsdatei hinzufügen, um sie zu aktivieren, (ebenfalls in Abbildung 2), aber seien Sie gewarnt, dass diese IIS-Protokolle schnell riesige zurechtkommen. Denken Sie daran, dass Diagnoseinformationen in ein Windows-Azure-Speicher-Konto gespeichert und auf bereitgestellte und ausgeführte Dienstleistungen Konfigurationsänderungen.

Weitere Informationen zu anderen Arten von Datenquellen über die Konfigurationsdatei — einschließlich Windows-Ereignisprotokollen und Leistungsindikatoren, u. a. — Sie können überprüfen, dass die Windows-Azure-Dokumentation unter bit.ly/GTXAvo. Außerdem wurde ab der Version 2.0 des Windows Azure SDK, den Prozess der Konfiguration Diagnose in Visual Studio stark verbessert. Diagnoseabschnitt bietet jetzt einen Custom-Plan, die geändert werden kann, um einzuschließen eine oder mehrere Datenquellen, um protokolliert und auf das angegebene Konto der Windows-Azure-Speicher übertragen werden (Abbildung 3).

New Diagnostics Configuration Options in Windows Azure SDK 2.0
Abbildung 3 neue Diagnose-Konfigurationsoptionen in Windows Azure SDK 2.0

Durch Klicken auf die Schaltfläche Bearbeiten, können Sie definieren bestimmte Daten erfasst werden, einschließlich Windows-Leistungsindikatoren, Ereignisprotokolle und Protokoll-Verzeichnisse (Abbildung 4). In diesem Beispiel Diagnoseinformationen für Prozentsatz der Prozessorzeit, die verwendet wird, zur Verfügung Megabyte Speicher und Anzahl der Anfragen pro Sekunde erfasst und auf das Windows-Speicher-Konto alle 30 Minuten (die Übertragung Fristsetzung) übertragen. Diese neue Schnittstelle vereinfacht den Prozess der Diagnose für Cloud-Dienste konfigurieren und Abrufen von Messdaten für die spätere Verwendung.

Configuring Performance Counters in Visual Studio with the Windows Azure SDK 2.0
Abbildung 4 Konfigurieren von Performance-Marken in Visual Studio mit dem Windows Azure SDK 2.0

Zusätzlich zu den Cloud-Diensten Überwachung Optionen der Windows-Azure-Plattform sollten Sie einen Blick auf die Cloud Ninja Metering Block freigegeben durch das Windows Azure Inkubation-Team, das viele dieser Funktionen in einer einfach zu bedienenden-Bibliothek umfasst. Es ist abrufbar unter cnmb.codeplex.com.

Sammeln von Daten von Windows Azure virtuelle Maschinen

Virtuelle Maschinen können werden statusbehaftete Instanzen, die auf der Windows-Azure-Plattform ausgeführt und einzeln eingesetzt oder mit Cloud-Services über virtuelle Netzwerke verbunden werden. Da diese Instanzen Vollversionen von Windows und Linux ausgeführt werden, ist eine Diagnose Informationen ähnlich dem Prozess für lokalen Computer mithilfe von Leistungsindikatoren und auf lokalen Speicher beibehalten. Der Prozess des Extrahierens dieser Informationen variiert, aber es wird normalerweise durch die Installation von lokale Agenten, die diese Informationen an externe Dienstleistungen übertragen.

Sammeln von Daten von Windows Azure-Websites

Jetzt wenden wir unsere Aufmerksamkeit auf Windows Azure-Websites. Diagnose sammeln ist Informationen von Websites ein einfacher Prozess, der direkt im Verwaltungsportal aktiviert werden kann. Zum Zweck der Überwachung mandantenfähige Applikationen, Web Server-Protokollierung (W3C extended Log File Format) aktiviert werden soll, und Log-Dateien über FTP herunterladen. Führen Sie folgende Schritte aus:

  1. Zugang manage.windowsazure.com.
  2. Wählen Sie Web-Sites und dann die Website, die muss konfiguriert werden.
  3. Klicken Sie auf konfigurieren, und scrollen Sie im Abschnitt "Website-Diagnose". Webserver-Protokollierung aktivieren.
  4. Sie können die Protokolle von /LogFiles/http/RawLogs herunterladen. Log Parser 2.2, aus dem Microsoft Download Center verfügbar (bit.ly/119mefJ), kann verwendet werden, zu analysieren und Abfrage IIS protokolliert.

Als kann mit Windows Azure Cloud Services, Informationen aus den Log-Dateien verwendet werden um zu bestimmen, die Verwendung von Ressourcen von anderen Mietern, durch die Verfolgung von URL-Parametern oder einzelne virtuelle Verzeichnisse.

Dosierung als Dienst

Einige Firmen bieten neben der Diagnose nativ des Windows Azure metering Services für Windows Azure. Z.B. Dell Inc. hat ein Produkt namens Foglight, das liefert Echtzeitdaten auf die Gesundheit der Anwendungen und Bindungen zurück auf die UX. Dazu gehört auch ein Benachrichtigungsdienst, der Entwickler von kritischen Problemen benachrichtigt. Heute Nebel­Light unterstützt Cloud-Dienste und Windows Azure SQL-Datenbank, basierend auf der WAD-Infrastruktur, wie in Abbildung 5.

The Dell Foglight Monitoring Portal
Abbildung 5 der Dell Foglight Überwachung Portal

AutoScaling-Optionen

Nachdem die Indikatordaten Dosier- und Leistung erfasst wurden, kann es auf die Ebene der Bereitstellung zu bestimmen, die benötigt wird, um den Leistungsanforderungen der Anwendung verwendet werden. Automatische Skalierung in Windows Azure bezieht sich auf den Akt des addieren oder Subtrahieren von Instanzen aus einer bestimmten Bereitstellung (Skalieren), mit der Idee der Lösungen zu halten und den Betrieb für den niedrigsten möglichen Kosten. Obwohl es möglich ist, scale-up (Zunahme die Ressourcen für eine einzelne Maschine), das bedeutet in der Regel Anwendungsausfälle, das ist nie wünschenswert. Grundsätzlich gibt es drei Möglichkeiten, Autoscale einer Windows Azure-Bereitstellung.

Verwenden Sie ein Autoscaling-Block ein Ansatz für die automatische Skalierung einer Windows Azure-Bereitstellung, die speziell für Windows Azure Cloud Services gilt, ist die Lösung ein Anwendungsblock Autoscaling hinzu. Zu diesem Zweck gibt es ein paar Bibliotheken bereit verwendet. Eine Bibliothek ist Teil der Enterprise-Integration-Pack für Windows Azure und eine Auflistung von benutzerdefinierten Regeln, Festlegen von Begrenzungen für die minimale und maximale Anzahl von Rolleninstanzen in der Bereitstellung, die auf der Grundlage von Indikatoren oder Messungen zusammengestellt von WAD verwendet. Dieser Ansatz wurde umfassend dokumentiert, von der Microsoft Patterns & Praxis Team und finden Sie unter bit.ly/18cr5mD. Abbildung 6 zeigt eine grundsätzliche Multi-Tenant-Architektur mit einem Autoscaling-Block zur Projektmappe hinzugefügt.

Using an Autoscaling Application Block Approach for Cloud Services
Abbildung 6 mit einer Grundgröße Anwendung blockieren Ansatz für Cloud-Services

Verwenden Sie einen externen Dienst gibt einige Skalierung-Out-Dienste für Windows-Azure-Bereitstellungen, die als externe Autoscaling-Anwendungsblöcke fungieren. Microsoft vor kurzem erworben MetricsHub (metricshub.com), die bietet kostenlosen Überwachung und Autoskalierung Service für Windows Azure-Abonnenten. Die Logik für dezentrales Skalieren basiert auf nachhaltige Durchschnitte und Frühindikatoren, nachfolgende Daten bestimmte Zeitpläne. Sie können den Dienst direkt über das Management-Portal im Abschnitt "Add-ons" (Windows-Azure-Shop) hinzufügen. MetricsHub unterstützt Windows Azure Cloud Services und Windows Azure virtuelle Maschinen, basierend auf einer Architektur, die WAD Informationen entnimmt und empfängt Informationen von Agenten, die auf einzelne statusbehaftete Instanzen installiert (siehe Abbildung 7).

MetricsHub Architecture
Abbildung 7 MetricsHub Architektur

Sobald der Dienst eingerichtet wurde, bietet das MetricsHub-Portal verschiedene Schwellenwerte für die Aufrechterhaltung einer gesunden Cloud-Umgebung, basierend auf Parameter wie deiner CPU-Bereich und die Anzahl der Nachrichten in einer Warteschlange. Es bietet auch eine Kostenprognose vor und nach dem Auftragen der Autoscaling-Options, wirklich Automatisieren der Bereitstellung-Prozess in der intelligenteste Weg möglich, abwägen Kosten mit Leistung (siehe Abbildung 8).

The MetricsHub Architecture Autoscaling Portal
Abbildung 8 die MetricsHub Architektur Autoscaling-Portal

Verwenden Sie automatisierte Windows PowerShell-Skripts, die die dritte Methode basiert auf Windows PowerShell-Skripts, die manuell erstellt und für die Windows Azure-API direkt ausgeführt werden. Dieser Ansatz bietet ein hohes Maß an Kontrolle und Flexibilität, da diese Skripts in benutzerdefinierten Anwendungen oder kontinuierliche Integration Frameworks verwendet werden können. Darüber hinaus unterstützt Windows PowerShell-Cmdlets für Windows Azure die drei Bereitstellungsmodelle, einschließlich die Automatisierung der Bereitstellungsprozess für Windows Azure-Websites. Ändern der Anzahl der Instanzen für eine bestimmte Bereitstellung ist beispielsweise so einfach wie den folgenden Befehl ausführen:

PS C:\> Set-AzureWebsite –Name {WebSiteName} –NumberOfWorkers {Instances}

Anweisungen zum Einrichten und installieren Windows Azure Cmdlets, finden Sie unter bit.ly/QqctsU. Finden Sie Dokumentation zur Verwendung aller Cmdlets am bit.ly/U0vOEp.

Zusammenfassung

Dieser Artikel schließt unsere zweiteiligen Reihe auf den Aufbau von Multi-Tenant-Lösungen in Windows Azure. Zu dieser Identität und Daten Isolation im ersten Artikel, wir Ihnen vorgestellt, um den Prozess der Konfiguration und Extrahieren von Performance-Informationen von jedem Windows-Azure-Bereitstellungsmodelle — Cloud Services, virtuelle Computer und Websites. Zur gleichen Zeit haben wir drei verschiedene Arten von Autoscaling-Bereitstellungen über interne und externe Komponenten und Dienste analysiert. Unter Ausnutzung des Wirtschaftsmodells Wolke — beruht auf Nutzung Kosten und gemeinsam genutzte Ressourcen-Pools — mehr Unternehmen sind die Freigabe-Lösungen, die effizient an ihre Bedürfnisse angepasst werden können.

Bruno Terkaly arbeitet als Entwicklungsexperte für Microsoft. Seine fundierten Kenntnisse basieren auf mehreren Jahren Erfahrung in der Programmierung in unterschiedlichsten Plattformen, Sprachen, Frameworks, SDKs, Bibliotheken und APIs. Er verbringt Zeit Schreiben von Code, Blogging und geben live-Präsentationen auf den Aufbau von Cloud-basierten Anwendungen, speziell mit der Windows Azure-Plattform. Sie können lesen Sie seinen Blog unter blogs.msdn.com/b/brunoterkaly.

Der erfahrene Softwarearchitekt Ricardo Villalobos  erstellt seit über 15 Jahren Anwendungen für Unternehmen in der Supply-Chain-Management-Branche. Halten verschiedene technische Zertifizierungen sowie einen Master-Abschluss in Betriebswirtschaft von der Universität Dallas, arbeitet er als Architekt in der Windows-Azure-CSV Inkubation Gruppe Wolke für Microsoft. Sie können lesen Sie seinen Blog unter blog.ricardovillalobos.com.

Terkaly und Villalobos präsentieren gemeinsam bei großen Konferenzen. Sie ermutigen die Leser des Windows Azure-Insider für Verfügbarkeit an. Terkaly kann erreicht werden unter bterkaly@microsoft.com und Villalobos kann erreicht werden unter Ricardo.Villalobos@microsoft.com.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Trent Swanson (volle Skala 180)
Trent Swanson ist ein Software-Architekt und Auftraggeber arbeiten mit Wolke und große Datentechnologien Full Scale-180. Ich arbeite mit Windows Azure seit den Anfängen hilft Kunden rund um die Welt-Build, Bereitstellung und Verwaltung ihrer Cloud-Lösungen auf Windows Azure. Egal, ob es um das Übertragen einer vorhandenen Anwendung in die Cloud oder um das Erstellen einer neuen Anwendung geht, mir gefällt der gesamte Prozess, der mit der Bereitstellung skalierbarer, verlässlicher und verwaltbarer Cloud-Lösungen in Windows Azure verbunden ist. Wenn ich nicht gerade an interessanten und herausfordernden Projekten arbeite, betätige ich mich bevorzugt sportlich. Besonders gern mag ich Kampfsportarten. Außerdem unterstütze ich kleinere Firmen und bin aktives Mitglied meiner Kirchengemeinde.