Skalierbare Anwendung auf Azure erstellen | Original, von KI übersetzt

Home 2023.07.07

Dieser Blogbeitrag wurde mit der Unterstützung von ChatGPT-4o erstellt.


Inhaltsverzeichnis

Einführung

In der Welt des Cloud-Computing sticht Microsoft Azure als robuste Plattform für den Aufbau, die Bereitstellung und das Management von Anwendungen hervor. In unserem letzten Projekt haben wir mehrere Azure-Dienste genutzt, darunter Azure-Abonnement, Azure Kubernetes Service (AKS), Application Insights, Virtual Machines (VMs), Event Hubs, API Management Services und SQL-Datenbanken, um eine skalierbare und überwachte Anwendungsinfrastruktur zu erstellen. Dieser Blogbeitrag beschreibt unseren Ansatz, die verwendeten Tools, Best Practices und detaillierte Schritte zur Verwaltung von Clustern, zum Abrufen von Logs und zum Abfragen von Logs.

Erste Schritte mit Azure-Abonnement

Ein Azure-Abonnement ist Ihr Zugang zu Azure-Diensten. Es dient als Container für alle Ihre Ressourcen, wie virtuelle Maschinen, Datenbanken und Kubernetes-Cluster.

  1. Einrichten eines Azure-Abonnements:
    • Anmeldung: Falls Sie noch kein Azure-Konto haben, beginnen Sie mit der Anmeldung im Azure-Portal.
    • Erstellen eines Abonnements: Navigieren Sie zum Abschnitt “Abonnements” und erstellen Sie ein neues Abonnement. Dies wird Ihr Container für Abrechnung und Verwaltung sein.
  2. Ressourcenorganisation:
    • Ressourcengruppen: Organisieren Sie Ihre Ressourcen in Ressourcengruppen basierend auf ihrem Lebenszyklus und den Verwaltungsanforderungen.
    • Tags: Verwenden Sie Tags für zusätzliche Metadaten und eine einfachere Ressourcenverwaltung und Abrechnung.

Bereitstellung von Anwendungen mit Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) ist ein verwalteter Kubernetes-Dienst, der die Bereitstellung, Verwaltung und Skalierung von containerisierten Anwendungen vereinfacht.

Erstellen und Verwalten eines AKS-Clusters

  1. Erstellen eines AKS-Clusters im Azure-Portal:
    • Einrichtung: Suchen Sie im Azure-Portal nach AKS und erstellen Sie einen neuen Kubernetes-Cluster.
    • Konfiguration: Wählen Sie die Größe Ihres Clusters, konfigurieren Sie Node-Pools und richten Sie die Netzwerkkonfiguration ein.
    • Authentifizierung: Verwenden Sie Azure Active Directory (AAD) für sicheren Zugriff.
    • Überwachung: Aktivieren Sie Überwachung und Protokollierung während des Einrichtungsprozesses.
  2. Erstellen eines AKS-Clusters mit Azure CLI:
    az aks create \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --node-count 3 \
      --enable-addons monitoring \
      --generate-ssh-keys
    
  3. Verwalten Ihres AKS-Clusters:
    • Skalieren des Clusters:
      az aks scale \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 5
      
    • Upgraden des Clusters:
      az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version 1.21.2
      

Bereitstellung von Anwendungen

  1. Verwenden von Kubernetes-Manifesten: Erstellen Sie YAML-Dateien für Ihre Bereitstellungen, Dienste und andere Kubernetes-Objekte.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myapp
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: myapp
      template:
        metadata:
          labels:
            app: myapp
        spec:
          containers:
          - name: myapp
            image: myregistry.azurecr.io/myapp:latest
            ports:
            - containerPort: 80
    
  2. Bereitstellung mit kubectl:
    kubectl apply -f myapp-deployment.yaml
    
  3. Helm-Charts: Verwenden Sie Helm zum Verwalten von Kubernetes-Anwendungen und zur Versionskontrolle.
    helm install myapp ./mychart
    

Abrufen von Logs aus Pods

  1. Anbindung an einen Pod und Abrufen von Logs:
    kubectl logs <pod-name>
    
    • Zum Streamen von Logs:
      kubectl logs <pod-name> -f
      
  2. Verwenden eines Sidecars für die Protokollierung:
    • Erstellen Sie einen Protokollierungs-Sidecar-Container in Ihrer Pod-Spezifikation, um Logs an einen zentralen Protokollierungsdienst zu senden.
    spec:
      containers:
      - name: myapp
        image: myregistry.azurecr.io/myapp:latest
        ...
      - name: log-shipper
        image: log-shipper:latest
        ...
    

Überwachung und Diagnostik mit Azure Application Insights

Application Insights bietet leistungsstarke Überwachungs- und Diagnostikfunktionen für Ihre Anwendungen.

  1. Einrichten von Application Insights:
    • Integration: Fügen Sie die Application Insights-SDK zu Ihrem Anwendungscode hinzu.
    • Instrumentation Key: Konfigurieren Sie Ihre Anwendung mit dem Instrumentation Key aus Ihrer Application Insights-Ressource.
  2. Verfolgen der Leistung:
    • Metriken: Überwachen Sie Antwortzeiten, Fehlerraten und Anwendungsabhängigkeiten.
    • Live-Metriken-Stream: Zeigen Sie Echtzeit-Leistungsmetriken für sofortige Einblicke an.
  3. Diagnostik und Problembehandlung:
    • Anwendungsmap: Visualisieren Sie Abhängigkeiten und identifizieren Sie Leistungsengpässe.
    • Transaktionsdiagnostik: Verwenden Sie verteiltes Tracing, um Anfragen über Dienste hinweg zu verfolgen.

Nutzung von Azure Virtual Machines (VMs)

Azure-VMs bieten die Flexibilität, benutzerdefinierte Anwendungen und Dienste auszuführen, die nicht containerisiert sind.

  1. Bereitstellen von virtuellen Maschinen:
    • Erstellen von VMs: Erstellen Sie im Azure-Portal neue virtuelle Maschinen und wählen Sie die entsprechende Größe und das Betriebssystem aus.
    • Netzwerkkonfiguration: Richten Sie virtuelle Netzwerke, Subnetze und Sicherheitsgruppen ein, um den Verkehr zu steuern.
  2. Konfigurieren von VMs:
    • Softwareinstallation: Installieren Sie die erforderliche Software und Abhängigkeiten.
    • Sicherheit: Wenden Sie regelmäßig Patches und Updates an, konfigurieren Sie Firewalls und verwenden Sie Network Security Groups (NSGs).
  3. Verwalten von VMs:
    • Backup und Wiederherstellung: Verwenden Sie Azure Backup für VM-Backups.
    • Überwachung: Überwachen Sie die VM-Leistung mit Azure Monitor.

Echtzeit-Datenaufnahme mit Azure Event Hubs

Azure Event Hubs ist eine Big-Data-Streaming-Plattform und ein Event-Ingestion-Dienst, der in der Lage ist, Millionen von Ereignissen pro Sekunde zu empfangen und zu verarbeiten.

  1. Einrichten von Event Hubs:
    • Erstellen eines Event Hub-Namespace: Erstellen Sie im Azure-Portal einen Event Hub-Namespace, um Ihre Event Hubs zu beherbergen.
    • Erstellen von Event Hubs: Erstellen Sie innerhalb des Namespace einen oder mehrere Event Hubs, um Ihre Datenströme zu erfassen.
  2. Aufnehmen von Daten:
    • Producer: Konfigurieren Sie Ihre Anwendung oder Dienste, um Ereignisse an Event Hubs zu senden, unter Verwendung von SDKs, die für mehrere Sprachen verfügbar sind (z. B. .NET, Java, Python).
    • Partitions: Verwenden Sie Partitions, um die Event-Verarbeitung zu skalieren und eine hohe Durchsatzrate und Parallelität zu gewährleisten.
  3. Verarbeiten von Ereignissen:
    • Consumer: Verwenden Sie Consumer-Gruppen, um Ereignisse zu lesen und zu verarbeiten. Azure bietet mehrere Optionen zur Verarbeitung, einschließlich Azure Stream Analytics, Azure Functions und benutzerdefinierte Verarbeitung unter Verwendung des Event Hubs SDK.
  4. Überwachen von Event Hubs:
    • Metriken: Überwachen Sie Durchsatz, Latenz und Event-Verarbeitungsmetriken über das Azure-Portal.
    • Alerts: Richten Sie Alerts ein, um Sie über Probleme wie hohe Latenz oder verlorene Nachrichten zu benachrichtigen.

Verwaltung von APIs mit Azure API Management Services

Azure API Management Services bieten eine Möglichkeit, konsistente und moderne API-Gateways für bestehende Backend-Dienste zu erstellen.

  1. Einrichten von API Management:
    • Erstellen eines API Management-Dienstes: Suchen Sie im Azure-Portal nach API Management und erstellen Sie einen neuen Dienst.
    • Konfigurieren von APIs: Definieren und importieren Sie APIs aus OpenAPI-Spezifikationen, Azure Functions oder anderen Backends.
  2. Sichern von APIs:
    • Authentifizierung und Autorisierung: Verwenden Sie OAuth2, JWT-Validierung und andere Mechanismen, um Ihre APIs zu sichern.
    • Rate Limiting und Throttling: Implementieren Sie Richtlinien, um Ihre APIs vor Missbrauch zu schützen.
  3. Überwachung und Analysen:
    • API Insights: Verfolgen Sie die Nutzung, überwachen Sie die Leistung und analysieren Sie Logs.
    • Entwicklerportal: Bieten Sie ein Portal für Entwickler, um Ihre APIs zu entdecken und zu nutzen.
  4. Verwalten des Lebenszyklus:
    • Versionierung und Revisionen: Verwalten Sie verschiedene Versionen und Revisionen Ihrer APIs nahtlos.
    • Richtlinienverwaltung: Wenden Sie Richtlinien für die Transformation, Validierung und Weiterleitung von Anfragen und Antworten an.

Nutzung von Azure SQL-Datenbanken

Azure SQL Database ist eine vollständig verwaltete relationale Datenbank mit eingebauter Intelligenz, hoher Verfügbarkeit und Skalierbarkeit.

  1. Einrichten von Azure SQL-Datenbank:
    • Erstellen einer SQL-Datenbank: Navigieren Sie im Azure-Portal zu SQL-Datenbanken und erstellen Sie eine neue Datenbank.
    • Konfigurieren der Datenbank: Legen Sie die Datenbankgröße, die Leistungsebene und die Netzwerkkonfiguration fest.
  2. Verbinden mit der SQL-Datenbank:
    • Verbindungszeichenfolgen: Verwenden Sie die bereitgestellten Verbindungszeichenfolgen, um Ihre Anwendung mit der SQL-Datenbank zu verbinden.
    • Firewall-Regeln: Konfigurieren Sie Firewall-Regeln, um den Zugriff von Ihrer Anwendung oder Ihrem lokalen Computer zu ermöglichen.
  3. Verwalten der Datenbank:
    • Backup und Wiederherstellung: Verwenden Sie automatische Backups und Punkt-in-Zeit-Wiederherstellung, um Ihre Daten zu schützen.
    • Skalieren: Skalieren Sie die Datenbank nach oben oder unten basierend auf Ihren Leistungsanforderungen.
  4. Überwachung und Leistungsoptimierung:
    • Query Performance Insights: Überwachen und optimieren Sie die Abfrageleistung.
    • Automatische Optimierung: Aktivieren Sie automatische Optimierungsfunktionen, um die Leistung zu verbessern.

Abfragen von Logs mit Kusto Query Language (KQL)

Kusto Query Language (KQL) wird verwendet, um Azure Monitor Logs abzufragen und leistungsstarke Einblicke in Ihre Log-Daten zu erhalten.

  1. Grundlegende KQL-Abfrage:
    // Abrufen von Datensätzen aus einer bestimmten Tabelle
    LogTableName
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, Level, Message
    
  2. Filtern und Aggregieren von Daten:
    LogTableName
    | where TimeGenerated > ago(1h) and Level == "Error"
    | summarize Count=count() by bin(TimeGenerated, 5m)
    
  3. Verbinden von Tabellen:
    Table1
    | join kind=inner (Table2) on $left.UserId == $right.UserId
    | project Table1.TimeGenerated, Table1.Message, Table2.AdditionalInfo
    
  4. Erstellen von Alerts basierend auf Abfragen:
    • Navigieren Sie im Azure-Portal zum Log Analytics-Arbeitsbereich.
    • Klicken Sie auf Logs und geben Sie Ihre KQL-Abfrage ein.
    • Klicken Sie auf New alert rule, um eine Alert-Regel basierend auf den Abfrageergebnissen zu erstellen.

Einrichten von Alerts für proaktive Überwachung

Azure Alerts helfen Ihnen, über den Zustand und die Leistung Ihrer Ressourcen informiert zu bleiben.

  1. Erstellen von Alerts:
    • Metrik-Alerts: Richten Sie Alerts basierend auf Metriken wie CPU-Auslastung, Speichernutzung und Antwortzeiten ein.
    • Log-Alerts: Erstellen Sie Alerts basierend auf Log-Suchabfragen mit KQL.
  2. Konfigurieren von Aktionen:
    • Aktionsgruppen: Definieren Sie Aktionsgruppen, um festzulegen, wer benachrichtigt wird und wie (E-Mail, SMS, Webhook).
    • Integration: Integrieren Sie mit ITSM-Tools wie ServiceNow für automatisiertes Incident-Management.
  3. Reagieren auf Alerts:
    • Dashboards: Richten Sie Azure-Dashboards ein, um eine zentrale Ansicht der Alerts bereitzustellen.
    • Automatisierung: Verwenden Sie Azure Automation, um automatisch auf bestimmte Alerts zu reagieren.

Fazit

Durch die Nutzung von Azure-Abonnement, AKS, Application Insights, Virtual Machines, Event Hubs, API Management Services und SQL-Datenbanken haben wir eine skalierbare, robuste und überwachte Anwendungsinfrastruktur aufgebaut. Das umfassende Toolset von Azure ermöglichte es uns, Anwendungen effizient zu deployen, zu verwalten und zu überwachen. Diese Einrichtung verbesserte nicht nur die Leistung unserer Anwendungen, sondern verschaffte uns auch die Einblicke, die wir benötigten, um unsere Ressourcen proaktiv zu warten und zu optimieren.


Back Donate