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.
Personalisieren Sie eine GameLift Amazon-Server Containerflotte
Die Themen in diesem Abschnitt beschreiben einige der optionalen Funktionen für Amazon GameLift Servers verwaltete Container. Sie können wählen, ob Sie eine oder alle dieser Funktionen verwenden möchten.
Themen
Legen Sie Ressourcenlimits fest
Für jede Containergruppe können Sie festlegen, wie viel Speicher und Rechenleistung die Containergruppe benötigt, um ihre Software auszuführen. Amazon GameLift Serversstützt sich auf diese Informationen, um Ressourcen in der Containergruppe zu verwalten. Es verwendet diese Informationen auch, um zu berechnen, wie viele Spielserver-Containergruppen ein Flottenimage aufnehmen kann. Du kannst auch Grenzwerte für einzelne Container festlegen.
Sie können eine Höchstgrenze für Speicher und Rechenleistung für eine Containergruppe festlegen. Standardmäßig werden diese Ressourcen von allen Containern in der Gruppe gemeinsam genutzt. Sie können die Ressourcenverwaltung weiter anpassen, indem Sie Grenzwerte für einzelne Container festlegen.
- Legen Sie optionale Grenzwerte für einzelne Container fest
-
Durch das Festlegen containerspezifischer Ressourcenlimits können Sie besser kontrollieren, wie einzelne Container die Ressourcen der Gruppe nutzen können. Wenn Sie keine containerspezifischen Grenzwerte festlegen, teilen sich alle Container in der Gruppe die Gruppenressourcen. Die gemeinsame Nutzung bietet mehr Flexibilität, um Ressourcen dort einzusetzen, wo sie benötigt werden. Es erhöht auch das Potenzial, dass Prozesse miteinander konkurrieren und zum Ausfall von Containern führen.
Legen Sie für jeden Container eine der folgenden
ContainerDefinitionEigenschaften fest.-
MemoryHardLimitMebibytes— Legen Sie ein maximales Speicherlimit für den Container fest. Wenn der Container dieses Limit überschreitet, führt dies zu einem Neustart. -
VcpuLimit — Reservieren Sie eine Mindestmenge an vCPU-Ressourcen für die ausschließliche Verwendung des Containers. Dem Container steht immer die reservierte Menge zur Verfügung. Es kann dieses Minimum jederzeit überschreiten, wenn zusätzliche Ressourcen verfügbar sind. (1024 CPU-Einheiten entsprechen 1 vCPU.)
-
- Legen Sie die Gesamtressourcenlimits für eine Containergruppe fest
-
Wenn Sie Grenzwerte für einzelne Container festlegen, müssen Sie möglicherweise ändern, wie viel Arbeitsspeicher und vCPU-Ressourcen die Containergruppe benötigt. Ziel ist es, genügend Ressourcen zuzuweisen, um die Leistung des Spielservers zu optimieren. Amazon GameLift Serversberechnet anhand dieser Grenzwerte, wie Spieleserver-Containergruppen auf einer Flotteninstanz gepackt werden. Sie werden sie auch verwenden, wenn Sie einen Instance-Typ für eine Containerflotte auswählen.
Berechnen Sie den Gesamtspeicher und die vCPU, die für eine Containergruppe benötigt werden. Berücksichtigen Sie dabei Folgendes:
-
Was sind all die Prozesse, die auf allen Containern in der Containergruppe ausgeführt werden? Addieren Sie die Ressourcen, die für diese Prozesse benötigt werden. Beachten Sie alle containerspezifischen Grenzwerte.
-
Wie viele gleichzeitige Spieleserverprozesse wollt ihr in jeder Containergruppe ausführen? Das legst du in deinem Gameserver-Container-Image fest.
Lege auf der Grundlage deiner Schätzung der Anforderungen an Containergruppen die folgenden
ContainerGroupDefinitionEigenschaften fest:-
TotalMemoryLimitMebibytes— Legen Sie ein maximales Speicherlimit für die Containergruppe fest. Alle Container in der Gruppe teilen sich den zugewiesenen Speicher. Wenn Sie einzelne Container-Grenzwerte festlegen, muss das Gesamtspeicherlimit gleich oder größer als das höchste containerspezifische Speicherlimit sein. -
TotalVcpuLimit— Legen Sie ein maximales vCPU-Limit für die Containergruppe fest. Alle Container in der Gruppe teilen sich die zugewiesenen CPU-Ressourcen. Wenn Sie einzelne Container-Grenzwerte festlegen, muss das gesamte CPU-Limit gleich oder größer als die Summe aller containerspezifischen CPU-Grenzwerte sein. Es hat sich bewährt, diesen Wert so einzustellen, dass er die Summe der Container-CPU-Grenzwerte verdoppelt.
-
- Beispielszenario
-
Nehmen wir an, wir definieren eine Spieleserver-Containergruppe mit den folgenden drei Containern:
-
Container A ist unser Gameserver-Container. Wir schätzen den Ressourcenbedarf für einen Spieleserver auf 512 MiB und 1024 CPU. Wir planen, den Container auf einem Serverprozess laufen zu lassen. Da auf diesem Container unsere kritischste Software ausgeführt wird, legen wir kein Speicherlimit oder vCPU-Reservelimit fest.
-
Container B ist ein Support-Container mit geschätzten Ressourcenanforderungen von 1024 MiB und 1536 CPUs. Wir haben ein Speicherlimit von 2048 MiB und ein CPU-Reservelimit von 1024 CPU festgelegt.
-
Container C ist ein weiterer Unterstützungscontainer. Wir haben ein Festplattenlimit von 512 MiB und ein CPU-Reservelimit von 512 CPUs festgelegt.
Anhand dieser Informationen legen wir die folgenden Gesamtlimits für die Containergruppe fest:
-
Gesamtspeicherlimit: 7680 MiB. Dieser Wert überschreitet das höchste Speicherlimit (1024 MiB).
-
CPU-Limit insgesamt: 13312 CPU. Dieser Wert überschreitet die Summe des CPU-Grenzwerts (1024+512 CPU).
-
Verstehen Sie die Speicherzuweisung der Containerflotte
Wenn Amazon GameLift Servers Containergruppen auf einer Flotteninstanz bereitgestellt werden, ist nicht der gesamte Speicher der Instance für Ihre Container verfügbar. Amazon GameLift Serversreserviert einen Teil des Instance-Speichers für das Betriebssystem, den Amazon ECS-Agenten und andere unterstützende Dienste. Die Menge des reservierten Speichers variiert je nach Gesamtspeicher des Instance-Typs. Wenn Sie diesen Aufwand verstehen, können Sie Ihre Container-Gruppendefinitionen so konfigurieren, dass die verfügbaren Ressourcen voll genutzt werden.
Formel für den Speicheraufwand
Amazon GameLift Serversberechnet den für Ihre Containergruppen verfügbaren Speicher mithilfe der folgenden Schritte:
-
Ermitteln Sie den Prozentsatz des Speicherpuffers. Amazon GameLift Serversreserviert einen Prozentsatz des Gesamtspeichers der Instance auf der Grundlage der folgenden Stufen:
Instanzspeicher (MiB) Reservierter Prozentsatz Weniger als 5.000 8% 5.000 bis 9.999 6% 10.000 bis 89.999 5 % 90.000 bis 199.999 4% 200.000 oder mehr 3% -
Berechne den verfügbaren Speicher. Subtrahieren Sie den reservierten Speicher vom gesamten Instanzspeicher:
AvailableMemory = InstanceMemory - round(InstanceMemory × BufferPercentage) -
Subtrahieren Sie den Speicher pro Instanz in Containergruppen. Wenn Ihre Flotte eine Containergruppe pro Instanz verwendet, ziehen Sie sie vom verfügbaren
TotalMemoryLimitMebibytesSpeicher ab. Eine Containergruppe pro Instanz wird auf jeder Flotteninstanz ausgeführt.AvailableMemory = AvailableMemory - PerInstanceCGD.TotalMemoryLimitMebibytes -
Berücksichtigen Sie den Overhead des Log-Routers. Wenn Logging für die Flotte aktiviert ist, Amazon GameLift Servers reserviert zusätzliche 50 MiB pro Gameserver-Containergruppe für den Log-Router.
-
Berechnet die maximale Anzahl an Spielserver-Containergruppen. Die maximale Anzahl an Spieleserver-Containergruppen, die nach Arbeitsspeicher auf die Instanz passen, ist:
MaxGroupsByMemory = floor(AvailableMemory / (GameServerCGD.TotalMemoryLimitMebibytes + LogRouterMemory))Wo
LogRouterMemoryist 50 MiB, wenn die Protokollierung aktiviert ist, oder 0, wenn die Protokollierung deaktiviert ist.
Anmerkung
Der Arbeitsspeicher ist nur ein Faktor, der bestimmt, wie viele Spielserver-Containergruppen auf eine Instance passen. Amazon GameLift Serversberücksichtigt auch die vCPU-Kapazität und die verfügbaren Verbindungsanschlüsse und verwendet das Minimum aller drei Berechnungen.
Beispiel für eine Speicherberechnung
Stellen Sie sich eine Flotte vor, die eine c5.xlarge Instance (8.192 MiB Gesamtspeicher) mit aktivierter Protokollierung verwendet:
-
Der Instance-Speicher ist 8.192 MiB groß und fällt damit in die Stufe 5.000—9.999 (6% Puffer)
-
Reservierter Speicher = rund (8.192 × 0,06) = 492 MiB
-
Verfügbarer Speicher = 8.192 — 492 = 7.700 MiB
-
Wenn Sie eine Containergruppe pro Instanz mit 512 verwenden: Verfügbarer Speicher =
TotalMemoryLimitMebibytes7.700 — 512 = 7.188 MiB -
Wenn jede Spieleserver-Containergruppe 1.024 hat
TotalMemoryLimitMebibytes: MaxGroupsByMemory = Stockwerk (7.188/(1.024 + 50)) = Stockwerk (7.188/1.074) = 6
Verfügbarer Speicher nach Instanztyp
Die folgende Tabelle zeigt den Gesamtspeicher und den verfügbaren Speicher (nach dem Amazon GameLift Servers Puffer) für häufig verwendete Instanztypen. Verwenden Sie diese Werte als Ausgangspunkt für die Konfiguration Ihrer Containergruppendefinitionen. In der Spalte Verfügbarer Speicher wird der für alle Containergruppen auf der Instance verfügbare Speicher angezeigt, bevor der Overhead für Containergruppen oder Log-Router pro Instanz abgezogen wird.
| Instance-Typ | Gesamtspeicher (MiB) | Prozentsatz des Puffers | Verfügbarer Speicher (MiB) |
|---|---|---|---|
c5.large |
4.096 | 8% | 3.768 |
c5.xlarge |
8,192 | 6% | 7.700 |
c5.2xlarge |
16.384 | 5 % | 15.565 |
c5.4xlarge |
32.768 | 5 % | 31.130 |
c5.9xlarge |
73.728 | 5 % | 70.042 |
c5.12xlarge |
98.304 | 4% | 94.372 |
c5.18xlarge |
147.456 | 4% | 141.558 |
c5.24xlarge |
196.608 | 4% | 188.744 |
m5.large |
8,192 | 6% | 7.700 |
m5.xlarge |
16.384 | 5 % | 15.565 |
m5.2xlarge |
32.768 | 5 % | 31.130 |
m5.4xlarge |
65.536 | 5 % | 62.259 |
m5.8xlarge |
131.072 | 4% | 125.829 |
m5.12xlarge |
196.608 | 4% | 188.744 |
r5.large |
16.384 | 5 % | 15.565 |
r5.xlarge |
32.768 | 5 % | 31.130 |
r5.2xlarge |
65.536 | 5 % | 62.259 |
r5.4xlarge |
131.072 | 4% | 125.829 |
c6i.large |
4.096 | 8% | 3.768 |
c6i.xlarge |
8,192 | 6% | 7.700 |
c6i.2xlarge |
16.384 | 5 % | 15.565 |
c6i.4xlarge |
32.768 | 5 % | 31.130 |
c6i.8xlarge |
65.536 | 5 % | 62.259 |
c7i.large |
4.096 | 8% | 3.768 |
c7i.xlarge |
8,192 | 6% | 7.700 |
c7i.2xlarge |
16.384 | 5 % | 15.565 |
c7i.4xlarge |
32.768 | 5 % | 31.130 |
c7i.8xlarge |
65.536 | 5 % | 62.259 |
m7i.large |
8,192 | 6% | 7.700 |
m7i.xlarge |
16.384 | 5 % | 15.565 |
m7i.2xlarge |
32.768 | 5 % | 31.130 |
m7i.4xlarge |
65.536 | 5 % | 62.259 |
m7i.8xlarge |
131.072 | 4% | 125.829 |
m7i.12xlarge |
196.608 | 4% | 188.744 |
r7i.large |
16.384 | 5 % | 15.565 |
r7i.xlarge |
32.768 | 5 % | 31.130 |
r7i.2xlarge |
65.536 | 5 % | 62.259 |
r7i.4xlarge |
131.072 | 4% | 125.829 |
c8a.medium |
2 048 | 8% | 1.884 |
c8a.large |
4.096 | 8% | 3.768 |
c8a.xlarge |
8,192 | 6% | 7.700 |
c8a.2xlarge |
16.384 | 5 % | 15.565 |
c8i.large |
4.096 | 8% | 3.768 |
c8i.xlarge |
8,192 | 6% | 7.700 |
c8i.2xlarge |
16.384 | 5 % | 15.565 |
m8a.medium |
4.096 | 8% | 3.768 |
m8a.large |
8,192 | 6% | 7.700 |
m8a.xlarge |
16.384 | 5 % | 15.565 |
m8a.2xlarge |
32.768 | 5 % | 31.130 |
m8i.large |
8,192 | 6% | 7.700 |
m8i.xlarge |
16.384 | 5 % | 15.565 |
m8i.2xlarge |
32.768 | 5 % | 31.130 |
c9g.medium |
2 048 | 8% | 1.884 |
c9g.large |
4.096 | 8% | 3.768 |
c9g.xlarge |
8,192 | 6% | 7.700 |
c9g.2xlarge |
16.384 | 5 % | 15.565 |
m9g.large |
8,192 | 6% | 7.700 |
m9g.xlarge |
16.384 | 5 % | 15.565 |
m9g.2xlarge |
32.768 | 5 % | 31.130 |
Für Instance-Typen, die hier nicht aufgeführt sind, können Sie den verfügbaren Speicher mithilfe der oben beschriebenen Formel berechnen. In der Dokumentation zu den Amazon EC2-Instance-Typen finden Sie den Gesamtspeicher Ihres ausgewählten Instance-Typs.
Konfiguration von NVMe Drive Access
Bei Instances vom Typ D wird das NVMe-Laufwerk beim Host-Start automatisch in das /data Verzeichnis eingebunden. Um Containern den Zugriff auf den SSD-Speicher zu ermöglichen, legen Sie die folgende Eigenschaft fest: ContainerGroupDefinition MountPoints
-
InstancePath— Auf setzen,/dataum auf das automatisch gemountete NVMe-Laufwerk auf der Host-Instance zu verweisen. -
AccessLevel— Wählen Sie die für die Anforderungen Ihres Containers geeignete Zugriffsebene (z. B. READ_ONLY oder READ_WRITE). -
ContainerPath— (Optional) Geben Sie den Pfad an, unter dem der Instanzpfad im Container gemountet wird. Wenn nicht angegeben, wird standardmäßig der Instanzpfad verwendet.
Weitere Informationen zu Mount-Punkten finden Sie ContainerMountPoint in der Amazon GameLift Server-API-Referenz.
Benennen Sie wichtige Container
Weisen Sie für eine Containergruppe pro Instanz jeden Container als essenziell oder nicht essentiell ein. Per-instance Containergruppen müssen über mindestens einen Container mit essenzieller Unterstützung verfügen. Der essentielle Container erledigt die entscheidende Arbeit der Containergruppe. Es wird erwartet, dass der essentielle Container immer läuft. Wenn dies fehlschlägt, wird die gesamte Containergruppe neu gestartet.
Setzen Sie die ContainerDefinition Eigenschaft für jeden Container entweder Essential auf „Wahr“ oder „Falsch“.
Netzwerkverbindungen konfigurieren
Sie können den Netzwerkzugriff so anpassen, dass der externe Datenverkehr mit jedem Container in einer Containerflotte verbunden werden kann. Beispielsweise müssen Sie Netzwerkverbindungen zu dem Container herstellen, auf dem Ihre Spieleserverprozesse ausgeführt werden, damit Spieleclients Ihrem Spiel beitreten und es spielen können. Spielclients stellen über Ports und IP-Adressen eine Verbindung zu Spieleservern her.
In einer Containerflotte besteht keine direkte Verbindung zwischen einem Client und einem Server. Intern lauscht ein Prozess in einem Container auf einem Container-Port. Extern stellt der eingehende Traffic über einen Verbindungsport eine Verbindung zu einer Flotteninstanz her. Amazon GameLift Serversbehält die Zuordnungen zwischen internen Container-Ports und nach außen gerichteten Verbindungsports bei, sodass eingehender Datenverkehr an den richtigen Prozess auf der Instance weitergeleitet wird. Rufen Sie den Vorgang auf, um die aktuellen Portzuordnungen für eine bestimmte Containergruppe abzurufen. DescribeContainerGroupPortMappings Weitere Hinweise zum Anzeigen von Portzuordnungen finden Sie unter. Portzuordnungen von Containern anzeigen
Amazon GameLift Serversbietet eine zusätzliche Kontrollebene für Ihre Netzwerkverbindungen. Jede Containerflotte verfügt über eine Einstellung für eingehende Berechtigungen, mit der Sie den Zugriff auf jeden nach außen gerichteten Verbindungsport kontrollieren können. Sie könnten beispielsweise die Berechtigungen für alle Verbindungsports entfernen, um den Zugriff auf die Container der Flotte abzuschalten.
Sie können die Eingangsberechtigungen, Verbindungs- und Container-Ports einer Flotte aktualisieren.
Warnung
Wenn Sie ein benutzerdefiniertes InstanceConnectionPortRange oder angeben InstanceInboundPermissions, Amazon GameLift Servers wird keiner der Werte für Ihre Flotte mehr verwaltet. Sie müssen beide Felder angeben, um undefiniertes Verhalten zu vermeiden.
- Legen Sie die Portbereiche für Container fest
-
Konfigurieren Sie Container-Portbereiche als Teil jeder Containerdefinition. Dies ist ein erforderlicher Parameter für eine Containergruppendefinition. Sie müssen genügend Ports konfigurieren, um alle gleichzeitig laufenden Prozesse abzudecken, die externen Zugriff benötigen. Einige Container benötigen keine Ports.
Ihr Spieleserver-Container, auf dem Ihre Spieleserver laufen, benötigt einen Port für jeden gleichzeitig laufenden Spieleserverprozess. Der Spieleserverprozess lauscht auf dem zugewiesenen Port und meldet ihn an. Amazon GameLift Servers
- Stellen Sie die Portbereiche für die Verbindung ein
-
Konfigurieren Sie Ihre Containerflotte mit einer Reihe von Verbindungsports. Verbindungsports bieten externen Zugriff auf die Flotteninstanzen, auf denen Ihre Container ausgeführt werden. Amazon GameLift Serversweist Verbindungsports zu und ordnet sie bei Bedarf Container-Ports zu.
Amazon GameLift ServersBerechnet standardmäßig die Anzahl der Ports, die für alle Containergruppen erforderlich sind, und legt einen Portbereich fest, der diese Ports berücksichtigt. Es wird dringend empfohlen, Amazon GameLift Servers berechnete Werte zu verwenden, die aktualisiert werden, wenn Sie Aktualisierungen für eine Containergruppendefinition bereitstellen. Wenn Sie die Portbereiche der Verbindungen anpassen müssen, folgen Sie der folgenden Anleitung.
Wenn Sie eine Containerflotte erstellen, definieren Sie einen Portbereich für die Verbindung (siehe ContainerFleet:InstanceConnectionPortRange). Stellen Sie sicher, dass der Bereich über genügend Ports verfügt, um ihn jedem Containerhafen zuzuordnen, der für alle Container in beiden Containergruppen der Flotte definiert ist. Verwenden Sie die folgende Formel, um die mindestens benötigten Verbindungsports zu berechnen:
[Total number of container ports defined for containers in the game server container group] * [Number of game server container groups per instance] + [Total number of container ports defined for containers in the per-instance container group]Es hat sich bewährt, die Mindestanzahl an Verbindungsanschlüssen zu verdoppeln.
Anmerkung
Die Anzahl der Verbindungsports kann möglicherweise die Anzahl der Spielserver-Containergruppen pro Instanz einschränken. Wenn eine Flotte nur über genügend Verbindungsports für eine Spieleserver-Containergruppe pro Instance verfügt, Amazon GameLift Servers wird nur eine Spieleserver-Containergruppe bereitgestellt, auch wenn die Instances über genügend Rechenleistung für mehrere Spieleserver-Containergruppen verfügen.
- Stellen Sie die Berechtigungen für eingehenden Datenverkehr ein
Eingehende Berechtigungen steuern den externen Zugriff auf eine Containerflotte, indem sie angeben, welche Verbindungsports für eingehenden Verkehr geöffnet werden sollen. Sie können diese Einstellung verwenden, um den Netzwerkzugriff einer Flotte nach Bedarf ein- und auszuschalten.
Amazon GameLift ServersBerechnet standardmäßig die Anzahl der Ports, die für alle Containergruppen erforderlich sind, und legt einen Portbereich fest, der diesen entspricht. Es wird dringend empfohlen, Amazon GameLift Servers berechnete Werte zu verwenden, die aktualisiert werden, wenn Sie Aktualisierungen für eine Containergruppendefinition bereitstellen. Wenn Sie die Portbereiche der Verbindungen anpassen müssen, folgen Sie der folgenden Anleitung.
Wenn Sie eine Containerflotte erstellen, definieren Sie eine Reihe von Eingangsberechtigungen (siehe ContainerFleet:InstanceInboundPermissions). Die Ports für eingehende Berechtigungen sollten mit den Portbereichen der Flotte für Verbindungen übereinstimmen.
Anmerkung
Da die Container-Ports nach dem Zufallsprinzip aus dem ausgewählt werden InstanceConnectionPortRange, InstanceConnectionPortRange sollten alle Ports in durch Ports in abgedeckt werden, um sicherzustellen, dass Sitzungsverbindungen hergestellt werden können InstanceInboundPermissions
- Beispielszenario
Dieses Beispiel veranschaulicht, wie alle drei Netzwerkverbindungseigenschaften festgelegt werden.
-
Die Gameserver-Containergruppe unserer Flotte besteht aus einem Container, auf dem 1 Spielserverprozess ausgeführt wird.
In der Definition der Gameserver-Containergruppe legen wir den
PortConfigurationParameter für diesen Container wie folgt fest:"PortConfiguration": { "ContainerPortRanges": [ { "FromPort": 10, "ToPort": 20, "Protocol": "TCP"} ] } -
Unsere Flotte hat auch eine Containergruppe pro Instanz mit einem Container. Es hat einen Prozess, der Netzwerkzugriff benötigt. In der Container-Definition pro Instanz legen wir den
PortConfigurationParameter für diesen Container wie folgt fest:"PortConfiguration": { "ContainerPortRanges": [ { "FromPort": 25, "ToPort": 25, "Protocol": "TCP"} ] }
-
Unsere Flotte ist mit 20 Spielserver-Containergruppen pro Flotteninstanz konfiguriert. Angesichts dieser Informationen können wir die Formel verwenden, um die Anzahl der benötigten Verbindungsports zu berechnen:
-
Minimum: 21 Ports [1 Container-Anschlüsse für Spieleserver * 20 Spieleserver-Containergruppen pro Instanz + 1 Container-Port pro Instanz]
-
Bewährtes Verfahren: 42 Ports [Mindestanzahl Ports * 2]
Bei der Erstellung der Containerflotte legen wir den
InstanceConnectionPortRangeParameter wie folgt fest:"InstanceConnectionPortRange": { "FromPort": 1010, "ToPort": 1071 } -
-
Wir möchten den Zugriff auf alle verfügbaren Verbindungsports ermöglichen. Bei der Erstellung der Containerflotte setzen wir den
InstanceInboundPermissionsParameter wie folgt:"InstanceInboundPermissions": [ {"FromPort": 1010, "ToPort": 1071, "IpRange": "10.24.34.0/23", "Protocol": "TCP"} ]
-
Richten Sie Zustandsprüfungen für Container ein
Ein Container wird bei einem Terminalausfall automatisch neu gestartet und läuft nicht mehr. Wenn ein Container als unverzichtbar erachtet wird, fordert er die gesamte Containergruppe zum Neustart auf.
Alle Gameserver-Container werden automatisch als unverzichtbar eingestuft. Support-Container können als unverzichtbar eingestuft werden, aber sie müssen über einen Mechanismus zur Meldung des Zustands verfügen. Sie können auch Integritätsprüfungen für Support-Container einrichten, die nicht unbedingt erforderlich sind.
Sie können zusätzliche benutzerdefinierte Kriterien definieren, um den Zustand der Container zu messen, und diese Kriterien mithilfe einer Zustandsprüfung testen. Um eine Container-Integritätsprüfung einzurichten, können Sie sie in einem Docker-Container-Image oder in Ihrer Container-Definition definieren. Wenn Sie in der Container-Definition eine Integritätsprüfung einrichten, überschreibt diese alle Einstellungen im Container-Image.
Legen Sie die folgenden SupportContainerDefinition Eigenschaften für eine Container-Integritätsprüfung fest:
-
Command— Geben Sie einen Befehl ein, der einige Aspekte des Zustands des Containers überprüft. Sie entscheiden, anhand welcher Kriterien der Zustand gemessen werden soll. Der Befehl muss zu einem Ausgangswert von 1 (nicht gesund) oder 0 (gesund) führen. -
StartPeriod— Geben Sie eine anfängliche Verzögerung an, bis Fehler bei der Integritätsprüfung gezählt werden. Diese Verzögerung gibt dem Container Zeit, seine Prozesse zu booten. -
Interval— Entscheiden Sie, wie oft der Health-Check-Befehl ausgeführt werden soll. Wie schnell möchten Sie einen Containerausfall erkennen und beheben? -
Timeout— Entscheiden Sie, wie lange Sie auf Erfolg oder Misserfolg warten möchten, bevor Sie den Befehl Health Check erneut ausführen. Wie lange sollte es dauern, bis der Befehl zur Integritätsprüfung abgeschlossen ist? -
Retries— Wie oft sollte der Health-Check-Befehl wiederholt werden, bevor ein Fehler registriert wird?
Festlegen von Containerabhängigkeiten
Innerhalb jeder Containergruppe können Sie Abhängigkeiten zwischen Containern basierend auf dem Containerstatus festlegen. Eine Abhängigkeit wirkt sich auf den Status eines anderen Containers aus, wann der abhängige Container gestartet oder heruntergefahren werden kann.
Ein wichtiger Anwendungsfall für Abhängigkeiten ist das Erstellen von Start- und Shutdown-Sequenzen für die Containergruppe.
Sie möchten beispielsweise, dass Container A zuerst gestartet und erfolgreich abgeschlossen wird, bevor Container B und C gestartet werden. Um dies zu erreichen, erstellen Sie zunächst eine Abhängigkeit für Container B von Container A mit der Bedingung, dass Container A erfolgreich abgeschlossen werden muss. Erstellen Sie dann eine Abhängigkeit für Container C von Container A mit derselben Bedingung. Die Startsequenzen werden beim Herunterfahren in umgekehrter Reihenfolge ausgeführt.
Konfigurieren Sie eine Containerflotte
Wenn Sie eine Containerflotte erstellen, sollten Sie die folgenden Entscheidungspunkte berücksichtigen. Die meisten dieser Punkte hängen von Ihrer Container-Architektur und -Konfiguration ab.
- Entscheiden Sie, wo Sie Ihre Flotte einsetzen möchten
-
Im Allgemeinen solltest du deine Flotten geografisch in der Nähe deiner Spieler einsetzen, um die Latenz zu minimieren. Du kannst deine Containerflotte auf allen Geräten einsetzen, die AWS-Region das Amazon GameLift Servers unterstützen. Wenn du denselben Spielserver an weiteren geografischen Standorten einsetzen möchtest, kannst du der Flotte entfernte Standorte hinzufügen, einschließlich AWS-Regionen lokaler Zonen. Bei einer Flotte mit mehreren Standorten kannst du die Kapazität an jedem Flottenstandort unabhängig anpassen. Weitere Informationen zu den unterstützten Flottenstandorten finden Sie unterGameLift Amazon-Server Servicestandorte.
Erwägen Sie UDP-Ping-Beacons die Verwendung zur Erfassung von Netzwerklatenzdaten an verschiedenen geografischen Standorten, um die Latenz zwischen Spielergeräten und potenziellen Flottenstandorten vorherzusagen. Diese speziellen Endpunkte akzeptieren UDP-Nachrichten anstelle von herkömmlichen ICMP-Pings und bieten präzise Latenzmessungen, die Sie bei der Auswahl der optimalen Flottenstandorte unterstützen.
- Wählen Sie einen Instance-Typ und eine Instance-Größe für Ihre Flotte
-
Amazon GameLift Serversunterstützt eine Vielzahl von Amazon EC2-Instance-Typen, die alle für die Verwendung mit einer Containerflotte verfügbar sind. Verfügbarkeit und Preis der Instance-Typen variieren je nach Standort. Eine nach Standort gefilterte Liste der unterstützten Instanztypen finden Sie in der Amazon GameLift Servers Konsole (unter Ressourcen, Instanz- und Dienstkontingente).
Berücksichtigen Sie bei der Auswahl eines Instance-Typs zunächst die Instance-Familie. Instance-Familien bieten verschiedene Kombinationen von CPU-, Arbeitsspeicher-, Speicher- und Netzwerkfunktionen. Erfahren Sie mehr über EC2-Instance-Familien
. Innerhalb jeder Familie haben Sie eine Reihe von Instance-Größen zur Auswahl. Berücksichtigen Sie bei der Auswahl einer Instanzgröße die folgenden Aspekte: -
Was ist die Mindestinstanzgröße, die Ihre Arbeitslast unterstützen kann? Verwenden Sie diese Informationen, um alle Instance-Typen zu eliminieren, die zu klein sind.
-
Welche Instance-Typgrößen passen gut zu Ihrer Container-Architektur? Idealerweise sollten Sie eine Größe wählen, die mehrere Kopien Ihrer Spieleserver-Containergruppe aufnehmen kann, ohne dass Speicherplatz verschwendet wird.
-
Welche Skalierungsgranularität ist für dein Spiel sinnvoll? Die Skalierung der Flottenkapazität beinhaltet das Hinzufügen oder Entfernen von Instanzen, und jede Instanz steht für die Fähigkeit, eine bestimmte Anzahl von Spielsitzungen zu hosten. Überlegen Sie, wie viel Kapazität Sie mit jeder Instance hinzufügen oder entfernen möchten. Wenn die Nachfrage der Spieler von Minute zu Minute um Tausende schwankt, kann es sinnvoll sein, sehr große Instanzen zu verwenden, die Hunderte oder Tausende von Spielsitzungen hosten können. Im Gegensatz dazu bevorzugen Sie möglicherweise eine detailliertere Skalierungssteuerung mit kleineren Instanztypen.
-
Sind Kosteneinsparungen je nach Größe möglich? Möglicherweise stellen Sie fest, dass die Kosten für bestimmte Instance-Typen aufgrund der Verfügbarkeit je nach Standort variieren.
-
- Legen Sie weitere optionale Flotteneinstellungen fest
Bei der Konfiguration einer Containerflotte können Sie die folgenden optionalen Funktionen verwenden:
-
Richte deine Spieleserver für den Zugriff auf andere AWS Ressourcen ein. Siehe Verbinde deine GameLift Amazon-Server gehosteter Spieleserver auf anderen AWS Ressourcen.
-
Schütze Spielsitzungen mit aktiven Spielern davor, während eines Scale-Down-Events vorzeitig beendet zu werden.
-
Beschränke die Anzahl der Spielsitzungen, die eine Einzelperson innerhalb einer begrenzten Zeitspanne in der Flotte erstellen kann.
-