

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.

# Entdecken Sie Container auf einer Containerflotte
<a name="containers-discovery"></a>

In einer Amazon GameLift Servers Containerflotte kann jede Instance mehrere Container ausführen. Sie können beispielsweise mehrere Repliken Ihrer Spielserver-Containergruppe ausführen. Sie können auch eine Containergruppe pro Instanz ausführen, die gemeinsam genutzte Dienste für die gesamte Instanz bereitstellt.

Der Container-Discovery-Server ermöglicht es Ihren Gameserver-Prozessen, die anderen Container zu erkennen, die auf derselben Instance laufen. Container können dann über Container-Gruppendefinitionen hinweg über das lokale Netzwerk der Instance miteinander kommunizieren.

Der Discovery-Server ist ein einfacher HTTP-Dienst. Amazon GameLift Serversführt ihn lokal auf jeder Containerflotteninstanz aus. Der Dienst stellt die folgenden Netzwerkinformationen für jeden Container bereit, der auf dieser Instance ausgeführt wird:
+ Der Containername, den Sie in der Container-Gruppendefinition definieren.
+ Die eindeutige Kennung des Containers.
+ Die lokale IP-Adresse des Containers auf der Instance.
+ Der Container-Gruppentyp, entweder `GAME_SERVER` (ein Replikat der Spielserver-Containergruppe) oder `PER_INSTANCE` (die Containergruppe pro Instanz).

**Anmerkung**  
Der Container Discovery Server ist nur auf verwalteten Containerflotten verfügbar.

## Rufen Sie Container-Netzwerkinformationen ab
<a name="containers-discovery-retrieve"></a>

Sie können Container-Netzwerkinformationen auf zwei Arten abrufen: von einem Gameserver-Prozess mit dem Amazon GameLift Servers Server-SDK oder von einem beliebigen Container, indem Sie den Discovery-Server direkt über HTTP aufrufen.

### Rufen Sie Container-Informationen mithilfe des Server-SDK ab
<a name="containers-discovery-retrieve-sdk"></a>

Wenn dein Gameserver-Prozess das Amazon GameLift Servers Server-SDK verwendet, rufe die `ListContainersNetworkInfo()` Aktion auf, um Container-Netzwerkinformationen abzurufen. Das Server-SDK lokalisiert den Discovery-Server und stellt die Anfrage für dich. Die Aktion gibt die Netzwerkinformationen für jeden Container zurück, der auf derselben Instance ausgeführt wird. Bei jedem anderen Compute-Typ gibt die Aktion einen Fehler vom Typ „Nicht unterstützter Compute“ zurück.

`ListContainersNetworkInfo()`ist in der Server-SDK-Version 5.5 oder höher für die folgenden Sprachen verfügbar:
+ [ListContainersNetworkInfo()](integration-server-sdk-go-actions.md#integration-server-sdk-go-listcontainersnetworkinfo)(Gehe)
+ [ListContainersNetworkInfo()](integration-server-sdk5-cpp-actions.md#integration-server-sdk5-cpp-listcontainersnetworkinfo)(C \+\+)
+ [ListContainersNetworkInfo()](integration-server-sdk5-csharp-actions.md#integration-server-sdk5-csharp-listcontainersnetworkinfo)(C\#)

Die Aktion ist auch in den Amazon GameLift Servers Plugins für Unreal Engine und Unity verfügbar.

### Rufen Sie Container-Informationen ab, indem Sie den Discovery-Server direkt aufrufen
<a name="containers-discovery-retrieve-direct"></a>

Einige Container verwenden das Server-SDK nicht, z. B. Container pro Instanz. Diese Container rufen den Discovery-Server direkt über HTTP auf. Amazon GameLift Serverssetzt die `GAMELIFT_CONTAINER_DISCOVERY_SERVER_ENDPOINT_V1` Umgebungsvariable in diesen Containern voreingestellt. Diese Variable enthält die Adresse des Discovery-Servers, einschließlich des API-Versionspfads, und sie ist sowohl in den Definitionen der Spieleserver- als auch in der Containergruppe pro Instanz festgelegt.

Um Informationen zum Container-Netzwerk abzurufen, senden Sie eine `GET` HTTP-Anfrage an diesen Endpunkt. Im folgenden Beispiel wird verwende `curl`:

```
curl "$GAMELIFT_CONTAINER_DISCOVERY_SERVER_ENDPOINT_V1"
```

Der Discovery-Server gibt ein JSON-Array mit einem Eintrag für jeden Container zurück, der auf der Instance ausgeführt wird:

```
[
  {
    "containerName": "game-server",
    "ipAddress": "172.17.0.3",
    "containerId": "b896159563df43736e5e93ad0547a24fa572648d55b70c70747642afca398b18",
    "containerGroupType": "GAME_SERVER"
  },
  {
    "containerName": "per-instance",
    "ipAddress": "172.17.0.4",
    "containerId": "3c239ae037aec28bb42212ffa2b9e02524c0c4c361db9bc31dd4c5aecc0b7943",
    "containerGroupType": "PER_INSTANCE"
  }
]
```

## Grenzwerte für Anforderungsraten
<a name="containers-discovery-throttling"></a>

Der Discovery-Server begrenzt jeden Container auf der Instance auf 10 Anfragen pro Sekunde. Er drosselt Anfragen, die dieses Limit überschreiten, und gibt einen Fehler zurück. Um dieses Limit einzuhalten, fragen Sie den Discovery-Server einmal beim Start ab. Alternativ können Sie ihn nur abfragen, wenn Sie Ihre Ansicht der Instanz aktualisieren müssen. Zwischenspeichern Sie die Ergebnisse in Ihrem Container und verwenden Sie die zwischengespeicherten Werte erneut, anstatt den Discovery-Server regelmäßig abzufragen.

Aktualisieren Sie Ihren Cache regelmäßig, um ihn auf dem neuesten Stand zu halten. Die lokale IP-Adresse eines Containers kann sich ändern, wenn der Container abstürzt oder beendet wird (z. B. wenn seine Spielsitzung endet).

## Beispiel: Sammeln von Metriken aus Spieleserver-Containern
<a name="containers-discovery-example"></a>

Der Discovery-Server wird häufig verwendet, um Telemetriedaten zwischen Containern auf derselben Instance zu senden, ohne das lokale Netzwerk der Instanz zu verlassen. Stellen Sie sich eine Flotte vor, auf der mehrere Spieleserver-Container (`GAME_SERVER`) und ein einziger Container pro Instanz (`PER_INSTANCE`) laufen. Der Container pro Instanz führt einen Metrik-Collector aus, den alle Spieleserver auf der Instance gemeinsam nutzen.

Sie können die Erfassung von Metriken entweder mit einem Push-Modell oder einem Pull-Modell implementieren:
+ **Push (Ausgabe von Metriken)** — Beim Start ruft jeder Spielserver-Container auf`ListContainersNetworkInfo()`. Der Container findet den Eintrag mit dem `PER_INSTANCE` Container-Gruppentyp. Anschließend liest er die lokale IP-Adresse aus diesem Eintrag. Der Spieleserver sendet seine Messwerte über das lokale Netzwerk der Instanz direkt an den Collector pro Instanz.
+ **Pull (Metrik-Scraping)** — Der umgekehrte Ansatz funktioniert auch. Der Container pro Instanz verwendet das Server-SDK nicht und ruft daher den Discovery-Server-Endpunkt direkt auf. Es findet die IP-Adressen aller `GAME_SERVER` Container auf der Instance. Anschließend wird ein Metrik-Endpunkt durchsucht, den jeder Spieleserver-Container über das lokale Netzwerk verfügbar macht.

In beiden Fällen bleibt die Kommunikation im lokalen Netzwerk der Instanz. Jeder Container fragt den Discovery-Server nur gelegentlich und nicht regelmäßig ab.

## Verwandte Themen
<a name="containers-discovery-related"></a>
+ [Füge Amazon GameLift Servers es deinem Spieleserver mit dem Server-SDK hinzu](gamelift-sdk-server-api.md)
+ [Erstellen Sie eine Containergruppendefinition für eine Amazon GameLift Servers Containerflotte](containers-create-groups.md)
+ [Passen Sie eine Amazon GameLift Servers Containerflotte an](containers-design-fleet.md)
+ [So funktionieren Container in Amazon GameLift Servers](containers-howitworks.md)