Comment puis-je accéder à un cluster EMR via une application s'il se trouve dans un sous-réseau privé ?

Date de la dernière mise à jour : 11/05/2020

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

Courte description

Créez un équilibreur de charge d'application dans un sous-réseau public. Définissez la cible de l'équilibreur de charge d'application sur l'adresse IP publique du nœud maître. Ainsi, vous pouvez vous connecter au cluster EMR se trouvant dans un sous-réseau privé, puis soumettre des tâches au client à l'aide d'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 volet de navigation, sous ÉQUILIBRAGE DE CHARGE, sélectionnez Équilibreurs de charge.
  3. Sélectionnez Créer un équilibreur de charge.
  4. Sur la page Sélectionner un type d'équilibreur de charge, sous Équilibreur de charge d'application, sélectionnez Créer.
  5. Sur la page Étape 1 : Configuration de l'équilibreur de charge :
    Dans le champ Schéma, sélectionnez Accès via Internet.
    Dans le champ Écouteurs, appliquez les options par défaut (HTTP et Port 80)
    Dans le champ VPC, sélectionnez le VPC dans lequel se trouve le cluster EMR.
    Dans le champ Zones de disponibilité, sélectionnez 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 Étape suivante : Configuration des 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 Configuration des paramètres de sécurité. Sinon, sélectionnez Étape suivante : Configuration des 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 équilibreur de charge d'application 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. Sélectionnez Étape suivante : Configuration du routage.
  10. Sur la page Étape 4 : Configuration du routage :
    Dans le champ Type de cible, sélectionnez IP.
    Dans le champ Protocole, sélectionnez HTTPS.
    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 Vérifications de l'état, pour l'option Protocole, sélectionnez HTTP.
    Dans le champ Chemin, saisissez /sessions.
  11. Sélectionnez Étape suivante : Enregistrement des cibles.
  12. Sur la page Étape 5 : Enregistrement des cibles, pour l'option IP, saisissez l'adresse IP publique du nœud maître. L'adresse IP publique du nœud maître est indiquée dans l'onglet Matériel de la page des détails relatifs au cluster.
  13. Sélectionnez Ajouter à la liste pour ajouter l'adresse IP à la liste À enregistrer.
  14. Sélectionnez Étape suivante : Vérification, puis 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 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 Web Livy s'affiche, la configuration a fonctionné : les demandes peuvent dès lors être transmises à Livy sur le cluster EMR, dans le sous-réseau privé.

Vous pouvez donc soumettre des tâches au client. La commande suivante permet notamment d'envoyer une tâche Apache Spark au serveur Livy. Remplacez livyALB-2103017743.us-east-1.elb.amazonaws.com par le nom DNS de votre équilibreur de charge d'application. Le nom DNS est indiqué dans l'onglet Description associé à l'équilibreur de charge d'application.

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 ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?