\n\n\n\n Infrastruktur des Auto-Scaling-Agenten: Ein Praktischer Schnellstartleitfaden - AgntUp \n

Infrastruktur des Auto-Scaling-Agenten: Ein Praktischer Schnellstartleitfaden

📖 12 min read2,272 wordsUpdated Mar 29, 2026

Einführung: Die Notwendigkeit von Auto-Scaling für moderne Agenten

Im dynamischen Softwarebereich von heute ist die Fähigkeit, schnell auf schwankende Arbeitslasten zu reagieren, keine Luxus mehr, sondern eine Notwendigkeit. Für Systeme, die von Agenten abhängen – sei es CI/CD-Bauagenten, Datenverarbeitungsarbeiter, Sicherheits-Scanner oder Überwachungs-Collector – muss die Infrastruktur, die sie unterstützt, elastisch sein. Die manuelle Bereitstellung und Deaktivierung von Agenten ist ineffizient, fehleranfällig und kostspielig. Hier glänzt die Auto-Scaling-Infrastruktur für Agenten. Auto-Scaling stellt sicher, dass Sie zur richtigen Zeit die richtige Anzahl von Agenten haben, optimiert die Ressourcennutzung, minimiert die Betriebskosten und gewährleistet hohe Verfügbarkeit und Leistung.

Dieser Artikel bietet einen praktischen Leitfaden zur Implementierung des Auto-Scaling Ihrer Agenteninfrastruktur. Wir werden die Schlüsselkonzepte, gängige Strategien erkunden und konkrete Beispiele unter Verwendung beliebter Cloud-Anbieter und Orchestrierungstools durchgehen. Unser Ziel ist es, Sie mit dem Wissen und den ersten Schritten auszustatten, um eine robuste und selbstverwaltete Flotte von Agenten aufzubauen.

Die Grundlagen des Auto-Scaling verstehen

Was ist Auto-Scaling?

Auto-Scaling ist eine Methode, die im Cloud-Computing verwendet wird, um die Anzahl der für eine Anwendung zugewiesenen Rechenressourcen dynamisch anzupassen, basierend auf ihrer aktuellen Last. Für die Infrastruktur der Agenten bedeutet dies, dass automatisch neue Instanzen von Agenten gestartet werden, wenn die Nachfrage steigt, und sie gestoppt werden, wenn die Nachfrage sinkt.

Schlüsselteile eines Auto-Scaling-Systems

  • Metriken: Quantifizierbare Daten, die die Last oder den Zustand Ihres Systems anzeigen (z. B. CPU-Auslastung, Warteschlangentiefe, Inaktivitätszeit der Agenten).
  • Alarme/Trigger: Bedingungen, die auf Metriken basieren und eine Skalierungsaktion auslösen (z. B. „wenn die Warteschlangentiefe > 10 für 5 Minuten“).
  • Skalierungsrichtlinien: Regeln, die definieren, wie skaliert wird (z. B. „2 Instanzen hinzufügen“, „25 % der Instanzen entfernen“).
  • Konfigurationen/Startvorlagen: Pläne für neue Instanzen, einschließlich des OS-Images, des Instanztyps, der Benutzerdaten-Skripte und der Netzwerkeinstellungen.
  • Auto-Scaling-Gruppe (ASG): Eine logische Gruppierung von Instanzen, die zusammen vom Auto-Scaling-Dienst verwaltet werden. Sie definiert die minimale, maximale und gewünschte Kapazität.

Vorteile des Auto-Scaling von Agenten

  • Kostenoptimierung: Zahlen Sie nur für die Ressourcen, die Sie nutzen. Vermeiden Sie Überprovisionierung während Zeiten geringer Nachfrage.
  • Verbesserte Leistung und Verfügbarkeit: Bewältigen Sie Lastspitzen, ohne dass es zu Leistungseinbußen oder Unterbrechungen kommt.
  • Reduzierung der Betriebslast: Automatisieren Sie das Ressourcenmanagement und entlasten Sie so Ingenieure.
  • Verbesserte Resilienz: Ersetzen Sie automatisch nicht funktionierende Instanzen.

Gängige Auto-Scaling-Strategien für Agenten

Die Wahl der Strategie hängt stark von der Art Ihrer Agenten und den verfügbaren Metriken ab.

1. Reaktives Scaling (Metrik-basiert)

Dies ist der gebräuchlichste Ansatz. Die Agenten passen sich basierend auf den Echtzeit-Betriebsmetriken an.

  • Beispiele für Metriken:
    • CPU-/Speicherauslastung: Wenn die Agenten konstant eine hohe CPU-Auslastung haben, fügen Sie weitere hinzu. Wenn sie inaktiv sind, entfernen Sie einige.
    • Warteschlangentiefe: Für Agenten, die Aufgaben aus einer Warteschlange (z. B. SQS, RabbitMQ, Kafka) verarbeiten, skalieren Sie, wenn der Rückstand in der Warteschlange steigt, und reduzieren Sie, wenn er sinkt.
    • Inaktivitätszeit der Agenten: Wenn viele Agenten über längere Zeiträume inaktiv sind, reduzieren Sie die Anzahl.
    • Anzahl der wartenden Builds/Jobs: Spezifisch für CI/CD-Systeme, skalieren Sie, wenn die wartenden Jobs zunehmen.
  • Vorteile: Reagiert auf die tatsächliche Last, in der Regel effektiv.
  • Nachteile: Kann eine leichte Verzögerung (Reaktionszeit) zwischen dem Lastpeak und der Verfügbarkeit neuer Agenten haben.

2. Proaktives Scaling (Zeitplan-basiert)

Wenn Sie vorhersehbare Arbeitslastmuster haben (z. B. tägliche Spitzenzeiten, wöchentliche Berichte), können Sie Skalierungsaktionen planen.

  • Beispiel: Erhöhen Sie die Anzahl der Agenten von 5 bis 9 Uhr an Wochentagen, reduzieren Sie sie von 3 bis 18 Uhr.
  • Vorteile: Beseitigt die Reaktionsverzögerung für bekannte Muster.
  • Nachteile: Weniger flexibel für unvorhersehbare Spitzen, erfordert immer noch Metrik-basiertes Scaling für unerwartete Lasten.

3. Prädiktives Scaling (Maschinenlern-basiert)

Verwendet historische Daten und Maschinenlernalgorithmen, um die zukünftige Nachfrage vorherzusagen und proaktiv zu skalieren. Oft als verwalteter Dienst von Cloud-Anbietern angeboten.

  • Vorteile: Kombiniert die Vorteile des proaktiven und reaktiven Scalings, hoch optimiert.
  • Nachteile: Komplexer einzurichten und zu verwalten, erfordert eine signifikante Menge an historischen Daten.

Schnellstartbeispiel: AWS Auto Scaling für CI/CD-Agenten

Schauen wir uns ein praktisches Beispiel an, wie man AWS verwendet, um CI/CD-Bauagenten automatisch zu skalieren. Wir konzentrieren uns auf eine reaktive Skalierungsstrategie, die auf einer Warteschlange basiert, wobei wir davon ausgehen, dass Ihr CI/CD-Orchestrator (z. B. Jenkins, GitLab CI, Buildkite) Jobs in eine SQS-Warteschlange sendet, die Ihre Agenten dann abrufen.

Voraussetzungen:

  • Ein AWS-Konto mit den entsprechenden Berechtigungen.
  • Eine Amazon SQS-Warteschlange für Ihre Bauarbeiten.
  • Ein vorab konfiguriertes EC2-AMI (Amazon Machine Image), das Ihre CI/CD-Agentensoftware, Docker (falls erforderlich) und alle anderen Bauabhängigkeiten enthält. Dieses AMI muss in der Lage sein, sich beim Start mit Ihrem CI/CD-Orchestrator und der SQS-Warteschlange zu verbinden.

Schritt-für-Schritt-Implementierung:

1. Erstellen Sie ein EC2-Startmodell

Das Startmodell definiert, wie neue Instanzen von Agenten bereitgestellt werden.

Navigation in der AWS-Konsole: EC2 > Startmodelle > Startmodell erstellen

  • Name des Startmodells: ci-cd-agent-template
  • AMI: Wählen Sie Ihr vorgefertigtes Agenten-AMI (z. B. ami-0abcdef1234567890).
  • Instanztyp: Wählen Sie einen geeigneten Typ (z. B. t3.medium, c5.large) basierend auf Ihren Bauanforderungen.
  • Schlüsselpaar: Wählen Sie Ihr SSH-Schlüsselpaar für das Debugging aus.
  • Netzwerkeinstellungen:
    • Subnetz: Wählen Sie Subnetze aus, in denen Ihre Agenten betrieben werden können.
    • Sicherheitsgruppen: Weisen Sie eine Sicherheitsgruppe zu, die den ausgehenden Internetzugang (zum Abrufen von Abhängigkeiten) und den eingehenden SSH-Zugriff für das Debugging ermöglicht, falls erforderlich.
  • Speicher (Volumes): Fügen Sie ausreichend Speicherplatz für die Builds hinzu.
  • Erweiterte Details > IAM-Instanzprofil: Entscheidend! Erstellen Sie eine IAM-Rolle (z. B. ci-cd-agent-role) mit Berechtigungen für:
    • Zugriff auf die SQS-Warteschlange (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes).
    • Übermittlung von Metriken an CloudWatch (cloudwatch:PutMetricData).
    • (Optional) Interaktion mit S3 oder anderen AWS-Diensten, die Ihre Builds möglicherweise verwenden.
  • Erweiterte Details > Benutzerdaten: Dieses Skript wird ausgeführt, wenn die Instanz zum ersten Mal gestartet wird. Es kann verwendet werden, um den Agenten bei Ihrem CI/CD-Orchestrator zu registrieren, die neuesten Konfigurationen abzurufen oder letzte Anpassungen vorzunehmen.
    #!/bin/bash
    # Beispiel für einen Buildkite-Agenten
    yum update -y
    yum install -y docker # Falls nicht in der AMI vorhanden
    systemctl start docker
    systemctl enable docker
    
    # Konfigurieren Sie den Buildkite-Agenten
    # Ersetzen Sie dies durch Ihr Token und den tatsächlichen Organisationsnamen
    export BUILDKITE_AGENT_TOKEN="your-buildkite-agent-token"
    export BUILDKITE_ORGANIZATION_SLUG="your-org-slug"
    
    # Oder für Jenkins, verbinden Sie sich mit dem Jenkins-Controller
    # java -jar agent.jar -jnlpUrl http://your-jenkins-controller:8080/computer/YOUR_AGENT_NAME/slave-agent.jnlp -secret YOUR_SECRET -workDir "/tmp"
    
    # Starten Sie den Agenten (Beispiel für Buildkite)
    /usr/bin/buildkite-agent start
    
    # Weitere Konfigurationsaufgaben...
    

2. Erstellen einer Auto Scaling-Gruppe (ASG)

Die ASG verwaltet den Lebenszyklus Ihrer Agenteninstanzen.

Navigation in der AWS-Konsole: EC2 > Auto Scaling-Gruppen > Auto Scaling-Gruppe erstellen

  • Name der Auto Scaling-Gruppe: ci-cd-agents-asg
  • Startvorlage: Wählen Sie ci-cd-agent-template.
  • Netzwerk:
    • VPC: Ihr Standard- oder benutzerdefiniertes VPC.
    • Subnetze: Wählen Sie dieselben Subnetze wie in Ihrer Startvorlage.
  • Gruppengröße:
    • Gewünschte Kapazität: 0 (Wir möchten, dass sie von null skaliert wird).
    • Minimale Kapazität: 0 (Ermöglicht ein vollständiges Scale-in während der Inaktivitätszeiten).
    • Maximale Kapazität: 10 (Legen Sie dies basierend auf Ihrem Budget und der erwarteten Spitzenlast fest).
  • Skalierungsrichtlinien: Hier definieren wir die Logik für die automatische Skalierung.
    • Art der Skalierungsrichtlinie: Target tracking scaling policy (empfohlen wegen ihrer Einfachheit und Effizienz).
    • Name der Richtlinie: scale-out-on-queue-depth
    • Art der Metrik: SQS Queue Depth
    • SQS-Warteschlange: Wählen Sie Ihre SQS-Warteschlange für die Build-Aufgaben aus.
    • Zielwert: 5 (Das bedeutet, dass die ASG versuchen wird, im Durchschnitt 5 Nachrichten in der Warteschlange pro Agent zu halten. Wenn Sie 0 Agenten und 10 Nachrichten haben, wird sie 2 Agenten starten, um 5 Nachrichten/Agent zu erreichen). Passen Sie diesen Wert an, je nachdem, wie schnell Sie möchten, dass die Aufgaben bearbeitet werden.
    • Name der Richtlinie: scale-in-on-idle-queue
    • Art der Metrik: SQS Queue Depth
    • SQS-Warteschlange: Wählen Sie Ihre SQS-Warteschlange für die Build-Aufgaben aus.
    • Zielwert: 0 (Das bedeutet, dass die ASG sich verringert, wenn die Warteschlange leer ist, mit dem Ziel, 0 Nachrichten pro Agent zu haben, was effektiv inaktive Agenten entfernt).
  • Instanz-Vorwärmzeit: Wichtig für die Agenten! Wenn neue Agenten lange brauchen, um sich zu registrieren und betriebsbereit zu werden, legen Sie eine Vorwärmzeit fest (z. B. 300 Sekunden). Dies verhindert, dass die ASG zu aggressiv skaliert, während neue Instanzen noch in der Initialisierung sind.
  • Health Checks: Verwenden Sie EC2-Health Checks.
  • Benachrichtigungen: (Optional) Konfigurieren Sie SNS-Themen für ASG-Ereignisse.
  • Tags: Fügen Sie nützliche Tags hinzu (z. B. Project: CI/CD, Role: Build Agent).

Testen der Konfiguration:

  1. Beginnen Sie mit 0 gewünschter Kapazität in Ihrer ASG.
  2. Sendet einige Build-Aufgaben an Ihre SQS-Warteschlange.
  3. Beobachten Sie die ASG: Sie sollte den Anstieg der Warteschlangentiefe erkennen und neue EC2-Instanzen starten.
  4. Überprüfen Sie, ob die Agenten sich bei Ihrem CI/CD-Orchestrator registrieren und mit der Bearbeitung der Aufgaben beginnen.
  5. Sobald alle Aufgaben bearbeitet sind und die Warteschlange leer ist, sollte sich die ASG verringern und inaktive Agenten nach einer Abkühlzeit kündigen.

Über AWS hinaus: Automatische Skalierung mit Kubernetes (KEDA)

Wenn Ihre Agenten als Container auf Kubernetes laufen, ist KEDA (Kubernetes Event-driven Autoscaling) eine hervorragende Lösung. KEDA erweitert den Horizontal Pod Autoscaler (HPA) von Kubernetes, um eine Vielzahl von Ereignisquellen (Warteschlangen, Datenbanken, Metrikserver usw.) einzuschließen.

KEDA Schnellstart für warteschlangenbasierte Agenten

Angenommen, Sie haben ein Container-Image für den Agenten und ein Kubernetes-Deployment dafür.

1. KEDA installieren

kubectl apply -f https://github.com/kedacore/keda/releases/download/v2.12.1/keda-2.12.1.yaml

2. Erstellen eines ScaledObject

Diese Ressource sagt KEDA, wie Ihr Deployment basierend auf einer Ereignisquelle skaliert werden soll. Lassen Sie uns eine AWS SQS-Warteschlange als Beispiel verwenden, ähnlich dem EC2-Beispiel.

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
 name: my-sqs-agent-scaler
 namespace: default
spec:
 scaleTargetRef:
 apiVersion: apps/v1
 kind: Deployment
 name: my-sqs-agent-deployment # Der Name Ihres Agenten-Deployments
 minReplicaCount: 0
 maxReplicaCount: 10
 pollingInterval: 30 # Überprüfen Sie SQS alle 30 Sekunden
 cooldownPeriod: 300 # Warten Sie 5 Minuten, bevor Sie nach der Abkühlung reduzieren
 triggers:
 - type: aws-sqs
 metadata:
 queueURL: "https://sqs.us-east-1.amazonaws.com/123456789012/my-build-queue"
 queueLength: "5" # Ziel 5 Nachrichten pro Agent-Pod
 awsRegion: "us-east-1"
 identityOwner: "pod"
 # Wenn Sie IRSA (IAM-Rollen für Dienstkonten) zur Authentifizierung verwenden
 authenticationRef:
 name: keda-aws-sqs-auth
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
 name: keda-aws-sqs-auth
 namespace: default
spec:
 podIdentity:
 provider: aws-eks # Verwenden Sie die AWS EKS-Pod-Identität (IRSA)

Erklärung:

  • scaleTargetRef: Verweist auf Ihr Kubernetes-Deployment, das die Agenten ausführt.
  • minReplicaCount: 0, maxReplicaCount: 10: Legt die Skalierungsgrenzen fest.
  • pollingInterval, cooldownPeriod: Steuert, wie oft KEDA überprüft und wie lange es wartet, bevor es reduziert.
  • triggers:
    • type: aws-sqs: Gibt den SQS-Scaler an.
    • queueURL, awsRegion: Details zu Ihrer SQS-Warteschlange.
    • queueLength: "5": KEDA wird versuchen, 5 Nachrichten in der Warteschlange pro Agent-Pod zu halten. Wenn die Warteschlange 10 Nachrichten hat und Sie 1 Pod haben, wird sie auf 2 Pods hochskaliert (10/5=2). Wenn die Warteschlange 0 Nachrichten hat, wird sie auf 0 Pods heruntergefahren (aufgrund von minReplicaCount: 0).
    • identityOwner: "pod" und authenticationRef: Entscheidend für einen sicheren Zugriff auf AWS SQS. Dieses Beispiel verwendet die AWS EKS-Pod-Identität (IRSA), bei der das Dienstkonto Ihres Agenten mit einer IAM-Rolle annotiert ist, die SQS-Berechtigungen hat.

Wenden Sie diese Manifeste an, und KEDA erstellt automatisch einen HPA für Ihr Deployment, der Ihre Agent-Pods basierend auf der Tiefe der SQS-Warteschlange anpasst.

Best Practices und Überlegungen

  • Unveränderliche Infrastruktur: Erstellen Sie Ihre AMI/Docker-Images für Agenten mit allen erforderlichen vorinstallierten Software. Verwenden Sie Benutzerdaten/Init-Skripte nur für die Konfiguration des letzten Abschnitts (z. B. Registrierung beim Orchestrator).
  • Health Checks: Implementieren Sie zuverlässige Health Checks für Ihre Agenten. Wenn ein Agent nicht mehr gesund ist, wird er automatisch vom ASG oder Kubernetes ersetzt.
  • Sanfter Shutdown: Stellen Sie sicher, dass Ihre Agenten sanft heruntergefahren werden können, indem sie laufende Aufgaben beenden, bevor sie sich selbst beenden. Dies verhindert Datenverlust oder unterbrochene Builds. Bei CI/CD bedeutet dies oft, dass der Orchestrator den Agenten offline markiert und wartet, bis die aktuellen Aufgaben abgeschlossen sind.
  • Überwachung und Benachrichtigungen: Überwachen Sie Ihre Skalierungsindikatoren, ASG-Ereignisse (Start/Beendigung von Instanzen) und die Gesundheit der Agenten. Richten Sie Benachrichtigungen für unerwartetes Verhalten oder Skalierungsfehler ein.
  • Kostenmanagement: Überprüfen Sie regelmäßig Ihre maximalen Kapazitätseinstellungen und Instanztypen, um sicherzustellen, dass Sie nicht zu viel ausgeben. On-Demand-Instanzen können eine kostengünstige Option für zustandslose, fehlertolerante Agenten sein.
  • Sicherheit: Verwenden Sie IAM-Rollen (AWS) oder Dienstkonten mit IAM-Rollen für Dienstkonten (IRSA auf EKS), um die minimal erforderlichen Berechtigungen für Ihre Agenten-Instanzen/Pods zu gewähren. Vermeiden Sie das Hardcodieren von Anmeldeinformationen.
  • Aufwärmzeit: Konfigurieren Sie die Aufwärmzeiten der Instanzen genau, um Thrashing (zu schnelles Skalieren) zu vermeiden, und stellen Sie sicher, dass neue Instanzen nur dann zur Kapazität beitragen, wenn sie bereit sind.
  • Abkühlzeit: Legen Sie angemessene Abkühlzeiten fest, um schnelle Skalierungszyklen (Flapping) zu vermeiden.
  • Granularität der Metriken: Wählen Sie Metriken, die die Arbeitslast Ihrer Agenten genau widerspiegeln und häufig genug erfasst werden können, um zeitnahe Skalierungsentscheidungen zu ermöglichen.

Fazit

Die automatische Skalierung der Infrastruktur von Agenten ist ein grundlegendes Modell zum Aufbau von widerstandsfähigen, kosteneffizienten und leistungsstarken Systemen. Durch die Nutzung der Leistungsfähigkeit von Cloud-Automatisierungsdiensten oder Kubernetes-Erweiterungen wie KEDA können Sie die Verwaltung Ihrer Agentenflotte automatisieren und eine optimale Ressourcennutzung sowie Reaktionsfähigkeit auf Nachfrage gewährleisten. Indem Sie mit einem klaren Verständnis der Arbeitslast Ihrer Agenten und der verfügbaren Metriken beginnen, können Sie eine praktische Lösung zur automatischen Skalierung implementieren, die sich an Ihre Bedürfnisse anpasst und Ihr Team von der manuellen Verwaltung der Infrastruktur entlastet, sodass es sich auf wertschöpfendere Aufgaben konzentrieren kann. Nutzen Sie die automatische Skalierung und beobachten Sie, wie Ihre Agentenflotte zu einem wirklich elastischen und effizienten Bestandteil Ihrer Architektur wird.

🕒 Published:

✍️
Written by Jake Chen

AI technology writer and researcher.

Learn more →
Browse Topics: Best Practices | CI/CD | Cloud | Deployment | Migration

More AI Agent Resources

AgntaiAidebugBotsecBotclaw
Scroll to Top