View a markdown version of this page

Valider et dépanner les déploiements de flottes de conteneurs - GameLift Serveurs Amazon

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Valider et dépanner les déploiements de flottes de conteneurs

Un déploiement de flotte, appelé déploiement dans cette rubrique, est le processus Amazon GameLift Servers utilisé pour remplacer les conteneurs des instances d'un parc de conteneurs par des conteneurs utilisant les nouveaux paramètres de la flotte, tels qu'une nouvelle version de définition de groupe de conteneurs. Au lieu de remplacer tous les conteneurs en cours d'exécution en une seule fois, un déploiement vérifie d'abord que les nouveaux conteneurs peuvent héberger des sessions de jeu, puis remplace progressivement les autres pour détecter les modifications indésirables avant qu'ils ne soient déployés sur l'ensemble de la flotte. Une flotte de conteneurs commence un déploiement dans trois situations :

  • Lorsque vous créez une flotte avec une définition de groupe de conteneurs. Si votre CreateContainerFleetdemande inclut une définition de groupe de conteneurs de serveurs de jeu, la création de flotte lance un déploiement qui installe vos conteneurs sur les nouvelles instances de la flotte. Si vous créez une flotte sans définition de groupe de conteneurs, aucune instance n'est déployée et la flotte n'est pas déployée tant que vous n'avez pas ajouté une définition de groupe de conteneurs de serveur de jeu.

  • Lorsque vous mettez à jour les définitions des groupes de conteneurs de la flotte ou d'autres paramètres de conteneurs. UpdateContainerFleetlance un déploiement lorsque la mise à jour modifie les conteneurs gérés par la flotte, par exemple lorsque vous spécifiez une nouvelle version de définition de groupe de conteneurs du serveur de jeu. Une mise à jour qui ne modifie aucun de ces paramètres ne démarre pas le déploiement. Pour plus d'informations sur les paramètres qui démarrent un déploiement, consultezMettre à jour un GameLift Serveurs Amazon flotte de conteneurs gérée.

  • Lorsque vous ajoutez des sites à une flotte active. Amazon GameLift Serverslance un déploiement sur les nouveaux sites en utilisant les définitions de groupes de conteneurs configurées pour la flotte. Les sites existants ne sont pas redéployés. Vous ne pouvez pas ajouter d'emplacements pendant qu'un autre déploiement est en cours.

Pour voir les détails d'un déploiement, appelez DescribeFleetDeployment, qui renvoie un FleetDeploymentobjet. Il inclut l'ID de déploiement, le statut et la configuration, ainsi que les versions de définition de groupe de conteneurs déployées et les versions de restauration. La DeploymentDetails.LatestDeploymentId propriété de la flotte indique son déploiement le plus récent.

Note

Les déploiements s'appliquent uniquement aux flottes de conteneurs gérées.

Configuration d'un déploiement

Un déploiement DeploymentConfigurationest l'ensemble de règles qui contrôlent le déroulement du déploiement au sein de la flotte et ce qui se passe en cas d'échec. Pour plus d'informations sur les valeurs et les valeurs par défaut de chaque paramètre, consultez DeploymentConfigurationla référence de l'Amazon GameLift ServersAPI.

Vous définissez la configuration de déploiement lorsque vous appelez UpdateContainerFleet ou modifiez le parc dans la console. CreateContainerFleetn'accepte pas de configuration de déploiement, de sorte que le premier déploiement d'une flotte utilise toujours les valeurs par défaut.

Comment ? GameLift Serveurs Amazon valide un déploiement

Lorsqu'un déploiement commence, il faut Amazon GameLift Servers d'abord valider les groupes de conteneurs du serveur de jeu dans chacun des emplacements de la flotte. Il fait fonctionner les nouveaux conteneurs sur une petite partie de la capacité existante de la flotte et vérifie qu'ils sont sains. Un nouveau groupe de conteneurs de serveurs de jeux est sain lorsqu'un conteneur de serveurs de jeux appelle ProcessReady() pour signaler qu'il est prêt à héberger des sessions de jeu.

Cette validation initiale vérifie les groupes de conteneurs du serveur de jeu. Si votre flotte utilise également une définition de groupe de conteneurs par instance, mettez Amazon GameLift Servers à jour ces groupes après avoir mis à jour les groupes de serveurs de jeu. Amazon GameLift Serversvérifie les groupes par instance séparément avant la fin du déploiement ; ils n'utilisent pas le ProcessReady() check du serveur de jeu.

La validation échoue si le nouveau groupe de conteneurs du serveur de jeu n'est pas rétabli avant l'Amazon GameLift Serversarrêt de l'attente. Pour plus d'informations sur les causes courantes et sur la manière de les étudier, voirDéboguer un déploiement altéré.

Si la validation échoue, Amazon GameLift Servers applique le déploiement ImpairmentStrategy et définit l'état du déploiement sur IMPAIRED (pourMAINTAIN) ou ROLLBACK_IN_PROGRESS (pourROLLBACK). Ce n'est qu'une fois la validation réussie dans un emplacement que les conteneurs restants qui y font fonctionner vos serveurs de jeu sont Amazon GameLift Servers remplacés.

Combien de temps prend la validation

La validation prend plus de temps lorsque la capacité Amazon GameLift Servers utilisée pour la validation héberge des sessions de jeu protégées. La flotte NewGameSessionProtectionPolicy détermine la protection par défaut pour les nouvelles sessions de jeu. Les valeurs valides sont NoProtection et FullProtection. Le déploiement ProtectionStrategy détermine si le déploiement respecte cette protection. Les valeurs valides sont WITH_PROTECTION et IGNORE_PROTECTION.

Lorsque la flotte est NewGameSessionProtectionPolicy configurée FullProtection et que le déploiement est ProtectionStrategy configuréWITH_PROTECTION, Amazon GameLift Servers le délai de validation est plus long pour la fin des sessions de jeu protégées. Avec toute autre combinaison, elle utilise un délai d'attente plus court.

Important

Si vos nouveaux conteneurs ne sont jamais sains et que la flotte les utilise dans le cadre FullProtection d'un WITH_PROTECTION déploiement, le déploiement peut rester en bon IN_PROGRESS état jusqu'à la fin des sessions de jeu protégées avant qu'un échec ne soit signalé. Pour obtenir un signal plus rapide, déployez de nouvelles images de conteneur IGNORE_PROTECTION pendant que vous les testez, ou annulez vous-même le déploiement. Pour obtenir des instructions sur l'annulation d'un déploiement, consultezAnnuler un déploiement en en démarrant un nouveau.

Si vous protégez des sessions de jeu individuelles avec UpdateGameSessionune flotte qui l'NewGameSessionProtectionPolicyestNoProtection, Amazon GameLift Servers cela ne prolonge pas son attente. Si ces sessions de jeu ne se terminent pas à temps, la validation peut échouer même si la nouvelle configuration fonctionne.

Suivez l'état du déploiement

Pour suivre un déploiement dans la Amazon GameLift Serversconsole, ouvrez le parc et choisissez l'onglet Déploiements. Pour le suivre à l'aide du AWS Command Line Interface (AWS CLI), list-fleet-deploymentsutilisez-le pour rechercher un ID de déploiement, puis describe-fleet-deploymentpour obtenir le détail d'un déploiement unique.

Pour plus d'informations sur les valeurs d'état de déploiement et sur la signification de chacune d'entre elles, reportez-vous DeploymentStatusà la référence des Amazon GameLift Servers API.

Déboguer un déploiement altéré

Un déploiement défaillant signifie que les nouveaux conteneurs ne sont pas redevenus sains lors de la validation : aucun conteneur de serveur de jeu appelé ProcessReady() auparavant n'Amazon GameLift Serversa cessé d'attendre, souvent parce qu'un conteneur est sorti ou n'a pas démarré. La cause se trouve généralement dans l'image du conteneur ou dans le serveur de jeu. Découvrez pourquoi le conteneur est sorti ou pourquoi le serveur de jeu n'a jamais indiqué qu'il était prêt.

Consultez le journal des événements de la flotte

Le journal des événements de la flotte enregistre ce qui Amazon GameLift Servers a été observé pendant le déploiement. Consultez-le dans l'onglet Événements de la flotte de la console, ou appelez-le describe-fleet-events. Les codes d'événement suivants sont pertinents en cas d'échec du déploiement :

  • GAME_SERVER_CONTAINER_GROUP_CRASHEDet PER_INSTANCE_CONTAINER_GROUP_CRASHED — un groupe de conteneurs est sorti ou n'a pas pu démarrer. Lorsqu'il Amazon GameLift Servers possède le code de sortie du conteneur, il inclut le code dans le message d'événement.

  • GAME_SERVER_CONTAINER_GROUP_REPLACED_UNHEALTHYet INSTANCE_REPLACED_UNHEALTHY — Amazon GameLift Servers a remplacé un groupe de conteneurs ou une instance qui n'est pas devenu sain. Ils peuvent se répéter sur tous les sites de la flotte en cas d'échec d'un déploiement.

  • SERVER_PROCESS_MISCONFIGURED_CONTAINER_PORT— un conteneur de serveur de jeu utilisait un port qui ne correspond pas aux ports déclarés dans la définition du groupe de conteneurs.

  • LOCATION_STATE_UPDATINGet LOCATION_STATE_ACTIVE — ils assurent le déploiement sur chaque site, ce qui vous permet d'aligner les autres événements sur le déploiement qui les a produits.

  • COMPUTE_LOG_UPLOAD_FAILED— la collecte de journaux pour un conteneur a cessé de fonctionner, de sorte que les journaux de ce conteneur sont peut-être incomplets ou manquants.

Lisez les journaux des conteneurs

Une flotte de conteneurs LogConfiguration définit où Amazon GameLift Servers envoie la sortie standard de chaque conteneur : CLOUDWATCH (par défaut)S3, ouNONE. Conservez-le réglé de S3 manière à CLOUDWATCH ce que la sortie du conteneur soit disponible en cas d'échec d'un déploiement. Lorsqu'un conteneur tombe en panne avant que votre serveur de jeu ne démarre, par exemple parce que le point d'entrée du conteneur fait référence à un fichier qui ne figure pas dans l'image, cette sortie est le seul enregistrement de l'échec. Pour plus d'informations sur la journalisation des conteneurs, consultezDifférences en matière de journalisation : flottes EC2 gérées et flottes de conteneurs.

Connect à un conteneur endommagé

Si vous avez effectué un déploiement avec la stratégie d'MAINTAINinvalidité, vous pouvez vous connecter à un conteneur qui l'Amazon GameLift Serversa conservé et l'inspecter directement. Utilisez-le pour vérifier les autorisations des fichiers, vérifier quels fichiers l'image contient réellement et exécuter manuellement le fichier exécutable du serveur de jeu pour voir ce qu'il indique. Pour obtenir des instructions sur la connexion à un conteneur, reportez-vous àConnect aux conteneurs.

Problèmes de déploiement courants

Les symptômes suivants sont courants en cas d'échec ou de lenteur des déploiements, ainsi que leurs causes habituelles.

Le conteneur démarre et sort immédiatement, encore et encore.

Si le point d'entrée du conteneur ne peut pas fonctionner, vérifiez les points suivants :

  • Vérifiez que le script de lancement et le fichier exécutable du serveur de jeu sont marqués comme exécutables sur l'image.

  • Vérifiez que l'architecture du processeur de l'exécutable correspond au type d'instance du parc.

  • Vérifiez que l'image contient l'interpréteur et les bibliothèques partagées dont l'exécutable a besoin.

Pour plus d'informations sur la création d'une image Amazon GameLift Servers pouvant être exécutée, consultezCréez une image de conteneur pour GameLift Serveurs Amazon.

Le déploiement est lent mais rien n'échoue.

Un WITH_PROTECTION déploiement attend la fin des sessions de jeu protégées, à la fois pendant la validation et lors du remplacement des conteneurs de la flotte. Vérifiez les sessions de jeu actives de la flotte avant de considérer un long déploiement comme un échec. Pour plus d'informations sur les temps d'attente pour la validation, consultezCombien de temps prend la validation.

Annuler un déploiement en en démarrant un nouveau

Pour annuler un déploiement et rétablir la configuration précédente du parc, appelez UpdateContainerFleet ou modifiez le parc dans la console pour démarrer un nouveau déploiement qui annule les modifications. Le cas le plus courant est celui d'une nouvelle version de définition de groupe de conteneurs, que la procédure suivante annule. Amazon GameLift Serversenregistre les versions utilisées par le parc lors de sa dernière activité lors du déploiement en coursRollbackPerInstanceBinaryArn, afin que RollbackGameServerBinaryArn vous n'ayez pas à déterminer à quelle version revenir. Si le déploiement a également modifié d'autres paramètres, tels que la configuration du journal ou la plage de ports de connexion, redéfinissez-les dans la même UpdateContainerFleet demande.

Avant de commencer, configurez le AWS CLI pour votre compte et identifiez le domicile de la flotte Région AWS. Cette procédure nécessite un déploiement en cours et une version précédente de définition de groupe de conteneurs pour être restaurée. list-fleet-deploymentsUtilisez-le pour trouver l'ID de déploiement. Pour obtenir des instructions, consultez Suivez l'état du déploiement.

Dans les commandes, remplacez-le fleet-id par l'identifiant de votre flotte, deployment-id par l'identifiant de déploiement en cours et fleet-home-region par la page d'accueil Région AWS de la flotte.

Pour remplacer un déploiement en cours par une version de conteneur précédente (AWS CLI)
  1. Utilisez la AWS CLI commande suivante pour obtenir la version à laquelle vous souhaitez revenir :

    aws gamelift describe-fleet-deployment \ --fleet-id fleet-id \ --deployment-id deployment-id \ --region fleet-home-region

    Dans la réponse, RollbackGameServerBinaryArn contient la version de définition du groupe de conteneurs du serveur de jeu utilisée par la flotte lors de sa dernière activité. Si la flotte possède un groupe de conteneurs par instance, RollbackPerInstanceBinaryArn contient cette version.

  2. Utilisez la AWS CLI commande suivante pour démarrer un nouveau déploiement avec cette version. Remplacez rollback-game-server-cgd-arn par la RollbackGameServerBinaryArn valeur de l'étape 1. Si la flotte possède un groupe de conteneurs par instance, transmettez également --per-instance-container-group-definition-name la RollbackPerInstanceBinaryArn valeur.

    aws gamelift update-container-fleet \ --fleet-id fleet-id \ --game-server-container-group-definition-name rollback-game-server-cgd-arn \ --region fleet-home-region
  3. Vérifiez que le déploiement précédent indique CANCELLED l'état et que le nouveau déploiement COMPLETE indique une fois terminé.

Note

L'annulation d'un déploiement de cette façon n'est pas un arrêt instantané. Le nouveau déploiement suit les mêmes étapes que les autres, y compris la validation, de sorte que la flotte met un certain temps à s'installer. Une version déjà exécutée avec succès par le parc est généralement validée rapidement.

Pour plus d’informations, consultez les rubriques suivantes.