View a markdown version of this page

So funktionieren Container in GameLift Amazon-Server - GameLift Amazon-Server

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 GameLift Amazon-Server

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 Flotten zu verwalten. Amazon GameLift Servers Dieses Thema beschreibt die grundlegenden Strukturelemente für den Betrieb von Containern in einer Amazon GameLift Servers verwalteten Flotte, veranschaulicht gängige Architekturen und skizziert einige Kernkonzepte.

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. Verwenden Sie nach der Bereitstellung die Amazon GameLift Servers Konsole und die API-Tools, um die Leistung der Flotte zu überwachen, Spielsitzungen zu verwalten und Kennzahlen zu analysieren.

  • Entwickler von Unreal Engine oder Unity können die Amazon GameLift Servers Plugins verwenden, um Ihren Spieleserver zu integrieren und aus der Entwicklungsumgebung Ihrer Game Engine heraus eine Containerflotte aufzubauen. Die geführten Workflows des Plugins helfen dir dabei, eine schnelle, einfache Lösung mit cloudbasiertem Hosting mithilfe verwalteter Container zu erstellen. Baue dann auf dieser Grundlage auf, um eine benutzerdefinierte Hosting-Lösung für dein Spiel zu erstellen.

Komponenten der Containerflotte

Flotte

Eine Containerflotte ist eine Sammlung von Amazon EC2-Instances, auf denen Ihre containerisierten Spieleserver gehostet werden. Diese Instances werden von in Amazon GameLift Servers Ihrem Namen verwaltet. Wenn Sie eine Flotte erstellen, konfigurieren Sie, wie die Container-Architektur mit Ihrer Spieleserver-Software auf jeder Flotteninstanz bereitgestellt wird. Sie können eine Containerflotte mit Instanzen an einem oder mehreren geografischen Standorten erstellen. Sie können Amazon GameLift Servers Skalierungstools verwenden, um die Kapazität einer Containerflotte automatisch zu skalieren, um Spielesitzungen und Spieler zu hosten.

Instance

Eine Amazon EC2-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 Instanztyp bietet eine andere Kombination aus CPU, Arbeitsspeicher, Speicher und Netzwerkkapazität.

Wenn Sie eine Containerflotte erstellen, Amazon GameLift Servers stellt diese Ihre Container auf der Grundlage des von Ihnen ausgewählten Instance-Typs und Ihrer Flottenkonfiguration bereit. Jede bereitgestellte Flotteninstanz ist identisch und führt deine containerisierte Spieleserversoftware auf dieselbe Weise aus. Die Anzahl der Instanzen in einer Flotte bestimmt die Größe der Flotte und die Hosting-Kapazität für Spiele.

Containergruppe

Amazon GameLift Serversverwendet das Konzept einer Containergruppe, um eine Gruppe von Containern zu beschreiben und zu verwalten. Eine Containergruppe ä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 Typen von Containergruppen haben:

  • Eine Spieleserver-Containergruppe verwaltet die Container, auf denen Ihre Spieleserveranwendung und die unterstützende Software ausgeführt werden. Eine Containerflotte muss über eine Containergruppe dieser Art verfügen, um Spielsitzungen und Spieler zu hosten. Eine Spieleserver-Containergruppe kann in einer Flotteninstanz repliziert werden. Die Anzahl der Replikate von Spieleservergruppen 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. zur Überwachung. Deine Spieleserver-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“ eingestuft ist. Ein wichtiger Container bestimmt den Lebenszyklus einer Containergruppe. Wenn der essentielle Container ausfällt, wird die gesamte Containergruppe neu gestartet.

Container

Der Container ist das grundlegendste Element einer containerbasierten Architektur. Es 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 dem die Software interagiert. Amazon GameLift Servers

Amazon GameLift Serversdefiniert zwei Arten von Containern:

  • Ein Gameserver-Container enthält alles, was Sie zum Ausführen Ihrer Spieleserverprozesse und zum Hosten von Spielsitzungen für Spieler benötigen. Er beinhaltet den Build deines Gameservers und die zugehörige Software. Definiere einen Gameserver-Container für die Gameserver-Containergruppe einer Flotte. Der Spielservercontainer wird automatisch als unverzichtbar für die Containergruppe angesehen.

  • In einem Support-Container wird zusätzliche Software zur Unterstützung Ihres Spieleservers ausgeführt. Er ähnelt dem Konzept eines „Sidecar“ -Containers. Es gibt dir die Möglichkeit, unterstützende Software neben deinen Spieleservern auszuführen und zu skalieren, aber als separate Container zu verwalten. In einer Spieleserver-Containergruppe kannst du 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 Gameserver-Containergruppe auf einer Flotteninstanz dar.

Allgemeine Architekturen

Das folgende Diagramm veranschaulicht die einfachste Struktur der Containerflotte. In dieser Struktur verwaltet jede Instanz in der Flotte eine Kopie der Spielserver-Containergruppe. Die Containergruppe hat einen einzelnen Spieleserver-Container, auf dem ein Spieleserverprozess ausgeführt wird. In diesem Beispiel ist die Container-Flotte so konfiguriert, dass pro Instance eine Kopie der Spieleserver-Containergruppe platziert wird. Bei dieser Architektur wird auf jeder Instanz ein Spieleserverprozess ausgeführt.

Ein Beispiel für eine einfache Container-Architektur mit einem einzelnen Spieleserver-Container in der Spieleserver-Containergruppe.

Dieses zweite Diagramm veranschaulicht eine komplexere Containerflottenarchitektur. In dieser Struktur besteht die Flotte sowohl aus einer Spieleserver-Containergruppe als auch aus einer Containergruppe pro Instanz. Die Spieleserver-Containergruppe hat separate Container für den Spieleserverprozess 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 werden auf jeder Instanz drei Spieleserverprozesse ausgeführt.

Ein Beispiel für eine Container-Architektur mit mehreren Containern in der Spielserver-Containergruppe und einem Container in der Containergruppe pro Instanz.

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 erweiterte Unterstützung, um Sie bei der Verwaltung des Lebenszyklus Ihrer gehosteten Software und Container-Architektur zu unterstützen. Sie können Ihre Container-Definitionen, 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 Softwareversionsaktualisierungen im Laufe der Zeit erstellen, bereitstellen und verfolgen können. Diese Features umfassen:

  • Verwalten Sie Aktualisierungen und Versionierung von Containergruppendefinitionen. Sie können fast alle Eigenschaften einer Containergruppendefinition aktualisieren, einschließlich Container-Images und Konfigurationseinstellungen. Jedes Mal, wenn Sie einen Container aktualisieren, weist das Update Amazon GameLift Servers automatisch eine Versionsnummer zu und verwaltet standardmäßig alle Versionen. 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 Update-Bereitstellungen an jedem Flottenstandort mithilfe des AWS-Managementkonsole oder des AWS SDK und der CLI verfolgen.

  • Konfigurieren Sie, wie Flottenupdates in einer aktiven Flotte bereitgestellt werden sollen.

    • Schutz von Spielsitzungen. Entscheide dich dafür, Flotteninstanzen mit aktiven Spielsitzungen bis zum Ende der Spielsitzungen zu schützen (sichere Bereitstellung). Oder entscheiden Sie sich dafür, Flotteninstanzen unabhängig von der Aktivität der Spielsitzung zu ersetzen (unsichere Bereitstellung). Verwende unsichere Bereitstellungen während der Entwicklungs- und Testphasen, um die Bereitstellungszeit zu verkürzen.

    • Minimaler Prozentsatz an gesunden Menschen. Geben Sie den Prozentsatz fehlerfreier Aufgaben an, den Sie während der Bereitstellung beibehalten möchten. Mit dieser Funktion können Sie entscheiden, wie viele Flotteninstanzen von einer Bereitstellung betroffen sind. Ein niedriger Wert priorisiert die Geschwindigkeit der Bereitstellung, während ein hoher Wert sicherstellt, dass die Verfügbarkeit des Spielservers während der gesamten Bereitstellung hoch bleibt.

    • Strategie zum Scheitern der Bereitstellung. Entscheiden Sie, welche Maßnahmen ergriffen werden sollen, wenn eine Bereitstellung fehlschlägt. Ein Fehler bei der Bereitstellung bedeutet, dass einige der aktualisierten Container die Statusüberprüfungen nicht bestanden haben und als beeinträchtigt eingestuft werden. Sie können Bereitstellungen so einrichten, dass alle Flotteninstanzen automatisch in den Zustand zurückversetzt werden, in dem sie zuvor bereitgestellt wurden. Sie können sich auch dafür entscheiden, einige der beeinträchtigten Flotteninstanzen zur Verwendung beim Debuggen beizubehalten.

Die Möglichkeit, aktive Flotten zu aktualisieren, ist äußerst nützlich, wenn du ein Update für deine Spieleserver-Software bereitstellen möchtest. Nachdem du ein neues Container-Image für deinen Spieleserver erstellt hast, erfolgt die Bereitstellung in zwei Schritten: Zuerst aktualisierst du die Containergruppendefinition mit dem neuen Image und zweitens aktualisierst du die Container-Flotte. Amazon GameLift Serverserledigt alle anderen Aufgaben nach Bedarf.

Verpackung von Containern

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 Spieleserver-Containergruppen wie möglich in jede Flotteninstanz packen.

Amazon GameLift Servershilft dir dabei, indem es die maximale Anzahl an Spieleserver-Containergruppen pro Instance 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. Als bewährte Methode sollten Sie planen, mit Ihrer containerisierten Spieleserversoftware zu experimentieren, um die Ressourcenanforderungen für eine optimale Spieleserverleistung zu ermitteln.

Kapazitätsskalierung

Die Flottenkapazität misst die Anzahl der Spielsitzungen, die eine Flotte gleichzeitig veranstalten kann. Du kannst 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 Container-Flotte 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 Spieleserver-Containergruppen pro Instanz und (2) der Anzahl der Spieleserverprozesse, 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 Container-Flotte beispielsweise einen Spieleserverprozess in jeder Spielserver-Containergruppe ausführt und jede Flotteninstanz 100 Spieleserver-Containergruppen enthält, erhöhen oder verringern Sie die Kapazität Ihrer Flotte, um gleichzeitige Spielesitzungen abzuhalten, um jeweils 100. Wenn jede Spielsitzung über 10 Spielerplätze verfügt, erhöhen oder verringern Sie die Kapazität Ihrer Flotte, Spieler zu beherbergen, 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 Instances abzielen (Target Tracking). Bei dieser Methode wird automatisch eine bestimmte Menge ungenutzter Hosting-Ressourcen verwaltet, 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 Spielclients eine direkte Verbindung zu deinen in der Cloud gehosteten Spieleservern her. Wenn ein Spielclient fragt, ob er an einem Spiel teilnehmen möchte, Amazon GameLift Servers findet er eine Spielsitzung und stellt dem Spielclient Verbindungsinformationen (IP und Port) zur Verfügung. Du kannst den externen Zugriff auf Flotteninstanzen kontrollieren, indem du bestimmte Portbereiche (Eingangsberechtigungen) für die Flotte öffnest. Eingehende Berechtigungen bestimmen, welche Ports für eingehenden Traffic geöffnet sind. Sie können schnell alle Ports herunterfahren, auf wenige beschränken oder alle Ports öffnen.

Für verwaltete Containerflotten ist eine zusätzliche Einstellung erforderlich, die den Zugriff auf Prozesse ermöglicht, die in einem Container ausgeführt werden. Wenn Sie eine Container-Definition erstellen, geben Sie eine Reihe von Ports an, einen für jeden Prozess, der eine Verbindung aufnimmt. Dies umfasst:

  • Alle Spieleserverprozesse, die gleichzeitig im Spieleserver-Container ausgeführt werden. Alle Spieleserverprozesse müssen es Spielclients ermöglichen, eine Verbindung herzustellen, um an einer Spielsitzung teilnehmen zu können.

  • 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 nach innen gerichteten Container-Port-Einstellungen festlegst, berechnet es anhand dieser die nach außen gerichteten eingehenden Berechtigungen, mit denen Spielclients und andere Amazon GameLift Servers Anwendungen eine Verbindung herstellen können. Amazon GameLift Serversverwaltet auch 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 Ihre 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 zum manuellen Festlegen der Ports für Containerflotten finden Sie unter. Netzwerkverbindungen konfigurieren

Sie können die Porteinstellungen einer Containerflotte jederzeit ändern. Für diese Änderung ist ein Flottenupdate erforderlich.

Das folgende Diagramm veranschaulicht die Rolle der Hafenverbindungen innerhalb einer Containerflotte. Wie 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 Container-Port zuzuordnen. Sowohl die Berechtigungen für den eingehenden Zugriff auf externe Instances als auch die nach innen gerichteten Verbindungsports werden Amazon GameLift Servers für Ihre Flotte berechnet, sofern Sie sie nicht manuell festlegen.

Eine Abbildung der Porteinstellungen für eine Containerflotte. Portzuordnungen ermöglichen es externem Traffic, eine Verbindung zu einer Flotteninstanz herzustellen und Zugriff auf einen einzelnen Container auf der Instance zu erhalten.

Protokollierung von Containern

In verwalteten Containerflotten werden die Standardausgabestreams (und die Standardfehlerstreams) für alle Container erfasst. Dazu gehören auch die Spielsitzungsprotokolle deines Spielservers. Du kannst eine Containerflotte so konfigurieren, dass sie eine von mehreren Optionen für die Verarbeitung von Ausgabestreams verwendet:

  • Speichern Sie die Containerausgabe als CloudWatch Amazon-Log-Stream. Jeder Log-Stream verweist auf die Flotten-ID und den Container. Wenn Sie diese Logging-Option für die Flotte wählen, geben Sie eine CloudWatch Log-Gruppe an, die alle Log-Streams der Flotte organisiert. Anschließend können Sie CloudWatch Funktionen verwenden, um Protokolldaten nach Bedarf zu suchen und zu analysieren.

  • Speichern Sie die Containerausgabe in einem Speicher-Bucket von Amazon Simple Storage Service (Amazon S3). Sie können den Inhalt nach Bedarf anzeigen, teilen oder herunterladen.

  • Schalten Sie die Protokollierung aus. In diesem Szenario wird die Containerausgabe nicht gespeichert.

Amazon GameLift Serverssendet Protokolldaten von verwalteten Containerflotten an die CloudWatch oder die Amazon S3-Dienste in Ihrem AWS Konto. Um Ihre Daten einzusehen, verwenden Sie das AWS-Managementkonsole oder andere Tools, indem Sie sich bei Ihrem AWS Konto anmelden und mit den einzelnen Diensten arbeiten. Sie gewähren den eingeschränkten Amazon GameLift Servers Zugriff auf diese Aktionen, indem Sie eine Servicerolle für Ihre Containerflotten erstellen.

Sie können die Protokollierungskonfiguration einer Containerflotte jederzeit ändern. Für diese Änderung ist ein Flottenupdate erforderlich.

Containerflotten und die Amazon-Server GameLift Agent

Eine häufig verwendete Containerarchitektur führt in jedem Container einen einzelnen Prozess aus. In einer Amazon GameLift Servers Containerflotte verfügt die Spieleserver-Containergruppe über einen Spieleservercontainer, auf dem ein Spieleserverprozess ausgeführt wird. Amazon GameLift ServersVerwaltet mit dieser Architektur den Lebenszyklus des einzelnen Spieleserverprozesses in jeder Spielservercontainergruppe auf einer Flotteninstanz.

Wenn Sie sich dafür entscheiden, eine Container-Architektur zu erstellen, auf der mehrere Spieleserverprozesse in jeder Spieleserver-Containergruppe ausgeführt werden, 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, die Verwaltung einer gewünschten Anzahl gleichzeitig laufender Prozesse und die Behandlung 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 des Spielservers festlegen. Beispielsweise könnte der Agent mithilfe von Laufzeitanweisungen angewiesen werden, zehn Spieleserverprozesse für den Produktionsbetrieb und einen Spieleserverprozess mit speziellen Startparametern zum Testen bereitzustellen.

Um den Agenten mit Ihren Container-Flotten zu verwenden, fügen Sie den Agenten Ihrem Container-Image hinzu und fügen Sie eine Reihe von Runtime-Anweisungen hinzu. Weitere Informationen zum Agenten finden Sie unterArbeite mit dem Amazon GameLift Servers Agenten.