Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
So funktionieren Container in Amazon GameLift Servers
Amazon GameLift ServersContainer-Flotten sind so konzipiert, dass sie Ihnen Flexibilität bei der Bereitstellung und Skalierung Ihrer containerisierten Anwendungen bieten. Es verwendet den Amazon Elastic Container Service (Amazon ECS), um die Bereitstellung und Ausführung von Aufgaben für Ihre Amazon GameLift Servers Flotten zu verwalten. In diesem Thema werden die grundlegenden Strukturelemente für den Betrieb von Containern auf einer Amazon GameLift Servers verwalteten Flotte beschrieben, gängige Architekturen veranschaulicht und einige Kernkonzepte skizziert.
Beschleunigen Sie das Onboarding mit diesen Tools für verwaltete Container:
-
Das Container-Starterkit
optimiert die Integration und die Einrichtung der Flotte. Es erweitert deinen Spieleserver um wichtige Funktionen zur Verwaltung von Spielsitzungen und verwendet vorkonfigurierte Vorlagen, um eine Containerflotte und eine automatisierte Bereitstellungspipeline für deinen Spieleserver aufzubauen. Verwende nach der Bereitstellung die Amazon GameLift Servers Konsole und die API-Tools, um die Leistung deiner Flotte zu überwachen, Spielsitzungen zu verwalten und Messwerte zu analysieren. -
Entwickler von Unreal Engine oder Unity können die Amazon GameLift ServersPlugins
verwenden, um ihren Spieleserver zu integrieren und eine Containerflotte aus der Entwicklungsumgebung Ihrer Game Engine heraus aufzubauen. Die geführten Workflows des Plugins helfen dir dabei, eine schnelle, einfache Lösung mit cloudbasiertem Hosting mithilfe verwalteter Container zu erstellen. Dann baue auf dieser Grundlage auf, um eine maßgeschneiderte Hosting-Lösung für dein Spiel zu erstellen.
Komponenten der Containerflotte
- Flotte
Eine Containerflotte ist eine Sammlung von EC2 Amazon-Instances zum Hosten Ihrer containerisierten Spieleserver. Diese Instances werden in Amazon GameLift Servers Ihrem Namen verwaltet. Wenn Sie eine Flotte erstellen, konfigurieren Sie, wie die Container-Architektur mit Ihrer Gameserver-Software für jede Flotteninstanz bereitgestellt wird. Sie können eine Containerflotte mit Instances an einem oder mehreren geografischen Standorten erstellen. Sie können Amazon GameLift Servers Skalierungstools verwenden, um die Kapazität einer Containerflotte für Spielsitzungen und Spieler automatisch zu skalieren.
- Instance
Eine EC2 Amazon-Instance ist der virtuelle Server, der Rechenkapazität für das Hosting von Spielen bereitstellt. Mit Amazon GameLift Servers können Sie aus einer Reihe von Instance-Typen wählen. Jeder Instance-Typ bietet eine andere Kombination aus CPU-, Arbeitsspeicher-, Speicher- und Netzwerkkapazität.
Wenn Sie eine Containerflotte erstellen, werden Amazon GameLift Servers Ihre Container auf der Grundlage des von Ihnen ausgewählten Instance-Typs und Ihrer Flottenkonfiguration bereitgestellt. Jede bereitgestellte Flotteninstanz ist identisch und führt deine containerisierte Gameserver-Software auf die gleiche Weise aus. Die Anzahl der Instanzen in einer Flotte bestimmt die Größe der Flotte und die Hosting-Kapazität für Spiele.
- Container-Gruppe
Amazon GameLift Serversverwendet das Konzept einer Containergruppe, um eine Reihe von Containern zu beschreiben und zu verwalten. Eine Container-Gruppe ähnelt einer Container-"Task“ oder einem „Pod“. Innerhalb jeder Containergruppe können Sie definieren, wie sich Container verhalten, Abhängigkeiten einrichten und verfügbare CPU- und Speicherressourcen gemeinsam nutzen.
Jede Flotteninstanz kann die folgenden Arten von Containergruppen haben:
-
Eine Spielserver-Containergruppe verwaltet die Container, auf denen Ihre Spieleserver-Anwendung und unterstützende Software ausgeführt werden. Eine Containerflotte muss über eine dieser Containergruppen verfügen, um Spielsitzungen und Spieler abzuhalten. Eine Spielserver-Containergruppe kann innerhalb einer Flotteninstanz repliziert werden. Die Anzahl der Spielservergruppen-Replikate pro Flotteninstanz hängt von den Rechenanforderungen Ihrer Software und den auf der Instance verfügbaren Rechenressourcen ab.
Eine Containergruppe pro Instanz, die optional ist, gibt Ihnen die Möglichkeit, zusätzliche Software auf jeder Flotteninstanz auszuführen. Sie sind nützlich für die Ausführung von Hintergrunddiensten oder Hilfsprogrammen, z. B. für die Überwachung. Ihre Gameserver-Software hängt nicht direkt von Prozessen in einer Instanzgruppe ab. Für jede Flotteninstanz wird nur eine Kopie einer Containergruppe pro Instanz bereitgestellt.
Jede Containergruppe in einer Containerflotte hat einen Container, der als „unverzichtbar“ gekennzeichnet ist. Ein unverzichtbarer Container bestimmt den Lebenszyklus einer Containergruppe. Wenn der Essential-Container ausfällt, wird die gesamte Containergruppe neu gestartet.
-
- Container
Der Container ist das grundlegendste Element einer containerbasierten Architektur. Er enthält ein Container-Image mit ausführbaren Softwaredateien und abhängigen Dateien. Definieren Sie einen Container, um zu konfigurieren, wie die Software ausgeführt wird und mit ihnen interagiert. Amazon GameLift Servers
Amazon GameLift Serversdefiniert zwei Arten von Containern:
-
Ein Gameserver-Container enthält alles, was Sie zum Ausführen Ihrer Gameserver-Prozesse und zum Hosten von Spielsitzungen für Spieler benötigen. Er beinhaltet deinen Gameserver-Build und die dazugehörige Software. Definiere einen Gameserver-Container für die Gameserver-Containergruppe einer Flotte. Der Spielserver-Container wird automatisch als unverzichtbar für die Containergruppe angesehen.
-
In einem Support-Container wird zusätzliche Software zur Unterstützung deines Spieleservers ausgeführt. Es ähnelt dem Konzept eines „Sidecar“ -Containers. Er bietet dir die Möglichkeit, unterstützende Software neben deinen Spieleservern auszuführen und zu skalieren, sie aber als separate Container zu verwalten. In einer Spielserver-Containergruppe können Sie keine oder mehr Support-Container definieren. In einer Containergruppe pro Instanz sind alle Container Support-Container. Jeder Support-Container kann als unverzichtbar eingestuft werden.
-
- Datenverarbeitung
Ein Compute stellt eine Kopie einer Spielserver-Containergruppe auf einer Flotteninstanz dar.
Gängige Architekturen
Das folgende Diagramm zeigt die einfachste Struktur der Containerflotte. In dieser Struktur verwaltet jede Instanz in der Flotte eine Kopie der Spielserver-Containergruppe. Die Container-Gruppe hat einen einzelnen Spieleserver-Container, der einen Spieleserver-Prozess ausführt. In diesem Beispiel ist die Containerflotte so konfiguriert, dass pro Instanz eine Kopie der Spielserver-Containergruppe platziert wird. Bei dieser Architektur führt jede Instanz einen Gameserver-Prozess aus.

Dieses zweite Diagramm veranschaulicht eine komplexere Containerflottenarchitektur. In dieser Struktur besteht die Flotte sowohl aus einer Spielserver-Containergruppe als auch aus einer Containergruppe pro Instanz. Die Spielserver-Containergruppe hat separate Container für den Spieleserver-Prozess und einen Support-Prozess. Die Flotte ist so konfiguriert, dass drei Kopien der Spielserver-Containergruppe auf jeder Flotteninstanz platziert werden. Die Containergruppe pro Instanz wird niemals repliziert. In diesem Beispiel ist die Containerflotte so konfiguriert, dass drei Kopien der Spielserver-Containergruppe pro Instanz platziert werden. Bei dieser Architektur führt jede Instanz drei Spielserverprozesse aus.

Kern-Features
In diesem Abschnitt wird zusammengefasst, wie einige grundlegende Container-Konzepte Amazon GameLift Servers implementiert werden. Anweisungen zur Arbeit mit Containerflotten finden Sie in den entsprechenden Themen in diesem Handbuch.
Aktive Flottenaktualisierungen
Managed Containers bietet erweiterten Support, der Sie bei der Verwaltung des Lebenszyklus Ihrer gehosteten Software und Container-Architektur unterstützt. Sie können Ihre Containerdefinitionen, einschließlich Container-Images, aktualisieren und Änderungen an Ihren vorhandenen Flotten vornehmen. Diese Funktion macht es schneller und einfacher, Änderungen an Ihren Containern während der Entwicklung zu wiederholen. Es bietet auch Funktionen, mit denen Sie Ihre Softwareversionsupdates erstellen, bereitstellen und im Laufe der Zeit verfolgen können. Diese Features umfassen:
-
Verwalten Sie Definitionsupdates und Versionsverwaltung für Containergruppen. Sie können fast alle Eigenschaften einer Container-Gruppendefinition aktualisieren, einschließlich Container-Images und Konfigurationseinstellungen. Jedes Mal, wenn Sie einen Container aktualisieren, weist er dem Update Amazon GameLift Servers automatisch eine Versionsnummer zu und behält standardmäßig alle Versionen bei. Sie können auf jede bestimmte Version zugreifen und Versionen nach Bedarf löschen. Beim Erstellen einer Containerflotte können Sie die Definition und Version der Containergruppe angeben, die bereitgestellt werden soll.
-
Aktualisieren Sie bestehende Containerflotten mit neuen Containergruppendefinitionen und Konfigurationseinstellungen. Sie können Container-Updates für Flotten bereitstellen, die bereits für Flotteninstanzen bereitgestellt wurden. Sie können den Status der Aktualisierungsbereitstellungen an jedem Flottenstandort mithilfe des AWS Management Console AWS SDK und der CLI verfolgen.
-
Konfigurieren Sie, wie Flottenupdates für eine aktive Flotte bereitgestellt werden sollen.
-
Schutz von Spielsitzungen. Entscheiden Sie sich dafür, Flotteninstanzen mit aktiven Spielsitzungen bis zum Ende der Spielsitzungen zu schützen (sichere Bereitstellung). Oder entscheide dich dafür, Flotteninstanzen unabhängig von der Aktivität der Spielsitzungen zu ersetzen (unsicherer Einsatz). Verwenden Sie während der Entwicklungs- und Testphasen unsichere Bereitstellungen, um die Bereitstellungszeit zu verkürzen.
-
Minimaler gesunder Prozentsatz. Geben Sie den Prozentsatz fehlerfreier Aufgaben an, die Sie während der Bereitstellung beibehalten möchten. Mit dieser Funktion können Sie entscheiden, wie viele Flotteninstanzen während einer Bereitstellung betroffen sind. Ein niedriger Wert priorisiert die Bereitstellungsgeschwindigkeit, während ein hoher Wert sicherstellt, dass die Verfügbarkeit der Spieleserver während der gesamten Bereitstellung hoch bleibt.
-
Strategie für Fehlschläge bei der Bereitstellung. Entscheiden Sie, welche Maßnahmen ergriffen werden sollen, wenn eine Bereitstellung fehlschlägt. Ein Bereitstellungsfehler bedeutet, dass einige der aktualisierten Container die Statusprüfungen nicht bestanden haben und daher als beeinträchtigt gelten. Sie können Bereitstellungen so einrichten, dass alle Flotteninstanzen automatisch auf den zuvor bereitgestellten Status zurückgesetzt werden. Alternativ können Sie sich dafür entscheiden, einige der beeinträchtigten Flotteninstanzen beizubehalten, um sie beim Debuggen zu verwenden.
-
Die Möglichkeit, aktive Flotten zu aktualisieren, ist äußerst nützlich, wenn du ein Update für deine Gameserver-Software bereitstellen möchtest. Nachdem du ein neues Container-Image für deinen Gameserver erstellt hast, besteht die Bereitstellung aus zwei Schritten: Aktualisiere zuerst die Container-Gruppendefinition mit dem neuen Image und zweitens aktualisiere die Container-Flotte. Amazon GameLift Serverserledigt alle anderen Aufgaben nach Bedarf.
Verpackung von Behältern
Bei der Entwicklung Ihrer Containerstruktur für den Einsatz in einer Containerflotte besteht ein gemeinsames Ziel darin, die verfügbare Rechenleistung optimal zu nutzen. Um dieses Ziel zu erreichen, sollten Sie so viele Spielserver-Containergruppen wie möglich auf jede Flotteninstanz packen.
Amazon GameLift Servershilft Ihnen dabei, indem es die maximale Anzahl an Gameserver-Containergruppen pro Instanz auf der Grundlage der folgenden Informationen berechnet:
-
Der Instance-Typ der Flotte und ihre vCPU- und Speicherressourcen.
-
Die vCPU- und Speicheranforderungen für alle Container in der Spielserver-Containergruppe.
Die vCPU- und Speicheranforderungen für alle Container in einer Containergruppe pro Instanz, falls es eine gibt.
Wenn Sie eine Containerflotte erstellen, können Sie das berechnete Maximum verwenden oder eine gewünschte Anzahl angeben. Es empfiehlt sich, mit Ihrer containerisierten Gameserver-Software zu experimentieren, um die Ressourcenanforderungen für eine optimale Gameserverleistung zu ermitteln.
Kapazitätsskalierung
Die Flottenkapazität gibt die Anzahl der Spielsitzungen an, die eine Flotte gleichzeitig veranstalten kann. Sie können die Kapazität auch anhand der Anzahl gleichzeitiger Spieler messen, die eine Flotte unterstützen kann. Um die Hosting-Kapazität einer Flotte zu erhöhen oder zu verringern, fügen Sie Flotteninstanzen hinzu oder entfernen sie.
Eine Containerflotte ist so konfiguriert, dass sie auf jeder Flotteninstanz eine bestimmte Anzahl gleichzeitiger Spielserverprozesse ausführt. (Sie können dies auf der Grundlage von (1) den Spielserver-Containergruppen pro Instanz und (2) der Anzahl der Spielserverprozesse, die in jeder Containergruppe ausgeführt werden, berechnen.) Die Anzahl der gleichzeitigen Spieleserver pro Instanz gibt Aufschluss darüber, welche Auswirkungen das Hinzufügen oder Entfernen der einzelnen Flotteninstanzen hat. Wenn Ihre Containerflotte beispielsweise einen Spieleserver-Prozess in jeder Spielserver-Containergruppe ausführt und jede Flotteninstanz 100 Gameserver-Containergruppen umfasst, erhöhen oder verringern Sie die Kapazität Ihrer Flotte für gleichzeitige Spielsitzungen um jeweils 100. Wenn jede Spielsitzung über 10 Spielerplätze verfügt, erhöhen oder verringern Sie die Kapazität Ihrer Flotte für Spieler um jeweils 1000.
Bei Containerflotten können Sie jede der von bereitgestellten Methoden zur Kapazitätsskalierung verwenden. Amazon GameLift Servers Dazu zählen:
-
Stellen Sie die Flottenkapazität manuell ein, indem Sie die gewünschte Anzahl an Flotteninstanzen festlegen.
-
Richten Sie die automatische Skalierung ein, indem Sie auf einen gewünschten Puffer verfügbarer Instanzen abzielen (Zielverfolgung). Bei dieser Methode wird automatisch eine bestimmte Menge ungenutzter Hosting-Ressourcen beibehalten, sodass neue Spieler schnell in die Spiele einsteigen können. Wenn die Nachfrage der Spieler steigt oder sinkt, wird die Größe dieses Puffers kontinuierlich angepasst.
-
Richten Sie die automatische Skalierung mit benutzerdefinierten Skalierungsregeln ein (erweiterte Funktion). Mit dieser Methode können Sie auf der Grundlage der von Ihnen ausgewählten Flottenkennzahlen skalieren.
client/server Verbindungen zum Spiel
Bei Amazon GameLift Servers verwalteten Flotten stellen Spieleclients eine direkte Verbindung zu deinen in der Cloud gehosteten Spieleservern her. Wenn ein Spielclient darum bittet, einem Spiel beizutreten, eine Spielsitzung Amazon GameLift Servers findet und Verbindungsinformationen (IP und Port) an den Spielclient weitergibt. Du kannst den externen Zugriff auf Flotteninstanzen kontrollieren, indem du bestimmte Portbereiche (eingehende Zugriffsberechtigungen) für die Flotte öffnest. Eingehende Berechtigungen bestimmen, welche Ports für eingehenden Datenverkehr geöffnet sind. Sie können schnell alle Ports herunterfahren, auf einige beschränken oder alle Ports öffnen.
Verwaltete Containerflotten erfordern eine zusätzliche Einstellung, die den Zugriff auf Prozesse ermöglicht, die in einem Container ausgeführt werden. Wenn Sie eine Containerdefinition erstellen, geben Sie eine Reihe von Ports an, einen für jeden Prozess, der eine Verbindung aufnimmt. Dies umfasst:
-
Alle Gameserver-Prozesse, die gleichzeitig im Gameserver-Container ausgeführt werden. Alle Spielserverprozesse müssen es Spielclients ermöglichen, eine Verbindung herzustellen, um an einer Spielsitzung teilzunehmen.
-
Jeder Prozess in einem Support-Container, zu dem eine externe Quelle eine Verbindung herstellen muss. Sie könnten beispielsweise eine Remoteverbindung zu einer Test-App herstellen.
Wenn du die Port-Einstellungen für den nach innen gerichteten Container festlegst, berechnet anhand dieser Einstellungen die nach außen gerichteten Eingangsberechtigungen, mit denen Spieleclients und andere Amazon GameLift Servers Anwendungen eine Verbindung herstellen können. Amazon GameLift Serversverwaltet außerdem die Zuordnung zwischen eingehenden Berechtigungen und einzelnen Container-Ports, sodass Spieler auf eine Spielsitzung in einem Container zugreifen können. Diese interne Zuordnung bietet eine Sicherheitsebene, indem sie deine Spieleserver vor direktem Zugriff auf die Container-Ports schützt. Du hast die Möglichkeit, die nach außen gerichteten Port-Einstellungen einer Flotte nach Bedarf anzupassen. Weitere Informationen zur manuellen Einstellung von Häfen für Containerflotten finden Sie unter. Netzwerkverbindungen konfigurieren
Sie können die Hafeneinstellungen einer Containerflotte jederzeit ändern. Für diese Änderung ist ein Flottenupdate erforderlich.
Das folgende Diagramm veranschaulicht die Rolle von Hafenverbindungen in einer Containerflotte. Wie in der Abbildung gezeigt, legen Sie Ports für einzelne Container fest und Amazon GameLift Servers verwenden diese Informationen, um genügend Ports auf der Flotteninstanz zu konfigurieren, um sie jedem Containerhafen zuzuordnen. Sowohl die eingehenden Zugriffsberechtigungen für externe Instances als auch die internen Verbindungsports werden Amazon GameLift Servers für Ihre Flotte berechnet, sofern Sie sie nicht manuell festlegen.

Protokollierung von Containern
In verwalteten Containerflotten werden die Standardausgabeströme (und Standardfehlerströme) für alle Container erfasst. Dazu gehören auch die Sitzungsprotokolle Ihres Spieleservers. Sie können eine Containerflotte so konfigurieren, dass sie eine von mehreren Optionen für die Verarbeitung von Ausgangsströmen verwendet:
-
Speichern Sie die Container-Ausgabe als CloudWatch Amazon-Log-Stream. Jeder Log-Stream verweist auf die Flotten-ID und den Container. Wenn Sie diese Protokollierungsoption für die Flotte wählen, geben Sie eine CloudWatch Protokollgruppe an, die alle Protokolldatenströme der Flotte organisiert. Anschließend können Sie CloudWatch Funktionen verwenden, um Protokolldaten nach Bedarf zu suchen und zu analysieren.
-
Speichern Sie die Container-Ausgabe in einem Amazon Simple Storage Service (Amazon S3) -Speicher-Bucket. Sie können den Inhalt nach Bedarf ansehen, teilen oder herunterladen.
Schalten Sie die Protokollierung aus. In diesem Szenario wird die Container-Ausgabe nicht gespeichert.
Amazon GameLift Serverssendet Protokolldaten von verwalteten Containerflotten an die CloudWatch oder Amazon S3 S3-Services in Ihrem AWS Konto. Um Ihre Daten einzusehen, verwenden Sie die AWS Management Console oder andere Tools, indem Sie sich bei Ihrem AWS Konto anmelden und mit den einzelnen Diensten arbeiten. Sie erweitern den eingeschränkten Amazon GameLift Servers Zugriff auf diese Aktionen, indem Sie eine Servicerolle für Ihre Containerflotten einrichten.
Sie können die Logging-Konfiguration einer Containerflotte jederzeit ändern. Für diese Änderung ist ein Flottenupdate erforderlich.
Containerflotten und der Agent Amazon GameLift Servers
Eine häufig verwendete Container-Architektur führt in jedem Container einen einzelnen Prozess aus. In einer Amazon GameLift Servers Containerflotte hat die Spielserver-Containergruppe einen Spieleserver-Container, der einen Spieleserver-Prozess ausführt. Amazon GameLift ServersVerwaltet mit dieser Architektur den Lebenszyklus eines einzelnen Spieleserver-Prozesses in jeder Spielserver-Containergruppe auf einer Flotteninstanz.
Wenn Sie sich dafür entscheiden, eine Container-Architektur zu erstellen, die mehrere Spieleserver-Prozesse in jeder Spielserver-Containergruppe ausführt, benötigen Sie eine Möglichkeit, den Lebenszyklus aller Prozesse zu verwalten. Dazu gehören Aufgaben wie das Starten, Herunterfahren und Ersetzen von Prozessen nach Bedarf, das Verwalten einer gewünschten Anzahl von Prozessen, die gleichzeitig ausgeführt werden sollen, und das Behandeln von Fehlerzuständen.
Sie können wählen, ob Sie den Amazon GameLift Servers Agenten für diese Aufgaben verwenden möchten. Für eine Containerflotte implementiert der Agent Laufzeitanweisungen, die angeben, welche ausführbaren Dateien ausgeführt werden sollen (und wie viele), Startparameter bereitstellen und Regeln für die Aktivierung von Spielservern festlegen. Zum Beispiel könnten Runtime-Anweisungen den Agenten anweisen, zehn Gameserverprozesse für den produktiven Einsatz und einen Gameserverprozess mit speziellen Startparametern für Tests aufrechtzuerhalten.
Um den Agenten mit Ihren Containerflotten zu verwenden, fügen Sie den Agenten Ihrem Container-Image hinzu und fügen Sie eine Reihe von Laufzeitanweisungen hinzu. Weitere Informationen über den Agenten finden Sie unterArbeite mit dem Amazon GameLift Servers Agenten.