Konfigurieren der Flottenskalierung

Wenn Sie eine Flotte erstellen, verwenden Sie Skalierungsparameter, um zu steuern, wie viele Worker Ihre Code Engine-Flotte bereitstellt und wie sie auf Änderungen der Aufgabenauslastung reagiert.

Alle Skalierungsparameter sind optional und können beim Anlegen einer Flotte festgelegt werden.

Skalierungsparameter in der CLI von Code Engine

Um eine Flotte zu erstellen, verwenden Sie den Befehl ibmcloud ce fleet create oder ibmcloud ce fleet run. Für die Skalierung der Flotte stehen die folgenden Optionen zur Verfügung. Eine vollständige Liste aller verfügbaren Befehlsoptionen finden Sie in der CLI-Referenz.

--scale-max

Die Obergrenze für die Gesamtzahl der gleichzeitigen Task-Slots über alle Worker hinweg. Worker lassen sich so skalieren, dass sie höchstens diese Anzahl gleichzeitiger Aufgaben unterstützen. Standardmäßig 10.

--scale-min

Die Mindestanzahl an Slots für gleichzeitige Aufgaben, die stets bereitgestellt bleiben, auch wenn keine ausstehenden oder laufenden Aufgaben vorhanden sind. Worker, die diese Kapazität bereitstellen, bleiben aktiv und werden niemals automatisch heruntergefahren.

Eine Flotte, die aufgrund dieser Einstellung über aktive Worker verfügt, jedoch keine ausstehenden oder laufenden Aufgaben hat, hat den Status Standby.

Muss kleiner oder gleich sein --scale-max. Standardmäßig 0.

--scale-spare

Die Anzahl der freien Slots für gleichzeitige Aufgaben, die über der aktuellen Anzahl laufender Aufgaben gehalten wird. Wenn alle Worker ausgelastet sind, stellt die Flotte zusätzliche Worker bereit, um den Reservepuffer wiederherzustellen – bis zu --scale-max. Neue Aufgaben, die eingehen, solange noch freie Kapazitäten vorhanden sind, werden sofort ausgeführt, ohne auf einen neuen Worker zu warten.

Muss kleiner oder gleich sein --scale-max. Standardmäßig 0.

--scale-down-delay

Gibt an, wie lange ein Worker nach Abschluss seiner letzten Aufgabe weiterläuft, bevor Code Engine ihn herunterfährt. Ein Worker, dessen letzte Aufgabe innerhalb des Verzögerungsfensters abgeschlossen wurde, übernimmt neue Aufgaben sofort, sobald diese eintreffen.

Geben Sie eine positive ganze Zahl für die Anzahl der Sekunden an. Standardmäßig ( 0 die Anzahl der Worker wird reduziert, sobald sie nicht mehr benötigt werden).

Skalierungsparameter in der Code Engine-Konsole

Maximale Anzahl an Container-Slots

Die Obergrenze für die Gesamtzahl der gleichzeitigen Task-Slots über alle Worker hinweg. Worker lassen sich so skalieren, dass sie höchstens diese Anzahl gleichzeitiger Aufgaben unterstützen. Standardmäßig 10.

Mindestanzahl an Container-Slots

Die Mindestanzahl an Slots für gleichzeitige Aufgaben, die stets bereitgestellt bleiben, auch wenn keine ausstehenden oder laufenden Aufgaben vorhanden sind. Worker, die diese Kapazität bereitstellen, bleiben aktiv und werden niemals automatisch heruntergefahren.

Eine Flotte, die aufgrund dieser Einstellung über aktive Worker verfügt, jedoch keine ausstehenden oder laufenden Aufgaben hat, hat den Status Standby.

Muss kleiner oder gleich der maximalen Anzahl an Container-Slots sein. Standardmäßig 0.

Freie Container-Slots

Die Anzahl der freien Slots für gleichzeitige Aufgaben, die über der aktuellen Anzahl laufender Aufgaben gehalten wird. Wenn alle Worker ausgelastet sind, stellt die Flotte zusätzliche Worker bereit, um den Reservepuffer wiederherzustellen – bis zur maximalen Anzahl an Container-Slots. Neue Aufgaben, die eingehen, solange noch freie Kapazitäten vorhanden sind, werden sofort ausgeführt, ohne auf einen neuen Worker zu warten.

Muss kleiner oder gleich der maximalen Anzahl an Container-Slots sein. Standardmäßig 0.

Verzögerung beim Herunterskalieren

Gibt an, wie lange ein Worker nach Abschluss seiner letzten Aufgabe weiterläuft, bevor Code Engine ihn herunterfährt. Ein Worker, dessen letzte Aufgabe innerhalb des Verzögerungsfensters abgeschlossen wurde, übernimmt neue Aufgaben sofort, sobald diese eintreffen.

Geben Sie die Anzahl der Minuten an. Standardmäßig ( 0 die Anzahl der Worker wird reduziert, sobald sie nicht mehr benötigt werden).

Workload-Muster und relevante Parameter

Welche Parameter verwendet werden sollten, hängt davon ab, wie Aufgaben generiert werden, welche Anforderungen an die Latenz bestehen und wie stabil die Flottenkonfiguration ist.

Einmalige Batch-Workload in der Code Engine-CLI

Sie kennen alle Aufgaben im Voraus, geben sie bei der Erstellung der Flotte an, und die Flotte ist fertig, sobald die letzte Aufgabe abgeschlossen ist. Dies ist das einfachste Modell und erfordert keine spezielle Skalierungskonfiguration außer der Einstellung, --scale-max um zu steuern, wie viele Aufgaben parallel ausgeführt werden. Verwenden Sie diesen Ansatz, wenn Sie eine spezielle Flottenkonfiguration für eine Reihe von Aufgaben benötigen.

Relevante Option: --scale-max

Einmalige Batch-Workload in der Code Engine-Konsole

Sie kennen alle Aufgaben im Voraus, geben sie bei der Erstellung der Flotte an, und die Flotte ist fertig, sobald die letzte Aufgabe abgeschlossen ist. Dies ist das einfachste Modell und erfordert keine spezielle Skalierungskonfiguration außer der Einstellung Maximale Container-Slots, um zu steuern, wie viele Aufgaben parallel ausgeführt werden. Verwenden Sie diesen Ansatz, wenn Sie eine spezielle Flottenkonfiguration für eine Reihe von Aufgaben benötigen.

Relevanter Parameter: Maximale Anzahl an Container-Slots

Geplante Batch-Workloads in der Code Engine-CLI

Sie verwalten einen Fuhrpark und fügen nach einem festgelegten Zeitplan eine neue Reihe von Aufgaben hinzu. Zwischen den Durchläufen hat die Flotte keine ausstehenden Aufgaben. Der Abstand zwischen den Chargen ist vorhersehbar und lang genug, sodass es sich nicht lohnt, die Mitarbeiter warmzuhalten; daher bietet die Verwendung von --scale-min, --scale-spare, oder keinen Vorteil --scale-down-delay. Die Flottenkonfiguration bleibt für alle Chargen stabil.

Relevante Option: --scale-max

Geplante Batch-Workloads in der Code Engine-Konsole

Sie verwalten einen Fuhrpark und fügen nach einem festgelegten Zeitplan eine neue Reihe von Aufgaben hinzu. Zwischen den Durchläufen hat die Flotte keine ausstehenden Aufgaben. Der Abstand zwischen den Chargen ist vorhersehbar und lang genug, sodass es sich nicht lohnt, die Worker im Warmen zu halten; daher bietet die Verwendung von Minimum container slots, Spare container slots oder Scale-down delay keinen Vorteil. Die Flottenkonfiguration bleibt für alle Chargen stabil.

Relevanter Parameter: Maximale Anzahl an Container-Slots

Kontinuierliche, latenzempfindliche Workloads in der Code Engine-CLI

Aufgaben treten im Laufe des Tages unvorhersehbar auf – ausgelöst durch Benutzeraktionen, Sensorwerte oder andere Echtzeitereignisse. Jedes Mal, wenn eine Aufgabe eintrifft, auf das Hochfahren eines neuen Workers zu warten, würde zu einer inakzeptablen Latenz führen. Konfigurieren Sie stattdessen die Flotte so, dass ein Pool an Warm Workers bereitsteht, damit Aufgaben sofort gestartet werden können.

Relevante Optionen: --scale-max, --scale-min, --scale-spare, --scale-down-delay

  • Verwenden Sie, um --scale-max die maximale Anzahl der Container-Slots festzulegen, die bereitgestellt werden können. Ihre Flotte skaliert je nach Arbeitslastbedarf bis zu dieser Obergrenze für die Anzahl gleichzeitiger Verbindungen.
  • Verwenden Sie, um --scale-min sicherzustellen, dass ein Basis-Worker-Pool stets läuft, auch wenn keine Aufgaben in der Warteschlange stehen. Verwenden Sie diese Option, wenn der Datenverkehr für einen bestimmten Zeitraum auf null sinken kann, Sie aber dennoch einen sofortigen Start wünschen, sobald er wieder einsetzt.
  • Verwenden Sie, --scale-spare um eine bestimmte Anzahl freier Aufgabenplätze über der aktuellen Anzahl laufender Aufgaben verfügbar zu halten. Wenn eine Aufgabe eingeht, beginnt die Verarbeitung sofort auf einem bereits laufenden Worker, und die Flotte stellt im Hintergrund weitere Worker bereit, um die freie Kapazität wieder aufzufüllen.
  • Verwenden Sie, um --scale-down-delay zu verhindern, dass Worker unmittelbar nach Abschluss ihrer letzten Aufgabe heruntergefahren werden. Diese Einstellung ist hilfreich, wenn Aufgaben in unregelmäßigen Abständen und mit vorübergehenden Lücken dazwischen eingehen, da sie es den Mitarbeitern ermöglicht, verfügbar zu bleiben, und unnötige Skalierungszyklen (Down- und Upscaling) vermeidet. Das Warmhalten von Workern verringert die Latenz beim Start von Aufgaben, minimiert den Overhead bei der Initialisierung von Workern und senkt die Kosten für die wiederholte Bereitstellung neuer Worker.

Kontinuierliche, latenzempfindliche Workloads in der Code Engine-Konsole

Aufgaben treten im Laufe des Tages unvorhersehbar auf – ausgelöst durch Benutzeraktionen, Sensorwerte oder andere Echtzeitereignisse. Jedes Mal, wenn eine Aufgabe eintrifft, auf das Hochfahren eines neuen Workers zu warten, würde zu einer inakzeptablen Latenz führen. Konfigurieren Sie stattdessen die Flotte so, dass ein Pool an Warm Workers bereitsteht, damit Aufgaben sofort gestartet werden können.

Relevante Parameter: Maximale Anzahl an Container-Slots, minimale Anzahl an Container-Slots, freie Container-Slots, Verzögerung beim Herunterskalieren

  • Verwenden Sie Maximale Anzahl an Container-Slots, um die maximale Anzahl an Container-Slots festzulegen, die bereitgestellt werden können. Ihre Flotte skaliert je nach Arbeitslastbedarf bis zu dieser Obergrenze für die Anzahl gleichzeitiger Verbindungen.
  • Verwenden Sie Minimum Container Slots, um sicherzustellen, dass ein Basis-Worker-Pool immer läuft, auch wenn keine Aufgaben in der Warteschlange stehen. Verwenden Sie diese Option, wenn der Datenverkehr für einen bestimmten Zeitraum auf null sinken kann, Sie aber dennoch einen sofortigen Start wünschen, sobald er wieder einsetzt.
  • Verwenden Sie freie Container-Slots, um eine Anzahl freier Aufgaben-Slots bereitzuhalten, die über der aktuellen Anzahl laufender Aufgaben liegt. Wenn eine Aufgabe eingeht, beginnt die Verarbeitung sofort auf einem bereits laufenden Worker, und die Flotte stellt im Hintergrund weitere Worker bereit, um die freie Kapazität wieder aufzufüllen.
  • Verwenden Sie die Verzögerung beim Herunterskalieren, um zu verhindern, dass Worker unmittelbar nach Abschluss ihrer letzten Aufgabe herunter skaliert werden. Diese Einstellung ist hilfreich, wenn Aufgaben in unregelmäßigen Abständen und mit vorübergehenden Lücken dazwischen eingehen, da sie es den Mitarbeitern ermöglicht, verfügbar zu bleiben, und unnötige Skalierungszyklen (Down- und Upscaling) vermeidet. Das Warmhalten von Workern verringert die Latenz beim Start von Aufgaben, minimiert den Overhead bei der Initialisierung von Workern und senkt die Kosten für die wiederholte Bereitstellung neuer Worker.