Come posso accedere a un cluster Amazon EMR tramite un'applicazione se il cluster si trova in una sottorete privata?

4 minuti di lettura
0

Desidero utilizzare un'applicazione, come Apache Livy, per accedere e inviare il processo a un cluster Amazon EMR che si trova in una sottorete privata.

Breve descrizione

Crea un Application Load Balancer con lo schema di interfacciamento a Internet. Imposta la destinazione di Application Load Balancer sull'indirizzo IP privato del nodo principale. In questo modo è possibile effettuare le seguenti operazioni:

  1. Connetterti al cluster EMR che si trova in una sottorete privata.
  2. Inviare processi al client utilizzando le REST API.

Soluzione

Nota: quanto segue potrebbe non funzionare se avvii il cluster con Kerberos o se abiliti SSL per Livy.

  1. Apri la console Amazon Elastic Compute Cloud (Amazon EC2).
  2. Nel riquadro di navigazione, in Bilanciamento del carico, scegli Sistemi di bilanciamento del carico.
  3. Scegli Crea sistema di bilanciamento del carico.
  4. Nella pagina Seleziona il tipo di sistema di bilanciamento del carico, in Application Load Balancer scegli Crea.
  5. Nel Passaggio 1: configura la pagina del sistema di bilanciamento del carico, procedendo come segue:
    Per Schema, scegli interfacciamento a Internet.
    Per Ascoltatori, utilizza le opzioni predefinite (HTTP e porta 80)
    Per VPC, scegli il VPC in cui si trova il cluster EMR.
    Per Zone di disponibilità, scegli due sottoreti. Assicurati che una di esse sia la sottorete in cui si trova il cluster EMR (sottorete privata).
  6. Scegli Avanti: configura le impostazioni di sicurezza.
  7. Se hai creato un ascoltatore sicuro nel passaggio precedente, completa la pagina Configura le impostazioni di sicurezza. Altrimenti, scegli Avanti: configura i gruppi di sicurezza.
  8. Seleziona il gruppo o i gruppi di sicurezza per Application Load Balancer. Ricorda che si tratta di un Application Load Balancer con interfacciamento a Internet. È consigliabile utilizzare un gruppo di sicurezza che limiti le richieste in arrivo da uno specifico indirizzo IP o intervallo di indirizzi IP.
  9. Scegli Avanti: configura il Routing.
  10. Nel Passaggio 4: Configura la pagina di Routing:
    Per Gruppo di destinazione, seleziona il gruppo di destinazione di tua scelta.
    In Nome, inserisci il nome della destinazione.
    Per Tipo di destinazione, scegli IP.
    Per Protocollo, scegli HTTP.
    In Porta, inserisci la porta dell'interfaccia utente Web del client. Ad esempio, per Livy inserisci 8998. Per ulteriori informazioni, consulta Visualizzare le interfacce Web host sui cluster Amazon EMR.
    Nella sezione Controlli dell’integrità, per Protocollo scegli HTTP.
    Per Percorso, inserisci /sessions.
  11. Scegli Avanti: Registra Destinazioni.
  12. Nel Passaggio 5: pagina Registra Destinazioni, per IP inserisci l'indirizzo IP privato del nodo principale. È possibile trovare l'indirizzo IP privato del nodo principale nella scheda Hardware della pagina dei dettagli del cluster.
  13. Scegli Aggiungi alla lista per aggiungere l'indirizzo IP all’elenco Da registrare.
  14. Scegli Avanti: Rivedi, quindi scegli Crea.
  15. Quando lo Stato diventa attivo, scegli la scheda Ascoltatori.
  16. Nella colonna Regole, scegli il link del gruppo di destinazione.
  17. Nella scheda Destinazioni, verifica che le Destinazioni registrate e le Zone di disponibilità siano integri.
  18. Nella scheda Descrizione, scegli il link accanto a Sistema di bilanciamento del carico (il link che è il nome del sistema di bilanciamento del carico). Se viene visualizzata l'interfaccia utente Web di Livy, la configurazione funziona. Ciò significa che le richieste possono raggiungere Livy sul cluster EMR nella sottorete privata.

Ora puoi inoltrare i processi al client. Ad esempio, il comando seguente inoltra un processo Spark Apache al server Livy. Sostituisci livyALB-2103017743.us-east-1.elb.amazonaws.com con il nome DNS del tuo Application Load Balancer. È possibile trovare il nome DNS nella scheda Descrizione di Application Load Balancer.

curl -X POST --data '{"kind": "pyspark"}' -H "Content-Type: application/json" livyALB-2103017743.us-east-1.elb.amazonaws.com/sessions

Informazioni correlate

Accesso alle interfacce utente Web di Spark

Apache Livy

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa