Salta al contenuto

Perché le istanze Amazon EC2 nel mio ambiente Elastic Beanstalk non inviano dati di integrità né superano i controlli dell’integrità ELB?

7 minuti di lettura
0

Le istanze Amazon Elastic Compute Cloud (Amazon EC2) nel mio ambiente AWS Elastic Beanstalk non inviano dati di integrità. Oppure, le istanze EC2 non superano i controlli dell’integrità di Elastic Load Balancing (ELB).

Breve descrizione

I report avanzati sull’integrità di Elastic Beanstalk si basano su un agente di integrità che raccoglie i dati di integrità su ogni istanza. Se la comunicazione tra l’agente e l’endpoint Elastic Beanstalk non riesce, l’ambiente segnala errori nei dati di integrità o informazioni di integrità mancanti.

L’ambiente Elastic Beanstalk potrebbe riscontrare problemi relativi ai dati di integrità o ai controlli dell’integrità per i seguenti motivi:

  • Non hai attivato i report avanzati sull’integrità nell’ambiente.
  • L’agente di integrità non è in esecuzione o non può comunicare con l’endpoint di integrità di Elastic Beanstalk.
  • Le istanze non possono raggiungere gli endpoint del servizio AWS a causa di problemi di connettività di rete.
  • Il profilo dell’istanza non dispone delle autorizzazioni AWS Identity and Access Management (IAM) richieste per inviare i dati di integrità.
  • L’applicazione non risponde correttamente ai controlli dell’integrità del bilanciatore del carico.
  • Sono presenti problemi di Amazon EC2 Auto Scaling o di avvio delle istanze.

Risoluzione

Nota: I seguenti comandi sono per le istanze Linux.

Attiva i report avanzati sull’integrità

Se l’ambiente utilizza i report di base sull’integrità, le istanze non inviano dati di integrità a Elastic Beanstalk. Affinché le istanze inviino i dati di integrità, devi attivare i report avanzati sull’integrità.

Nota: Se utilizzi un file di configurazione .ebextensions che imposta il tipo di sistema di report sull’integrità, il file sovrascrive l’impostazione della console. Assicurati che il file .ebextensions non imposti l’opzione SystemType su Basic nel namespace aws:elasticbeanstalk:healthreporting:system.

Verifica lo stato dell’agente di integrità di Elastic Beanstalk

Completa i seguenti passaggi:

  1. Utilizza SSH o Gestione sessione, una funzionalità di AWS Systems Manager, per connetterti all’istanza.

  2. Per verificare lo stato dell’agente di integrità, esegui il comando seguente:

    sudo systemctl status healthd
  3. Se l’agente di integrità non è in esecuzione, esegui il seguente comando per riavviarlo:

    sudo systemctl restart healthd
  4. Per verificare la presenza di errori nei log dell’agente di integrità, esegui il comando seguente:

    sudo cat /var/log/healthd/daemon.log
  5. Per confermare che l’istanza può raggiungere l’endpoint di integrità di Elastic Beanstalk, esegui il seguente comando:

    curl -v https://elasticbeanstalk-health.us-east-1.amazonaws.com/

    Nota: Sostituisci us-east-1 con la regione AWS dell’ambiente.

Verifica la connettività di rete

Se l’agente di integrità non riesce a raggiungere l’endpoint del servizio di integrità di Elastic Beanstalk, controlla le impostazioni di configurazione della rete.

Gruppi di sicurezza

Controlla le regole del gruppo di sicurezza dell’istanza. I gruppi di sicurezza devono consentire il traffico in uscita sulla porta 443 verso l’endpoint di integrità di Elastic Beanstalk. Devono inoltre consentire il traffico in entrata sull’applicazione dal gruppo di sicurezza del bilanciatore del carico.

ACL di rete

Controlla le regole della lista di controllo degli accessi alla rete (ACL) della sottorete dell’istanza. L’ACL di rete deve consentire il traffico HTTP in uscita sulla porta 443. L’ACL di rete deve inoltre consentire il traffico in entrata sulle porte temporanee (1024–65535) e il traffico sulla porta dell’applicazione dalla sottorete del bilanciatore del carico.

Tabelle di routing

Controlla la configurazione della tabella di routing. Se le istanze si trovano in una sottorete pubblica, conferma che esista una route verso un gateway Internet. Se le istanze si trovano in una sottorete privata, conferma che esista una route verso un gateway NAT. Se le istanze si trovano in una sottorete privata senza un gateway NAT, crea endpoint Amazon Virtual Private Cloud (Amazon VPC) per i seguenti servizi:

  • elasticbeanstalk-health.us-east-1.amazonaws.com
  • sqs.us-east-1.amazonaws.com
  • cloudformation.us-east-1.amazonaws.com
    Nota: Sostituisci us-east-1 con la regione dell’ambiente.

Verifica le autorizzazioni IAM

Assicurati che il profilo dell’istanza associato all’ambiente Elastic Beanstalk disponga delle autorizzazioni necessarie affinché l’agente di integrità possa inviare i dati.

Aggiorna il ruolo del profilo dell’istanza associato a Elastic Beanstalk per utilizzare la policy gestita AWSElasticBeanstalkWebTier. Per gli ambienti worker, utilizza la policy gestita AWSElasticBeanstalkWorkerTier. Se utilizzi una policy personalizzata, assicurati che includa le autorizzazioni della policy gestita AWSElasticBeanstalkWebTier.

Se hai cambiato di recente il ruolo IAM, esegui il comando seguente per riavviare l’agente di integrità e ottenere le nuove credenziali:

sudo systemctl restart healthd

Risolvi i problemi relativi ai controlli dell’integrità

Se l’applicazione non risponde correttamente ai controlli dell’integrità, l’ambiente segnala problemi di integrità.

Per risolvere i problemi relativi ai controlli dell’integrità, completa i seguenti passaggi:

  1. Apri la console Elastic Beanstalk.

  2. Seleziona l’ambiente, quindi scegli Configurazione.

  3. In Bilanciatore del carico, scegli Modifica.

  4. In Controllo dell’integrità, controlla le seguenti impostazioni:
    Per Percorso, assicurati che l’endpoint restituisca un codice di stato HTTP 200.
    Per Intervallo, assicurati che il valore sia corretto per l’applicazione. Il valore predefinito è 15 secondi.
    Per Timeout, assicurati che il valore sia inferiore al valore Intervallo.
    Inoltre, controlla Soglia di integrità per configurare i successi consecutivi e Soglia di non integrità per configurare gli errori consecutivi.

  5. Scegli Applica.

  6. Per testare localmente il percorso del controllo dell’integrità, connettiti all’istanza ed esegui il seguente comando:

    curl -v http://localhost:5000/

    Nota: Sostituisci 5000 con la porta su cui l’applicazione è in ascolto. Se hai un percorso di controllo dell’integrità personalizzato, aggiungi il percorso. Ad esempio, aggiungi /health al percorso.

  7. Se il percorso del controllo dell’integrità restituisce un errore, controlla lo stato dell’applicazione sull’istanza. Per verificare se il processo dell’applicazione è in esecuzione, esegui il comando seguente:

    sudo systemctl status web
  8. Per confermare che l’applicazione è in ascolto sulla porta prevista, esegui il comando seguente:

    sudo ss -tlnp | grep 5000

    Nota: Sostituisci 5000 con la porta su cui è in ascolto l’applicazione.

  9. Per esaminare i log dell’applicazione per individuare eventuali errori di avvio, esegui i seguenti comandi:

    sudo cat /var/log/web.stdout.log
    sudo cat /var/log/eb-engine.log

Risolvi i problemi di Amazon EC2 Auto Scaling e di avvio delle istanze

Nota: Se ricevi errori quando esegui i comandi dell’Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Se le istanze vengono avviate e poi terminate frequentemente, l’agente di integrità potrebbe non avere abbastanza tempo per inizializzarsi e inviare i dati di integrità.

Per verificare la presenza di errori di avvio nella cronologia delle attività del gruppo Auto Scaling, esegui il seguente comando AWS CLI describe-scaling-activities:

aws autoscaling describe-scaling-activities \
  --auto-scaling-group-name your-asg-name \
  --max-items 10

Nota: Sostituisci your-asg-name con il nome del gruppo Auto Scaling dell’ambiente.

Se le istanze terminano prima dell’avvio completo dell’applicazione, completa i seguenti passaggi per aumentare il periodo di tolleranza del controllo dell’integrità:

  1. Apri la console Elastic Beanstalk.
  2. Seleziona l’ambiente, quindi scegli Configurazione.
  3. In Aggiornamenti e distribuzioni continui, scegli Modifica.
  4. Per Periodo di tolleranza del controllo dell’integrità, aumenta il valore. Per le applicazioni con tempi di avvio lunghi, immetti un valore compreso tra 300 e 600 secondi.
  5. Scegli Applica.

Per esaminare i log di inizializzazione dell’istanza per individuare eventuali errori, esegui i seguenti comandi:

sudo cat /var/log/eb-engine.log
sudo cat /var/log/cfn-init.log
sudo cat /var/log/cfn-init-cmd.log

Informazioni correlate

Colori e stati dell’integrità

AWS UFFICIALEAggiornata un mese fa