Comment accéder à un cluster Amazon EMR par le biais d'une application si le cluster se trouve dans un sous-réseau privé ?

Date de la dernière mise à jour : 26/07/2021

Je souhaite utiliser une application, telle qu'Apache Livy, pour accéder à des tâches et les soumettre à un cluster Amazon EMR se trouvant dans un sous-réseau privé.

Brève description

Créez un Application Load Balancer avec le schéma d'accès via Internet. Définissez la cible d'Application Load Balancer sur l'adresse IP privée du nœud maître. Cette action vous permet d'effectuer les opérations suivantes :

  1. Vous connectez au cluster EMR se trouvant dans un sous-réseau privé.
  2. Envoyer des tâches au client à l'aide des API REST.

Résolution

Remarque : la procédure suivante peut ne pas fonctionner si vous lancez le cluster avec Kerberos, ou si vous activez SSL avec Livy.

  1. Ouvrez la console Amazon Elastic Compute Cloud (Amazon EC2).
  2. Dans le panneau de navigation, sous Load balancing (Équilibrage de charge), sélectionnez Load Balancers (Équilibreurs de charge).
  3. Sélectionnez Create Load Balancer (Créer un équilibreur de charge).
  4. Sur la page Select load balancer type (Sélectionner un type d'équilibreur de charge), sous Application Load Balancer (Équilibreur de charge d'application), sélectionnez Create (Créer).
  5. Sur la page Step 1: Configure Load Balancer (Étape 1 : Configuration de l'équilibreur de charge), procédez comme suit :
    Dans le champ Scheme (Schéma), sélectionnez Internet-facing (Accès via Internet).
    Dans le champ Listeners (Écouteurs), appliquez les options par défaut (HTTP et port80)
    Dans le champ VPC, sélectionnez le VPC dans lequel se trouve le cluster EMR.
    Dans le champ Availability Zones (Zones de disponibilité), choisissez deux sous-réseaux. Assurez-vous que l'un d'entre eux correspond au sous-réseau dans lequel se trouve le cluster EMR (le sous-réseau privé).
  6. Sélectionnez Next: Configure Security Settings (Étape suivante : Configurer les paramètres de sécurité).
  7. Si vous avez créé un écouteur sécurisé lors de l'étape précédente, fournissez les informations requises sur la page Configure Security Settings (Configuration des paramètres de sécurité). Sinon, sélectionnez Next: Configure Security Groups (Étape suivante : Configurer les groupes de sécurité).
  8. Sélectionnez le ou les groupes de sécurité applicables à l'équilibreur de charge d'application. Gardez à l'esprit qu'il s'agit d'un Application Load Balancer accessible sur Internet. Il est recommandé d'utiliser un groupe de sécurité qui limite les demandes entrantes à une adresse IP ou plage d'adresses IP spécifique.
  9. Choisissez Next: Configure Routing (Étape suivante : Configurer le routage).
  10. Sur la page Step 4: Configure Routing (Étape 4 : Configurer le routage) :
    Pour Target group (Groupe cible), sélectionnez le groupe cible de votre choix.
    Pour Name (Nom), saisissez le nom de la cible.
    Pour Target type (Type de cible), choisissez IP.
    Dans le champ Protocole, sélectionnez HTTP.
    Dans le champ Port, spécifiez le port de l'interface Web du client Par exemple, avec Livy, saisissez 8998. Pour obtenir des informations supplémentaires, consultez la section Consultation des interfaces Web hébergées sur les clusters Amazon EMR.
    Dans la section Health checks (Vérifications de l'état), pour Protocole, sélectionnez HTTP.
    Dans le champ Path (Chemin), saisissez /sessions.
  11. Sélectionnez Next: Register Targets (Étape suivante : enregistrer les cibles).
  12. Sur la page Étape 5 : Enregistrer les cibles, pour l'option IP, saisissez l'adresse IP privée du nœud principal. L'adresse IP privée du nœud principal est indiquée dans l'onglet Hardware (Matériel) de la page des détails relatifs au cluster.
  13. Sélectionnez Add to list (Ajouter à la liste) pour ajouter l'adresse IP à la liste À enregistrer.
  14. Sélectionnez Next: Review (Étape suivante : Vérification), puis Create (Créer).
  15. Lorsque l'état correspond à Actif, sélectionnez l'onglet Écouteurs.
  16. Dans la colonne Règles, sélectionnez le lien du groupe cible.
  17. Dans l'onglet Targets (Cibles), vérifiez que les cibles enregistrées et les zones de disponibilité ne présentent pas d'anomalie.
  18. Dans l'onglet Description, sélectionnez le lien situé en regard de Équilibreur de charge (celui qui correspond au nom de l'équilibreur de charge). Si l'interface utilisateur Web de Livy apparaît, la configuration fonctionne. Cela signifie que les requêtes peuvent atteindre Livy sur le cluster EMR dans le sous-réseau privé.

Vous pouvez donc soumettre des tâches au client. Par exemple, la commande suivante envoie une tâche Apache Spark au serveur Livy. Remplacez livyALB-2103017743.us-east-1.elb.amazonaws.com par le nom DNS de votre Application Load Balancer. Le nom DNS est indiqué dans l'onglet Description associé à Application Load Balancer.

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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?