

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
<a name="containers-deployment-validation"></a>

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 [CreateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateContainerFleet.html)richiesta 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.** [UpdateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateContainerFleet.html)avvia 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, consulta[Aggiorna un GameLift Server Amazon flotta di container gestita](containers-update-fleet.md).
+ **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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeFleetDeployment.html), che restituisce un [FleetDeployment](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html)oggetto. 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
<a name="containers-deployment-validation-config"></a>

L'implementazione [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)è 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 [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)Reference.*

La configurazione di distribuzione viene impostata quando si chiama `UpdateContainerFleet` o si modifica la flotta nella console. `CreateContainerFleet`non 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
<a name="containers-deployment-validation-howitworks"></a>

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, consulta[Esegui il debug di una distribuzione compromessa](#containers-deployment-validation-debug).

Se la convalida fallisce, Amazon GameLift Servers applica la distribuzione `ImpairmentStrategy` e imposta lo stato della distribuzione su `IMPAIRED` (per`MAINTAIN`) o `ROLLBACK_IN_PROGRESS` (per`ROLLBACK`). 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
<a name="containers-deployment-validation-timeouts"></a>

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` impostata`WITH_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](#containers-deployment-validation-cancel)  
Se proteggi le sessioni di gioco individuali con [UpdateGameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateGameSession.html)una 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
<a name="containers-deployment-validation-status"></a>

Per tenere traccia di una distribuzione nella [Amazon GameLift Serversconsole](https://console.aws.amazon.com/gamelift/), apri la flotta e scegli la scheda **Implementazioni.** Per tenerne traccia con AWS Command Line Interface (AWS CLI), usa [list-fleet-deployments](https://docs.aws.amazon.com/cli/latest/reference/gamelift/list-fleet-deployments.html)per trovare un ID di distribuzione, quindi [describe-fleet-deployment](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-deployment.html)per i dettagli di una singola distribuzione.

Per informazioni sui valori dello stato di implementazione e sul significato di ciascuno di essi, [DeploymentStatus](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html#gameliftservers-Type-FleetDeployment-DeploymentStatus)consulta l'*Amazon GameLift ServersAPI Reference*.

## Esegui il debug di una distribuzione compromessa
<a name="containers-deployment-validation-debug"></a>

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
<a name="containers-deployment-validation-debug-events"></a>

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](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-events.html). I seguenti codici evento sono rilevanti per una distribuzione non riuscita:
+ `GAME_SERVER_CONTAINER_GROUP_CRASHED`e `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_UNHEALTHY`e `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_UPDATING`e `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
<a name="containers-deployment-validation-debug-logs"></a>

Una flotta di container `LogConfiguration` imposta dove Amazon GameLift Servers invia lo standard output di ogni container: `CLOUDWATCH` (impostazione predefinita)`S3`, o`NONE`. 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, consulta[Differenze di registrazione: flotte gestite EC2 e flotte container](logging-server-messages-ec2-vs-containers.md).

### Connect a un contenitore danneggiato
<a name="containers-deployment-validation-debug-connect"></a>

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, consulta[Connect ai container](containers-remote-access.md).

### Problemi di distribuzione comuni
<a name="containers-deployment-validation-debug-causes"></a>

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, consulta[Crea un'immagine del contenitore per GameLift Server Amazon](containers-prepare-images.md).

**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, consulta[Quanto tempo richiede la convalida](#containers-deployment-validation-timeouts).

## Annullare una distribuzione avviandone una nuova
<a name="containers-deployment-validation-cancel"></a>

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 corso`RollbackPerInstanceBinaryArn`, 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](#containers-deployment-validation-status).

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.

1. 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}}
   ```

1. 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.

## Argomenti correlati
<a name="containers-deployment-validation-related"></a>

Per ulteriori informazioni, consulta i seguenti argomenti.
+ [Aggiorna un GameLift Server Amazon flotta di container gestita](containers-update-fleet.md)
+ [Connect ai container](containers-remote-access.md)
+ [Crea un'immagine del contenitore per GameLift Server Amazon](containers-prepare-images.md)
+ [Differenze di registrazione: flotte gestite EC2 e flotte container](logging-server-messages-ec2-vs-containers.md)
+ [Monitoraggio GameLift Server Amazon con Amazon CloudWatch](monitoring-cloudwatch.md)
+ [Come funzionano i contenitori in GameLift Server Amazon](containers-howitworks.md)