View a markdown version of this page

Convalida e risolvi i problemi delle implementazioni di flotte di container - GameLift Server Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Convalida e risolvi i problemi delle implementazioni di flotte di container

L'implementazione di una flotta, denominata implementazione in questo argomento, è il processo che Amazon GameLift Servers utilizza per sostituire i container sulle istanze di una flotta di container con contenitori che utilizzano le nuove impostazioni della flotta, ad esempio una nuova versione di definizione del gruppo di contenitori. Invece di sostituire tutti i container funzionanti contemporaneamente, una distribuzione verifica innanzitutto che i nuovi container siano in grado di ospitare sessioni di gioco e poi sostituisce gradualmente gli altri per individuare eventuali modifiche errate prima che vengano distribuite sull'intera flotta. Una flotta di container avvia un'implementazione in tre situazioni:

  • Quando si crea una flotta con una definizione di gruppo di container. Se la tua CreateContainerFleetrichiesta include una definizione di gruppo di container per server di gioco, la creazione della flotta avvia una distribuzione che installa i container sulle nuove istanze della flotta. Se crei una flotta senza una definizione di gruppo di container, non viene distribuita alcuna istanza e il parco macchine non viene distribuito finché non aggiungi una definizione di gruppo di contenitori per server di gioco.

  • Quando aggiorni le definizioni dei gruppi di container della flotta o altre impostazioni di container. UpdateContainerFleetavvia una distribuzione quando l'aggiornamento modifica i contenitori utilizzati dalla flotta, ad esempio quando specifichi una nuova versione della definizione del gruppo di contenitori del server di gioco. Un aggiornamento che non modifica nessuna di queste impostazioni non avvia una distribuzione. Per informazioni su quali impostazioni avviano una distribuzione, consultaAggiorna un GameLift Server Amazon flotta di container gestita.

  • Quando aggiungi sedi a un parco veicoli attivo. Amazon GameLift Serversavvia una distribuzione nelle nuove sedi utilizzando le definizioni dei gruppi di container configurate della flotta. Le sedi esistenti non vengono ridistribuite. Non puoi aggiungere sedi mentre è in corso un'altra distribuzione.

Per visualizzare i dettagli di una distribuzione, chiama DescribeFleetDeployment, che restituisce un FleetDeploymentoggetto. Include l'ID di distribuzione, lo stato e la configurazione, insieme alle versioni di definizione del gruppo di contenitori distribuite e alle versioni di rollback. La DeploymentDetails.LatestDeploymentId proprietà della flotta identifica la sua implementazione più recente.

Nota

Le implementazioni si applicano solo alle flotte di container gestite.

Configurare una distribuzione

L'implementazione DeploymentConfigurationè l'insieme di regole che controllano come procede l'implementazione in tutta la flotta e cosa succede in caso di fallimento. Per informazioni sui valori e le impostazioni predefinite di ciascuna impostazione, consulta l'Amazon GameLift ServersAPI DeploymentConfigurationReference.

La configurazione di distribuzione viene impostata quando si chiama UpdateContainerFleet o si modifica la flotta nella console. CreateContainerFleetnon accetta una configurazione di distribuzione, quindi la prima distribuzione di un parco veicoli utilizza sempre i valori predefiniti.

In che modo GameLift Server Amazon convalida una distribuzione

All'avvio di una distribuzione, convalida Amazon GameLift Servers innanzitutto i gruppi di container dei server di gioco in ciascuna delle sedi della flotta. Fa funzionare i nuovi container su una piccola parte della capacità esistente della flotta e verifica che siano integri. Un nuovo gruppo di contenitori di server di gioco è integro quando un contenitore di server di gioco chiama ProcessReady() per segnalare che è pronto per ospitare sessioni di gioco.

Questa convalida iniziale verifica i gruppi di contenitori dei server di gioco. Se la tua flotta utilizza anche una definizione di gruppo di container per istanza, Amazon GameLift Servers aggiorna tali gruppi dopo aver aggiornato i gruppi di server di gioco. Amazon GameLift Serverscontrolla separatamente i gruppi per istanza prima del completamento della distribuzione; non utilizzano l'assegno del server di gioco. ProcessReady()

La convalida fallisce se un nuovo gruppo di contenitori di server di gioco non diventa integro prima di interrompere l'attesa. Amazon GameLift Servers Per informazioni sui motivi più comuni e su come esaminarli, consultaEsegui il debug di una distribuzione compromessa.

Se la convalida fallisce, Amazon GameLift Servers applica la distribuzione ImpairmentStrategy e imposta lo stato della distribuzione su IMPAIRED (perMAINTAIN) o ROLLBACK_IN_PROGRESS (perROLLBACK). Solo dopo che la convalida ha avuto successo in una posizione, Amazon GameLift Servers sostituisce i contenitori rimanenti su cui sono installati i server di gioco.

Quanto tempo richiede la convalida

La convalida richiede più tempo quando la capacità Amazon GameLift Servers utilizzata per la convalida ospita sessioni di gioco protette. La flotta NewGameSessionProtectionPolicy determina la protezione predefinita per le nuove sessioni di gioco. I valori validi sono NoProtection e FullProtection. Lo schieramento ProtectionStrategy determina se lo schieramento rispetta tale protezione. I valori validi sono WITH_PROTECTION e IGNORE_PROTECTION.

Quando la flotta è NewGameSessionProtectionPolicy impostata FullProtection e la distribuzione è ProtectionStrategy impostataWITH_PROTECTION, Amazon GameLift Servers consente un timeout di convalida più lungo per terminare le sessioni di gioco protette. Con qualsiasi altra combinazione, utilizza un timeout più breve.

Importante

Se i nuovi container non sono mai funzionanti e la flotta si esaurisce durante una WITH_PROTECTION distribuzione, IN_PROGRESS lo stato dell'installazione può rimanere invariato fino al termine delle sessioni di gioco protette prima che venga segnalato un guasto. FullProtection Per ricevere un segnale più veloce, distribuisci nuove immagini di container IGNORE_PROTECTION mentre le stai testando oppure annulla tu stesso l'implementazione. Per istruzioni sull'annullamento di una distribuzione, consulta. Annullare una distribuzione avviandone una nuova

Se proteggi le sessioni di gioco individuali con UpdateGameSessionuna flotta che lo NewGameSessionProtectionPolicy èNoProtection, Amazon GameLift Servers non prolunga l'attesa. Se tali sessioni di gioco non terminano in tempo, la convalida può fallire anche se la nuova configurazione funziona.

Tieni traccia dello stato di implementazione

Per tenere traccia di una distribuzione nella Amazon GameLift Serversconsole, apri la flotta e scegli la scheda Implementazioni. Per tenerne traccia con AWS Command Line Interface (AWS CLI), usa list-fleet-deploymentsper trovare un ID di distribuzione, quindi describe-fleet-deploymentper i dettagli di una singola distribuzione.

Per informazioni sui valori dello stato di implementazione e sul significato di ciascuno di essi, DeploymentStatusconsulta l'Amazon GameLift ServersAPI Reference.

Esegui il debug di una distribuzione compromessa

Un'implementazione compromessa significa che i nuovi contenitori non sono diventati integri durante la convalida: nessun container del server di gioco chiamato ProcessReady() prima ha Amazon GameLift Servers smesso di attendere, spesso perché un contenitore è uscito o non è riuscito ad avviarsi. La causa è in genere nell'immagine del contenitore o nel server di gioco. Scopri perché il container è uscito o perché il server di gioco non è mai stato segnalato come pronto.

Consulta il registro degli eventi della flotta

Il registro degli eventi della flotta registra ciò che è Amazon GameLift Servers stato osservato durante l'implementazione. Visualizzalo nella scheda Eventi della flotta nella console o chiama describe-fleet-events. I seguenti codici evento sono rilevanti per una distribuzione non riuscita:

  • GAME_SERVER_CONTAINER_GROUP_CRASHEDe PER_INSTANCE_CONTAINER_GROUP_CRASHED — un gruppo di contenitori è uscito o non è stato avviato. Quando Amazon GameLift Servers ha il codice di uscita del contenitore, lo include nel messaggio dell'evento.

  • GAME_SERVER_CONTAINER_GROUP_REPLACED_UNHEALTHYe INSTANCE_REPLACED_UNHEALTHY — Amazon GameLift Servers ha sostituito un gruppo di contenitori o un'istanza che non era ancora integra. Questi possono ripetersi in tutte le sedi della flotta quando un'implementazione fallisce.

  • SERVER_PROCESS_MISCONFIGURED_CONTAINER_PORT— un contenitore di server di gioco utilizzava una porta che non corrisponde alle porte dichiarate nella definizione del gruppo di contenitori.

  • LOCATION_STATE_UPDATINGe LOCATION_STATE_ACTIVE — queste includono tra parentesi la distribuzione in ogni località, il che ti aiuta a collegare altri eventi alla distribuzione che li ha prodotti.

  • COMPUTE_LOG_UPLOAD_FAILED— la raccolta di log per un contenitore ha smesso di funzionare, quindi i log di quel contenitore potrebbero essere incompleti o mancanti.

Leggi i log del contenitore

Una flotta di container LogConfiguration imposta dove Amazon GameLift Servers invia lo standard output di ogni container: CLOUDWATCH (impostazione predefinita)S3, oNONE. Mantienilo impostato su CLOUDWATCH o S3 in modo che l'output del contenitore sia disponibile quando un'implementazione fallisce. Quando un container si guasta prima che il server di gioco inizi a funzionare, ad esempio perché il punto di ingresso del contenitore si riferisce a un file che non è nell'immagine, questo output è l'unico record dell'errore. Per informazioni sulla registrazione dei container, consultaDifferenze di registrazione: flotte gestite EC2 e flotte container.

Connect a un contenitore danneggiato

Se hai utilizzato la strategia di MAINTAIN riduzione delle emissioni, puoi connetterti a un container che lo Amazon GameLift Servers custodisce e lo ispeziona direttamente. Usalo per controllare le autorizzazioni dei file, confermare quali file contiene effettivamente l'immagine ed eseguire manualmente l'eseguibile del server di gioco per vedere cosa riporta. Per istruzioni sulla connessione a un contenitore, consultaConnect ai container.

Problemi di distribuzione comuni

I seguenti sintomi sono comuni nelle implementazioni lente o fallite, oltre alle loro cause usuali.

Il container si avvia ed esce immediatamente, più e più volte.

Se il punto di ingresso del contenitore non può essere eseguito, controlla quanto segue:

  • Verifica che lo script di avvio e l'eseguibile del server di gioco siano contrassegnati come eseguibili nell'immagine.

  • Verifica che l'architettura della CPU dell'eseguibile corrisponda al tipo di istanza del parco istanze del parco istanze.

  • Verifica che l'immagine contenga l'interprete e le librerie condivise necessarie all'eseguibile.

Per informazioni sulla creazione di un'immagine Amazon GameLift Servers eseguibile, consultaCrea un'immagine del contenitore per GameLift Server Amazon.

La distribuzione è lenta ma nulla fallisce.

Una WITH_PROTECTION distribuzione attende il termine delle sessioni di gioco protette, sia durante la convalida che quando sostituisce i container della flotta. Controlla le sessioni di gioco attive della flotta prima di considerare un dispiegamento prolungato come un fallimento. Per informazioni sui tempi di attesa per la convalida, consultaQuanto tempo richiede la convalida.

Annullare una distribuzione avviandone una nuova

Per annullare una distribuzione e riportare il parco macchine alla configurazione precedente, chiama UpdateContainerFleet o modifica il parco macchine nella console per avviare una nuova distribuzione che annulli le modifiche. Il caso più comune è una nuova versione della definizione del gruppo di contenitori, che viene ripristinata con la procedura seguente. Amazon GameLift Serversregistra le versioni utilizzate dalla flotta quando è stata attiva l'ultima volta nella distribuzione in corsoRollbackPerInstanceBinaryArn, in modo da non dover decidere a quale versione tornare. RollbackGameServerBinaryArn Se la distribuzione ha modificato anche altre impostazioni, come la configurazione del registro o l'intervallo delle porte di connessione, reimpostale nella stessa UpdateContainerFleet richiesta.

Prima di iniziare, configuralo AWS CLI per il tuo account e identifica la sede della flotta Regione AWS. Questa procedura richiede una distribuzione in corso e una versione precedente della definizione del gruppo di contenitori per il ripristino. Utilizzare list-fleet-deployments per trovare l'ID di distribuzione. Per istruzioni, consulta l’argomento Tieni traccia dello stato di implementazione.

Nei comandi, sostituiscilo fleet-id con l'ID della flotta, deployment-id con l'ID di implementazione in corso e fleet-home-region con la casa Regione AWS della flotta.

Per sostituire una distribuzione in corso con una versione precedente del contenitore (AWS CLI)
  1. Usa il AWS CLI comando seguente per ottenere la versione a cui tornare:

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

    Nella risposta, RollbackGameServerBinaryArn contiene la versione della definizione del gruppo di contenitori del server di gioco utilizzata dalla flotta l'ultima volta che è stata attiva. Se la flotta ha un gruppo di container per istanza, RollbackPerInstanceBinaryArn contiene quella versione.

  2. Usa il AWS CLI comando seguente per avviare una nuova distribuzione con quella versione. Sostituisci rollback-game-server-cgd-arn con il RollbackGameServerBinaryArn valore del passaggio 1. Se la flotta ha un gruppo di container per istanza, inserite anche --per-instance-container-group-definition-name il RollbackPerInstanceBinaryArn valore.

    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. Verifica che la distribuzione precedente riporti CANCELLED lo stato e che la nuova distribuzione riporti al COMPLETE termine.

Nota

L'annullamento di una distribuzione in questo modo non è un arresto immediato. La nuova implementazione segue le stesse fasi di tutte le altre, inclusa la convalida, quindi la flotta impiega un po' di tempo per stabilizzarsi. Una versione precedentemente utilizzata con successo dal parco macchine di solito viene convalidata rapidamente.

Per ulteriori informazioni, consulta i seguenti argomenti.