View a markdown version of this page

Come funzionano i contenitori in GameLift Server Amazon - 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à.

Come funzionano i contenitori in GameLift Server Amazon

Amazon GameLift ServersLe flotte di container sono progettate per offrire flessibilità nelle modalità di distribuzione e scalabilità delle applicazioni containerizzate. Utilizza Amazon Elastic Container Service (Amazon ECS) per gestire la distribuzione e l'esecuzione delle attività per le tue flotte. Amazon GameLift Servers Questo argomento descrive gli elementi strutturali di base per l'esecuzione dei container su una flotta Amazon GameLift Servers gestita, illustra le architetture comuni e delinea alcuni concetti fondamentali.

Velocizza l'onboarding con questi strumenti per i container gestiti:
  • Lo starter kit per container semplifica l'integrazione e la configurazione della flotta. Aggiunge funzionalità essenziali per la gestione delle sessioni di gioco al server di gioco e utilizza modelli preconfigurati per creare una flotta di container e una pipeline di distribuzione automatica per il server di gioco. Dopo l'implementazione, utilizza la Amazon GameLift Servers console e gli strumenti API per monitorare le prestazioni della flotta, gestire le sessioni di gioco e analizzare le metriche.

  • Per gli sviluppatori di Unreal Engine o Unity, usa i Amazon GameLift Servers plugin per integrare il tuo server di gioco e creare una flotta di container dall'interno dell'ambiente di sviluppo del tuo motore di gioco. I flussi di lavoro guidati del plugin ti aiutano a creare una soluzione rapida e semplice con hosting basato su cloud utilizzando contenitori gestiti. Quindi sfrutta questa base per creare una soluzione di hosting personalizzata per il tuo gioco.

Componenti della flotta di container

Parco istanze

Una flotta di container è una raccolta di istanze Amazon EC2 per ospitare i tuoi server di gioco containerizzati. Queste istanze sono gestite da per tuo conto. Amazon GameLift Servers Quando crei una flotta, configuri il modo in cui l'architettura del container con il software del server di gioco viene distribuita su ciascuna istanza della flotta. Puoi creare una flotta di container con istanze in una o più località geografiche. Puoi utilizzare strumenti di Amazon GameLift Servers ridimensionamento per scalare automaticamente la capacità di una flotta di container per ospitare sessioni di gioco e giocatori.

Istanza

Un'istanza Amazon EC2 è il server virtuale che fornisce capacità di calcolo per l'hosting di giochi. ConAmazon GameLift Servers, puoi scegliere tra una gamma di tipi di istanze. Ogni tipo di istanza offre una combinazione diversa di CPU, memoria, storage e capacità di rete.

Quando crei una flotta di container, Amazon GameLift Servers distribuisci i container in base al tipo di istanza scelto e alla configurazione della flotta. Ogni istanza della flotta distribuita è identica ed esegue il software del server di gioco containerizzato allo stesso modo. Il numero di istanze di una flotta determina le dimensioni della flotta e la capacità di hosting del gioco.

Gruppo di container

Amazon GameLift Serversutilizza il concetto di gruppo di container per descrivere e gestire una serie di container. Un gruppo di contenitori è simile a un «task» o «pod» di contenitori. All'interno di ciascun gruppo di contenitori, è possibile definire il comportamento dei contenitori, impostare le dipendenze e condividere le risorse di CPU e memoria disponibili.

Ogni istanza della flotta può avere i seguenti tipi di gruppi di container:

  • Un gruppo di contenitori per server di gioco gestisce i contenitori che eseguono l'applicazione del server di gioco e il software di supporto. Una flotta di container deve avere uno di questo tipo di gruppo di container per ospitare sessioni di gioco e giocatori. Un gruppo di container del server di gioco può essere replicato su un'istanza della flotta. Il numero di repliche di gruppi di server di gioco per istanza del parco istanze dipende dai requisiti di elaborazione del software e dalle risorse di calcolo disponibili sull'istanza.

  • Un gruppo di container per istanza, opzionale, ti dà la possibilità di eseguire software aggiuntivo su ogni istanza della flotta. Sono utili per eseguire servizi in background o programmi di utilità, ad esempio per il monitoraggio. Il software del server di gioco non dipende direttamente dai processi in un gruppo di istanze. Solo una copia di un gruppo di container per istanza viene distribuita in ogni istanza del parco veicoli.

Ogni gruppo di container di una flotta di container ha un container indicato come «essenziale». Un container essenziale guida il ciclo di vita di un gruppo di container. Se il contenitore essenziale non funziona, l'intero gruppo di contenitori viene riavviato.

Contenitore

Il contenitore è l'elemento più basilare di un'architettura basata su container. Include un'immagine del contenitore con eseguibili software e file dipendenti. Definisci un contenitore per configurare il modo in cui il software viene eseguito e interagisce. Amazon GameLift Servers

Amazon GameLift Serversdefinisce due tipi di contenitori:

  • Un contenitore per server di gioco include tutto il necessario per eseguire i processi del server di gioco e ospitare sessioni di gioco per i giocatori. Include la build del server di gioco e il software dipendente. Definisci un container di server di gioco per il gruppo di container di server di gioco di una flotta. Il contenitore del server di gioco viene automaticamente considerato essenziale per il gruppo di container.

  • Un contenitore di supporto esegue software aggiuntivo per supportare il server di gioco. È simile al concetto di contenitore «sidecar». Ti dà la possibilità di eseguire e scalare il software di supporto insieme ai tuoi server di gioco, ma gestirlo come contenitori separati. In un gruppo di contenitori di server di gioco, puoi definire zero o più contenitori di supporto. In un gruppo di contenitori per istanza, tutti i contenitori sono contenitori di supporto. Qualsiasi contenitore di supporto può essere definito essenziale.

Calcolo

Un computer rappresenta una copia di un gruppo di container del server di gioco su un'istanza della flotta.

Architetture comuni

Il diagramma seguente illustra la struttura più semplice della flotta di container. In questa struttura, ogni istanza della flotta conserva una copia del gruppo di container del server di gioco. Il gruppo di contenitori ha un unico container del server di gioco che esegue un processo del server di gioco. In questo esempio, la flotta di container è configurata per collocare una copia del gruppo di container del server di gioco per istanza. Con questa architettura, ogni istanza esegue un processo del server di gioco.

Un esempio di architettura a container semplice, con un singolo container per server di gioco nel gruppo di contenitori dei server di gioco.

Questo secondo diagramma illustra un'architettura più complessa della flotta di container. In questa struttura, la flotta dispone sia di un gruppo di container per server di gioco che di un gruppo di container per istanza. Il gruppo di contenitori del server di gioco ha contenitori separati per il processo del server di gioco e un processo di supporto. La flotta è configurata per collocare tre copie del gruppo di container del server di gioco su ogni istanza della flotta. Il gruppo di container per istanza non viene mai replicato. In questo esempio, la flotta di container è configurata per collocare tre copie del gruppo di container del server di gioco per istanza. Con questa architettura, ogni istanza esegue tre processi del server di gioco.

Un esempio di architettura a container con più contenitori nel gruppo di contenitori del server di gioco e un contenitore nel gruppo di contenitori per istanza.

Caratteristiche principali

Questa sezione riassume come Amazon GameLift Servers implementa alcuni concetti di base relativi ai contenitori. Per istruzioni su come lavorare con le flotte di container, consulta gli argomenti pertinenti di questa guida.

Aggiornamenti attivi della flotta

I container gestiti forniscono un supporto avanzato per aiutarvi a gestire il ciclo di vita del software ospitato e dell'architettura dei container. Puoi aggiornare le definizioni dei container, incluse le immagini dei container, e implementare modifiche alle flotte esistenti. Questa funzionalità semplifica e velocizza l'iterazione delle modifiche ai contenitori durante lo sviluppo. Fornisce inoltre funzionalità per aiutarti a creare, distribuire e tenere traccia degli aggiornamenti della versione del software nel tempo. Queste funzionalità includono:

  • Gestisci gli aggiornamenti e il controllo delle versioni delle definizioni dei gruppi di contenitori. È possibile aggiornare quasi tutte le proprietà di una definizione di gruppo di contenitori, incluse le immagini dei contenitori e le impostazioni di configurazione. Ogni volta che si aggiorna un contenitore, assegna Amazon GameLift Servers automaticamente un numero di versione all'aggiornamento e per impostazione predefinita mantiene tutte le versioni. È possibile accedere a qualsiasi versione specifica ed eliminare le versioni desiderate. Quando si crea una flotta di container, è possibile specificare la definizione e la versione del gruppo di container da distribuire.

  • Aggiorna le flotte di container esistenti con nuove definizioni di gruppi di container e impostazioni di configurazione. Puoi distribuire gli aggiornamenti dei container alle flotte già distribuite nelle istanze della flotta. Puoi monitorare lo stato delle distribuzioni degli aggiornamenti in ogni sede della flotta utilizzando l'SDK e la CLI Console di gestione AWS . AWS

  • Configura in che modo desideri che gli aggiornamenti della flotta vengano distribuiti su una flotta attiva.

    • Protezione delle sessioni di gioco. Scegli di proteggere le istanze della flotta con sessioni di gioco attive fino al termine delle sessioni di gioco (distribuzione sicura). Oppure scegli di sostituire le flotte di istanze indipendentemente dall'attività della sessione di gioco (distribuzione non sicura). Utilizza implementazioni non sicure durante le fasi di sviluppo e test per ridurre i tempi di implementazione.

    • Percentuale minima di integrità. Specifica la percentuale di attività integre che desideri mantenere durante la distribuzione. Questa funzionalità consente di decidere quante istanze del parco istanze sono interessate durante una distribuzione. Un valore basso dà priorità alla velocità di distribuzione, mentre un valore elevato garantisce che la disponibilità del server di gioco rimanga elevata per tutta la durata dell'implementazione.

    • Strategia di fallimento dell'implementazione. Decidi quali azioni intraprendere in caso di fallimento di una distribuzione. Un errore di distribuzione significa che alcuni dei contenitori aggiornati non hanno superato i controlli di stato e sono considerati danneggiati. È possibile impostare le distribuzioni in modo da ripristinare automaticamente tutte le istanze del parco istanze allo stato precedentemente distribuito. In alternativa, puoi scegliere di mantenere alcune delle istanze del parco istanze compromesse da utilizzare nel debugging.

La possibilità di aggiornare le flotte attive è molto utile quando desideri implementare un aggiornamento al software del tuo server di gioco. Dopo aver creato una nuova immagine del container per il server di gioco, la distribuzione è un processo in due fasi: in primo luogo, aggiorna la definizione del gruppo di container con la nuova immagine e, in secondo luogo, aggiorna la flotta di container. Amazon GameLift Serversgestisce tutte le altre attività in base alle necessità.

Imballaggio in contenitori

Quando si sviluppa la struttura dei container per l'implementazione in una flotta di container, un obiettivo comune è ottimizzare l'uso della potenza di calcolo disponibile. Per raggiungere questo obiettivo, è necessario raggruppare il maggior numero possibile di gruppi di container per server di gioco in ogni istanza della flotta.

Amazon GameLift Serversti aiuta a farlo calcolando il numero massimo di gruppi di container del server di gioco per istanza, in base alle seguenti informazioni:

  • Il tipo di istanza del parco e le relative risorse di vCPU e memoria.

  • I requisiti di vCPU e memoria per tutti i contenitori del gruppo di contenitori del server di gioco.

    I requisiti di vCPU e memoria per tutti i contenitori in un gruppo di contenitori per istanza, se presente.

Quando si crea una flotta di container, è possibile utilizzare il numero massimo calcolato oppure specificare il numero desiderato. Come best practice, pianifica di sperimentare con il software del server di gioco containerizzato per determinare i requisiti di risorse per prestazioni ottimali del server di gioco.

Dimensionamento della capacità

La capacità della flotta misura il numero di sessioni di gioco che una flotta può ospitare contemporaneamente. Puoi anche misurare la capacità in base al numero di giocatori simultanei che una flotta può supportare. Per aumentare o diminuire la capacità di hosting di una flotta, aggiungi o rimuovi le istanze della flotta.

Una flotta di container è configurata per eseguire un numero specifico di processi simultanei del server di gioco su ciascuna istanza della flotta. (Puoi calcolarlo in base a (1) i gruppi di container del server di gioco per istanza e (2) il numero di processi del server di gioco eseguiti in ciascun gruppo di container.) Il numero di server di gioco simultanei per istanza indica l'impatto dell'aggiunta o della rimozione di ciascuna istanza del parco istanze. Ad esempio, se la tua flotta di container esegue 1 processo del server di gioco in ogni gruppo di container del server di gioco e ogni istanza della flotta contiene 100 gruppi di container del server di gioco, aumenti o riduci la capacità della tua flotta di ospitare sessioni di gioco simultanee di incrementi di 100. Se ogni sessione di gioco prevede 10 slot per giocatori, aumenti o riduci la capacità della tua flotta di ospitare giocatori con incrementi di 1000.

Con le flotte di container, puoi utilizzare uno qualsiasi dei metodi di scalabilità della capacità forniti da. Amazon GameLift Servers Ciò include:

  • Imposta manualmente la capacità della flotta impostando il numero di istanze della flotta desiderato.

  • Imposta il ridimensionamento automatico mirando al buffer desiderato di istanze disponibili (tracciamento del target). Questo metodo mantiene automaticamente una certa quantità di risorse di hosting inattive in modo che i giocatori in arrivo possano accedere rapidamente alle partite. Man mano che la domanda dei giocatori aumenta o diminuisce, la dimensione di questo buffer viene continuamente modificata.

  • Imposta il ridimensionamento automatico con regole di ridimensionamento personalizzate (funzionalità avanzata). Questo metodo ti consente di scalare in base alle metriche della flotta che scegli.

Connessioni di gioco client/server

Con le flotte Amazon GameLift Servers gestite, i client di gioco si connettono direttamente ai tuoi server di gioco ospitati nel cloud. Quando un client di gioco chiede di partecipare a una partita, Amazon GameLift Servers trova una sessione di gioco e fornisce informazioni di connessione (IP e porta) al client di gioco. Puoi controllare l'accesso esterno alle istanze della flotta aprendo determinati intervalli di porte (autorizzazioni in entrata) per la flotta. Le autorizzazioni in entrata determinano quali porte sono aperte al traffico in entrata. È possibile chiudere rapidamente tutte le porte, limitarne alcune o aprire tutte.

Le flotte di container gestite richiedono un'impostazione aggiuntiva che consenta l'accesso ai processi in esecuzione in un container. Quando si crea una definizione di contenitore, si specifica un set di porte, una per ogni processo che richiede una connessione. Questo include:

  • Tutti i processi del server di gioco che verranno eseguiti contemporaneamente nel contenitore del server di gioco. Tutti i processi del server di gioco devono consentire ai client di gioco di connettersi per poter partecipare a una sessione di gioco.

  • Qualsiasi processo in un contenitore di supporto a cui una fonte esterna deve connettersi. Ad esempio, potresti connetterti in remoto a un'app di test.

Quando imposti le impostazioni della porta del contenitore rivolta verso l'interno, le Amazon GameLift Servers utilizza per calcolare le autorizzazioni in entrata verso l'esterno a cui possono connettersi i client di gioco e altre applicazioni. Amazon GameLift Serversgestisce anche la mappatura tra le autorizzazioni in entrata e le singole porte dei container, permettendo ai giocatori di accedere a una sessione di gioco all'interno di un container. Questa mappatura interna fornisce un livello di sicurezza proteggendo i server di gioco dall'accesso diretto alle porte dei container. Hai la possibilità di personalizzare le impostazioni delle porte rivolte verso l'esterno di una flotta in base alle esigenze. Per ulteriori informazioni sull'impostazione manuale delle porte della flotta di container, vedere. Configurare le connessioni di rete

È possibile modificare le impostazioni portuali di una flotta di container in qualsiasi momento. Questa modifica richiede l'implementazione di un aggiornamento della flotta.

Il diagramma seguente illustra il ruolo delle connessioni portuali in una flotta di container. Come illustrato, si impostano le porte sui singoli container e Amazon GameLift Servers si utilizzano queste informazioni per configurare un numero sufficiente di porte sull'istanza della flotta da mappare a ciascuna porta di container. Sia le autorizzazioni in entrata per le istanze rivolte all'esterno che le porte di connessione interne vengono calcolate in base alla flotta, a meno che tu non Amazon GameLift Servers scelga di impostarle manualmente.

Un'illustrazione delle impostazioni portuali per una flotta di container. Le mappature delle porte consentono al traffico esterno di connettersi a un'istanza della flotta e di accedere a un singolo container sull'istanza.

Registrazione dei container

Nelle flotte di container gestite, i flussi di output standard (e di errore standard) vengono acquisiti per tutti i container. Ciò include i registri delle sessioni di gioco del server di gioco. Puoi configurare una flotta di container per utilizzare una delle diverse opzioni per gestire i flussi di output:

  • Salva l'output del contenitore come flusso di CloudWatch log di Amazon. Ogni flusso di log fa riferimento all'ID della flotta e al container. Se si sceglie questa opzione di registrazione per la flotta, si specifica un gruppo di CloudWatch log che organizza tutti i flussi di log della flotta. È quindi possibile utilizzare CloudWatch le funzionalità per cercare e analizzare i dati di registro in base alle esigenze.

  • Salva l'output del contenitore in un bucket di storage Amazon Simple Storage Service (Amazon S3). Puoi visualizzare, condividere o scaricare i contenuti secondo necessità.

  • Disattiva la registrazione. In questo scenario, l'output del contenitore non viene salvato.

Amazon GameLift Serversinvia i dati di log dalle flotte di container gestite ai servizi Amazon S3 CloudWatch o ai servizi del tuo AWS account. Per visualizzare i tuoi dati, utilizza questo Console di gestione AWS o altri strumenti accedendo al tuo AWS account e collaborando con i singoli servizi. Estendi l'accesso limitato Amazon GameLift Servers a queste azioni creando un ruolo di servizio per le tue flotte di container.

Puoi modificare la configurazione di registrazione di una flotta di container in qualsiasi momento. Questa modifica richiede l'implementazione di un aggiornamento della flotta.

Flotte di container e Server Amazon GameLift Agente

Un'architettura di container comunemente utilizzata esegue un singolo processo in ogni contenitore. In una flotta di Amazon GameLift Servers container, il gruppo di container del server di gioco ha un container del server di gioco, che esegue un processo del server di gioco. Con questa architettura, Amazon GameLift Servers gestisce il ciclo di vita del singolo processo del server di gioco in ogni gruppo di container di server di gioco su un'istanza della flotta.

Se scegli di creare un'architettura a container che esegua più processi del server di gioco in ogni gruppo di contenitori di server di gioco, hai bisogno di un modo per gestire il ciclo di vita di tutti i processi. Ciò include attività come l'avvio, l'arresto e la sostituzione dei processi in base alle esigenze, la gestione del numero desiderato di processi da eseguire contemporaneamente e la gestione degli stati di errore.

È possibile scegliere di utilizzare l'Amazon GameLift Serversagente per queste attività. Per una flotta di container, l'Agent implementa istruzioni di runtime che specificano quali eseguibili eseguire (e quanti), forniscono i parametri di avvio e stabiliscono le regole per l'attivazione del server di gioco. Ad esempio, le istruzioni di runtime potrebbero indicare all'agente di gestire dieci processi del server di gioco per l'uso in produzione e un processo del server di gioco con parametri di avvio speciali per i test.

Per utilizzare l'Agent con le flotte di container, aggiungetelo all'immagine del container e includete una serie di istruzioni di runtime. Per ulteriori informazioni sull'agente, vedereCollabora con l'Amazon GameLift Serversagente.