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

Distribuzione di un'applicazione PHP a elevata disponibilità con un database Amazon RDS esterno in Elastic Beanstalk

Questo tutorial illustra il processo di avvio di un'istanza DB RDS esterna e la configurazione di un ambiente ad alta disponibilità che esegue un'applicazione PHP per connettersi ad essa. AWS Elastic Beanstalk L'esecuzione di un'istanza database esterna a Elastic Beanstalk separa il database dal ciclo di vita dell'ambiente. Ciò consente di connettersi allo stesso database da più ambienti, sostituire un database per un altro o eseguire una distribuzione blu/verde senza influire sul database.

Il tutorial fa riferimento a un'applicazione PHP di esempio che utilizza un database MySQL per archiviare i dati di testo fornite dall'utente. L'applicazione di esempio utilizza i file di configurazione per configurare le impostazioni PHP e creare una tabella nel database che l'applicazione può utilizzare. Mostra inoltre come utilizzare un file Composer per installare i pacchetti durante la distribuzione.

Prerequisiti

Prima di iniziare, scarica il pacchetto sorgente dell'applicazione di esempio da: -app-1.3.zip GitHub eb-demo-php-simple

Le procedure descritte in questo tutorial per le attività Amazon Relational Database Service (Amazon RDS) presuppongono che si stiano avviando risorse in un Amazon Virtual Private Cloud (Amazon VPC) predefinito. Tutti i nuovi account includono un VPC predefinito in ciascuna regione. Se non hai un VPC predefinito, le procedure variano. Consulta Utilizzo di Elastic Beanstalk con Amazon RDS per le istruzioni relative alle piattaforme EC2-Classic e alle piattaforme VPC personalizzate.

Avvio di un'istanza database in Amazon RDS

Per utilizzare un database esterno con un'applicazione in esecuzione in Elastic Beanstalk, avvia innanzitutto un'istanza database con Amazon RDS. Un'istanza avviata con Amazon RDS è completamente indipendente da Elastic Beanstalk e dagli ambienti Elastic Beanstalk e non verrà terminata o monitorata da Elastic Beanstalk.

Utilizza la console Amazon RDS per avviare un'istanza database Multi-AZ MySQL. La scelta di un'implementazione Multi-AZ garantisce che il database eseguirà il failover e continuerà a essere disponibile se l'istanza database di origine è inutilizzabile.

Per avviare un'istanza database RDS in un VPC predefinito
  1. Aprire la console di RDS.

  2. Nel riquadro di navigazione, scegliere Databases (Database).

  3. Scegliere Create database (Crea database).

  4. Scegliere Standard Create (Creazione standard).

    Importante

    Non selezionare Easy Create (Creazione rapida). Se viene selezionata questa opzione, non è possibile configurare le impostazioni necessarie per avviare questo database RDS.

  5. In Additional configuration (Configurazione aggiuntiva), digitare ebdb per Initial database name (Nome database iniziale).

  6. Controllare le impostazioni di default e regolare queste impostazioni in base alle proprie esigenze specifiche. Prestare particolare attenzione alle seguenti opzioni:

    • DB instance class (Classe di istanze database): scegliere una dimensione di istanza con capacità di memoria e potenza di CPU sufficienti per il tuo carico di lavoro.

    • Multi-AZ deployment (Implementazione Multi-AZ): per la disponibilità elevata, impostare su Create an Aurora Replica/Reader node in a different AZ (Crea un nodo Aurora Replica/Reader in un'altra AZ).

    • Master username (Nome utente master) e Master password (Password master): nome utente e password del database. Prendi nota di queste impostazioni perché ti serviranno in seguito.

  7. Verificare le impostazioni predefinite per le opzioni rimanenti e scegliere Create database (Crea database).

Quindi, modifica il gruppo di sicurezza associato all'istanza database per consentire il traffico in entrata sulla porta appropriata. Questo è lo stesso gruppo di sicurezza che collegherai successivamente all'ambiente Elastic Beanstalk, perciò la regola che aggiungi concederà l'autorizzazione di ingresso ad altre risorse nello stesso gruppo di sicurezza.

Per modificare le regole in entrata del gruppo di sicurezza associato all'istanza RDS
  1. Aprire la console Amazon RDS.

  2. Scegli Databases (Database).

  3. Scegliere il nome dell'istanza database per visualizzarne i dettagli.

  4. Nella sezione Connectivity (Connettività), prendere nota dei valori relativi a Subnets (Sottoreti), Security groups (Gruppi di sicurezza) ed Endpoint mostrati in questa pagina. In questo modo è possibile utilizzare queste informazioni in un secondo momento.

  5. In Security (Sicurezza) viene visualizzato il gruppo di sicurezza associato all'istanza database. Aprire il collegamento per visualizzare il gruppo di sicurezza nella console Amazon EC2.

    Sezione Connettività nella pagina di istanza database della console Amazon RDS
  6. Nei dettagli del gruppo di sicurezza, scegliere Inbound (In entrata).

  7. Scegli Modifica.

  8. Selezionare Add Rule (Aggiungi regola).

  9. In Type (Tipo), scegliere il motore di database utilizzato dall'applicazione.

  10. In Source (Origine), digitare sg- per visualizzare un elenco dei gruppi di sicurezza disponibili. Scegliere il gruppo di sicurezza associato al gruppo Auto Scaling utilizzato con l'ambiente Elastic Beanstalk. In questo modo le istanze Amazon EC2 dell'ambiente possono accedere al database.

    Modifica delle regole in entrata per un gruppo di sicurezza nella console Amazon EC2
  11. Seleziona Save (Salva).

La creazione di un'istanza database richiede circa 10 minuti. Nel frattempo, crea il tuo ambiente Elastic Beanstalk.

Creazione di un ambiente Elastic Beanstalk

Utilizza la console Elastic Beanstalk per creare un ambiente Elastic Beanstalk. Scegli la piattaforma PHP e accetta le impostazioni predefinite e il codice di esempio. Dopo aver avviato l'ambiente, è possibile configurare l'ambiente per la connessione al database, quindi distribuire l'applicazione di esempio da cui è stata scaricata. GitHub

Per avviare un ambiente (console)
  1. Apri la console Elastic Beanstalk utilizzando questo link preconfigurato: console.aws.amazon.com/elasticbeanstalk/home#/ newApplication?applicationname=tutorials &EnvironmentType= LoadBalanced

  2. Per Platform (Piattaforma), selezionare il ramo della piattaforma e la piattaforma che corrispondono al linguaggio utilizzato dall'applicazione.

  3. In Application code (Codice applicazione), scegli Sample application (Applicazione di esempio).

  4. Selezionare Review and launch (Controlla e avvia).

  5. Verificare le opzioni disponibili. Scegliere l'opzione disponibile che si desidera utilizzare e, quando si è pronti, scegliere Create app (Crea app).

Occorrono circa cinque minuti per creare l'ambiente e le seguenti risorse:

  • Istanza EC2: una macchina virtuale Amazon Elastic Compute Cloud (Amazon EC2) configurata per l'esecuzione di app Web sulla piattaforma scelta.

    Ogni piattaforma esegue un insieme specifico di software, file di configurazione e script per supportare una versione della lingua, un framework, un container Web specifici o una determinata combinazione di essi. La maggior parte delle piattaforme utilizza Apache o NGINX come proxy inverso su cui viene eseguita l'app Web, inoltra le richieste all'app, fornisce asset statici e genera log degli accessi e di errore.

  • Gruppo di sicurezza istanze: un gruppo di sicurezza di Amazon EC2 configurato per abilitare il traffico in entrata sulla porta 80. Questa risorsa consente al traffico TTP proveniente dal sistema di bilanciamento del carico di raggiungere l'istanza EC2 in esecuzione sull'app Web. Per impostazione predefinita, il traffico non è consentito su altre porte.

  • Sistema di bilanciamento del carico: un sistema di bilanciamento del carico Elastic Load Balancing configurato per distribuire richieste alle istanze in esecuzione sull'applicazione. Un sistema di bilanciamento del carico inoltre elimina la necessità di esporre le proprie istanze direttamente in Internet.

  • Gruppo di sicurezza del sistema di bilanciamento del carico: un gruppo di sicurezza di Amazon EC2 configurato per abilitare il traffico in entrata sulla porta 80. Questa risorsa HTTP consente al traffico proveniente da Internet di raggiungere il sistema di bilanciamento del carico. Per impostazione predefinita, il traffico non è consentito su altre porte.

  • Gruppo Auto Scaling: un gruppo Auto Scaling configurato per sostituire un'istanza se viene terminata o diventa non disponibile.

  • Bucket Amazon S3: posizione di storage per il codice sorgente, i log e altri artefatti creati quando si utilizza Elastic Beanstalk.

  • CloudWatch Allarmi Amazon: due CloudWatch allarmi che monitorano il carico sulle istanze nel tuo ambiente e che vengono attivati se il carico è troppo alto o troppo basso. Quando viene attivato un allarme, il gruppo Auto Scaling aumenta o diminuisce di conseguenza.

  • AWS CloudFormation stack: Elastic AWS CloudFormation Beanstalk utilizza per avviare le risorse nell'ambiente e propagare le modifiche alla configurazione. Le risorse sono definite in un modello, visualizzabile nella console AWS CloudFormation.

  • Nome dominio: un nome di dominio che esegue l'instradamento all'applicazione Web utilizzando il formato sottodominio.regione.elasticbeanstalk.com.

    Nota

    Per aumentare la sicurezza delle tue applicazioni Elastic Beanstalk, il dominio elasticbeanstalk.com è registrato nella Public Suffix List (PSL). Per una maggiore sicurezza, ti consigliamo di utilizzare i cookie con un prefisso __Host- se hai bisogno di impostare cookie sensibili nel nome di dominio predefinito per le tue applicazioni Elastic Beanstalk. Questa pratica ti aiuterà a difendere il tuo dominio dai tentativi CSRF (cross-site request forgery). Per ulteriori informazioni, consulta la pagina Impostazione cookie nella pagina Mozilla Developer Network.

Tutte queste risorse sono gestite da Elastic Beanstalk. Quando arresti l'ambiente, Elastic Beanstalk termina tutte le risorse che contiene. L'istanza database di RDS avviata è al di fuori del tuo ambiente, per cui sei responsabile della gestione del suo ciclo di vita.

Nota

Il bucket Amazon S3 creato da Elastic Beanstalk è condiviso tra gli ambienti e non viene eliminato quando l'ambiente viene terminato. Per ulteriori informazioni, consultare Utilizzo di Elastic Beanstalk con Amazon S3.

Configurazione di gruppi di sicurezza, proprietà dell'ambiente e dimensionamento

Aggiungi il gruppo di sicurezza dell'istanza database all'ambiente in esecuzione. Con questa procedura Elastic Beanstalk predispone di nuovo tutte le istanze nell'ambiente con il gruppo di sicurezza aggiuntivo collegato.

Per aggiungere un gruppo di sicurezza al tuo ambiente
  • Esegui una di queste operazioni:

    • Per aggiungere un gruppo di sicurezza tramite la console Elastic Beanstalk

      1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

      2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

        Nota

        Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

      3. Nel pannello di navigazione, seleziona Configuration (Configurazione).

      4. Nella categoria di configurazione Instances (Istanze), scegliere Edit (Modifica).

      5. In EC2 security groups (Gruppi di sicurezza EC2), scegliere il gruppo di sicurezza da collegare alle istanze, in aggiunta a quello creato da Elastic Beanstalk.

      6. Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.

      7. Leggere l'avviso, quindi selezionare Confirm (Conferma).

    • Per aggiungere un gruppo di sicurezza tramite un file di configurazione, utilizzare il file di esempio securitygroup-addexisting.config.

Quindi, utilizza le proprietà dell'ambiente per far passare le informazioni di connessione al tuo ambiente. L'applicazione di esempio utilizza un set di proprietà predefinito che corrisponde a quello configurato da Elastic Beanstalk quando viene effettuato il provisioning di un database all'interno del tuo ambiente.

Per configurare le proprietà dell'ambiente per un'istanza database Amazon RDS
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Nel riquadro di navigazione, seleziona Configuration (Configurazione).

  4. Nella categoria di configurazione Updates, monitoring, and logging (Aggiornamenti, monitoraggio e registrazione), scegli Edit (Modifica).

  5. Nella sezione Environment properties (Proprietà ambiente), definire le variabili che l'applicazione deve leggere per formare una stringa di collegamento. Per la compatibilità con gli ambienti che dispongono di un'istanza database RDS integrata, utilizza i seguenti nomi e valori. Tutti i valori, ad eccezione della password, sono disponibili nella console RDS.

    Nome proprietà Descrizione Valore proprietà

    RDS_HOSTNAME

    Il nome host dell'istanza DB.

    Nella scheda Connectivity & security (Connettività e sicurezza) della console Amazon RDS: Endpoint.

    RDS_PORT

    La porta su cui l'istanza database accetta le connessioni. Il valore predefinito varia tra i motori di database.

    Nella scheda Connectivity & security (Connettività e sicurezza) della console Amazon RDS: Port (Porta).

    RDS_DB_NAME

    Il nome del database, ebdb.

    Nella scheda Configuration (Configurazione) della console Amazon RDS: DB Name (Nome DB).

    RDS_USERNAME

    Il nome utente configurato per il database.

    Nella scheda Configuration (Configurazione) della console Amazon RDS: Master username (Nome utente master).

    RDS_PASSWORD

    La password configurata per il database.

    Non disponibile per riferimento nella console Amazon RDS.

    Sezione di configurazione delle proprietà dell'ambiente con proprietà RDS aggiunte
  6. Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.

Infine, configura il gruppo Auto Scaling dell'ambiente con un conteggio delle istanze minime più elevato. Esegui almeno due istanze in qualsiasi momento per evitare che i server Web nell'ambiente rappresentino una singola possibilità di errore e per consentire di distribuire le modifiche senza interrompere il funzionamento del servizio.

Configurazione del gruppo Auto Scaling dell'ambiente per elevata disponibilità
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Nel riquadro di navigazione, selezionare Configuration (Configurazione).

  4. Nella categoria di configurazione Capacity (Capacità), scegliere Edit (Modifica).

  5. Nella sezione Auto Scaling Group (Gruppo Auto Scaling), impostare Min instances (Istanze min) su 2.

  6. Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.

Distribuzione di un'applicazione di esempio

Ora l'ambiente è pronto per eseguire l'applicazione di esempio e connettersi ad Amazon RDS. Distribuisci l'applicazione di esempio nel tuo ambiente.

Per distribuire un bundle di origine
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Nella pagina della panoramica dell'ambiente scegliere Upload and deploy (Carica e distribuisci).

  4. Utilizzare la finestra di dialogo su schermo per caricare il bundle di origine.

  5. Selezionare Deploy (Distribuisci).

  6. Al termine della distribuzione, è possibile scegliere l'URL del sito per aprire il sito Web in una nuova scheda.

Il sito raccoglie i commenti degli utenti e utilizza un database MySQL per archiviare i dati. Per aggiungere un commento, scegli Share Your Thought (Condividi la tua opinione), immetti un commento, quindi seleziona Submit Your Thought (Invia la tua opinione). L'applicazione web scrive il commento sul database, in modo che qualsiasi istanza nell'ambiente possa leggerlo; in questo modo, inoltre, il commento non andrà perso se le istanze diventano inutilizzabili.

Pulizia

Dopo aver usato Elastic Beanstalk, puoi terminare l'ambiente. Elastic Beanstalk AWS interrompe tutte le risorse associate all'ambiente, come istanze Amazon EC2, istanze di database, sistemi di bilanciamentodel carico, gruppi di sicurezza e allarmi.

Per terminare l'ambiente Elastic Beanstalk dalla console
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Seleziona Actions (Operazioni), quindi Terminate environment (Termina ambiente).

  4. Utilizza la finestra di dialogo su schermo per confermare la terminazione dell'ambiente.

Con Elastic Beanstalk puoi creare facilmente un nuovo ambiente per l'applicazione in qualsiasi momento.

Inoltre, puoi terminare le risorse di database create al di fuori dell'ambiente Elastic Beanstalk. Quando termini un'istanza database Amazon RDS, puoi acquisire uno snapshot e successivamente ripristinare i dati in un'altra istanza.

Per terminare l'istanza database RDS
  1. Apri la console Amazon RDS.

  2. Scegli Databases (Database).

  3. Scegli l'istanza database.

  4. Scegli Actions (Operazioni), quindi Delete (Elimina).

  5. Scegliere se creare una snapshot, quindi selezionare Delete (Elimina).

Passaggi successivi

Mentre continui a sviluppare l'applicazione, potrebbe essere necessario un metodo per gestire gli ambienti e distribuire l'applicazione senza creare manualmente un file .zip e caricarlo sulla console Elastic Beanstalk. L'Elastic Beanstalk Command Line Interface (EB CLI easy-to-use ) fornisce comandi per creare, configurare e distribuire applicazioni in ambienti Elastic Beanstalk dalla riga di comando.

L'applicazione di esempio utilizza i file di configurazione per configurare le impostazioni PHP e creare una tabella nel database, se non esiste già. È inoltre possibile utilizzare un file di configurazione per configurare le impostazioni del gruppo di sicurezza delle istanze durante la creazione dell'ambiente per evitare gli aggiornamenti di configurazione onerosi in termini di tempo. Per ulteriori informazioni, consultare Personalizzazione avanzata dell'ambiente con i file di configurazione (.ebextensions).

Per sviluppo e test, puoi usare la funzionalità di Elastic Beanstalk per l'aggiunta di un'istanza database gestita direttamente nell'ambiente. Per istruzioni sulla configurazione di un database nell'ambiente, consultare Aggiunta di un database all'ambiente Elastic Beanstalk.

Se è necessario un database ad alte prestazioni, prendi in considerazione Amazon Aurora. Amazon Aurora è un motore di database compatibile con MySQL che offre caratteristiche di database commerciali a basso costo. Per connettere l'applicazione a un altro database, ripeti la procedura di configurazione del gruppo di sicurezza e aggiorna le proprietà dell'ambiente relative a RDS.

Infine, se prevedi di usare l'applicazione in un ambiente di produzione, devi configurare un nome di dominio personalizzato per l'ambiente e abilitare HTTPS per le connessioni sicure.