クラスターがプライベートサブネットにある場合、アプリケーションを介して Amazon EMR クラスターにアクセスするにはどうすればよいですか?

最終更新日: 2021 年 7 月 26 日

Apache Livy などのアプリケーションを使用して、プライベートサブネットにある Amazon EMR クラスターにアクセスして作業を送信することを考えています。

簡単な説明

インターネット向けスキームを使用してApplication Load Balancer を作成します。Application Load Balancer のターゲットをマスターノードのプライベート IP アドレスに設定します。そうすると以下のことができるようになります。

  1. プライベートサブネット内にある EMR クラスターに接続します。
  2. REST API を使用してクライアントにジョブを送信します。

解決方法

注: Kerberos でクラスターを起動する場合、または Livy で SSL を有効にした場合、次のことが機能しない可能性があります。

  1. Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
  2. ナビゲーションペインの [ロードバランシング] で [ロードバランサー] を選択します。
  3. [ロードバランサーの作成] を選択します。
  4. ロードバランサータイプを選択する」ページの [Application Load Balancer] で、 [作成] を選択します。
  5. ステップ 1: ロードバランサーを設定する」ページで、次の操作を行います。
    [スキーマ] で [インターネット接続] を選択します。
    [リスナー] で、デフォルトのオプション (HTTP とポート 80) を使用します
    [VPC] で、EMR クラスターがある VPC を選択します。
    [アベイラビリティーゾーン] で、2 つのサブネットを選択します。そのうちの 1 つが EMR クラスターがあるサブネット (プライベートサブネット) であることを確認します。
  6. [Next: Configure Security Settings] (次へ: セキュリティ設定の構成) を選択します。
  7. 前のステップでセキュアなリスナーを作成した場合は、Configure Security Settings (セキュリティ設定の構成)ページに必要事項を入力します。それ以外の場合は、[次へ: セキュリティグループの設定] を選択します。
  8. Application Load Balancer のセキュリティグループまたはグループを選択します。これはインターネットに接続する Application Load Balancer です。ベストプラクティスは、特定の IP アドレスまたは IP アドレス範囲からの受信リクエストを制限するセキュリティグループを使用することです。
  9. [Next: Configure Routing] (次へ: ルーティングの設定) を選択します。
  10. ステップ 4: ルーティングの設定」ページで、次の操作を行います。
    [ターゲットグループ] でお好きなターゲットグループを選択します。
    [名前] にターゲット名を入力します。
    [Target type] (ターゲットタイプ) で [IP] を選択します。
    [プロトコル] で [HTTP] を選択します。
    [ポート] で、クライアントのウェブ UI のポートを入力します。たとえば Livy の場合、8998 と入力します。詳細については、「Amazon EMR クラスターでホストされるウェブインターフェイスの表示」を参照してください。
    [ヘルスチェック] セクションの [プロトコル] で、[HTTP] を選択します。
    [パス] で [/sessions] と入力します。
  11. [次へ: ターゲットの登録] を選択します。
  12. ステップ 5: ターゲットの登録ページの [IP] に、マスターノードのプライベート IP アドレスを入力します。マスターノードのプライベート IP アドレスは、[クラスターの詳細ページ] にある [ハードウェア] タブで確認できます。
  13. [リストに追加] を選択して、IP アドレスを [登録する] リストに追加します。
  14. [次へ: 確認] 、[作成] の順に選択します。
  15. [状態] がアクティブに変わったら、[リスナー] タブをクリックします。
  16. [ルール] 列で、ターゲットグループのリンクを選択します。
  17. [ターゲット] タブで、[登録済みターゲット] と [アベイラビリティーゾーン] が正常であることを確認します。
  18. [説明] タブで、ロードバランサー (ロードバランサーの名前のあるリンク) の横のリンクを選択します。Livy Web UI が表示されれば、設定はうまくいっています。つまり、プライベートサブネット内の EMR クラスター上の Livy にリクエストが到達しています。

これで、クライアントにジョブを送信できます。たとえば、次のコマンドで Apache Spark ジョブを Livy サーバーに送信します。livyALB-2103017743.us-east-1.elb.amazonaws.com を Application Load Balancer の DNS 名に置き換えます。DNS 名は、Application Load Balancer の [説明] タブにあります。

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

この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?