オプション 2、パート 2: プライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する - Amazon EMR

オプション 2、パート 2: プライマリノードでホストされるウェブサイトを表示するようにプロキシを設定する

ダイナミックポートフォワーディングによる SSH トンネルを使用する場合、SOCKS プロキシ管理アドオンを使用して、ブラウザでプロキシ設定を管理する必要があります。SOCKS プロキシ管理ツールを使用すると、テキストパターンに基づいて自動的に URL をフィルタリングし、プロキシの設定をプライマリノードのパブリック DNS 名の形式に合致するドメインに限定することができます。プライマリノードでホストされているウェブサイトとインターネットのウェブサイトの表示を切り替えると、ブラウザのアドオンで自動的にプロキシのオンとオフが切り替えられます。プロキシ設定を管理するには、FoxyProxy や SwitchyOmega などのアドオンを使用するようにブラウザを設定します。

SSH トンネルの作成の詳細については、「オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする」を参照してください。利用可能なウェブインターフェイスの詳細については、「Amazon EMR クラスターでホストされているウェブインターフェイスを表示する」を参照してください。

プロキシアドオンをセットアップするときに、次の設定を含めてください。

  • ホストアドレスとして localhost を使用します。

  • オプション 2、パート 1: ダイナミックポートフォワーディングを使用してプライマリノードへの SSH トンネルをセットアップする」でプライマリノードの SSH トンネルを確立するために選択したのと同じローカルポート番号を使用します。たとえば、ポート 8157 です。このポートは、接続に使用する PuTTY またはその他のターミナルエミュレータで使用するポート番号とも一致する必要があります。

  • SOCKS v5 プロトコルを指定します。SOCKS v5 では、オプションでユーザー認証を設定できます。

  • URL パターン

    次の URL パターンを許可リストに登録し、ワイルドカードパターンタイプで指定する必要があります。

    • US リージョンのクラスターのパブリック DNS 名と照合する *ec2*.*compute*.amazonaws.com* パターンと *10*.amazonaws.com* パターン。

    • 他のすべてのリージョンのクラスターのパブリック DNS 名と照合する *ec2*.compute* パターンと *10*.compute* パターン。

    • Hadoop の JobTracker のログファイルへのアクセスを提供する 10.* パターン。ネットワークアクセスプランと競合する場合は、このフィルターを変更します。

    • us-east-1 リージョン、および他のすべてのリージョンのクラスターのプライベート (内部) DNS 名とそれぞれ照合する *.ec2.internal* パターンと *.compute.internal* パターン。

例: Firefox 用の FoxyProxy を設定する

Mozilla Firefox の FoxyProxy Standard (バージョン 7.5.1) の設定を次の例に示します。

FoxyProxy は、プロキシ管理ツールのセットを提供します。これにより、Amazon EMR クラスター内の Amazon EC2 インスタンスで使用されるドメインに対応するパターンと一致する URL についてプロキシサーバーを使用できます。

Mozilla Firefox を使用して FoxyProxy をインストールして設定するには
  1. Firefoxで、https://addons.mozilla.org/ に移動し、FoxyProxy Standard を検索して、指示に従って Firefox に FoxyProxy を追加します。

  2. テキストエディタを使用し、次の設定例から foxyproxy-settings.json という名前の JSON ファイルを作成します。

    { "k20d21508277536715": { "active": true, "address": "localhost", "port": 8157, "username": "", "password": "", "type": 3, "proxyDNS": true, "title": "emr-socks-proxy", "color": "#0055E5", "index": 9007199254740991, "whitePatterns": [ { "title": "*ec2*.*compute*.amazonaws.com*", "active": true, "pattern": "*ec2*.*compute*.amazonaws.com*", "importedPattern": "*ec2*.*compute*.amazonaws.com*", "type": 1, "protocols": 1 }, { "title": "*ec2*.compute*", "active": true, "pattern": "*ec2*.compute*", "importedPattern": "*ec2*.compute*", "type": 1, "protocols": 1 }, { "title": "10.*", "active": true, "pattern": "10.*", "importedPattern": "http://10.*", "type": 1, "protocols": 2 }, { "title": "*10*.amazonaws.com*", "active": true, "pattern": "*10*.amazonaws.com*", "importedPattern": "*10*.amazonaws.com*", "type": 1, "protocols": 1 }, { "title": "*10*.compute*", "active": true, "pattern": "*10*.compute*", "importedPattern": "*10*.compute*", "type": 1, "protocols": 1 }, { "title": "*.compute.internal*", "active": true, "pattern": "*.compute.internal*", "importedPattern": "*.compute.internal*", "type": 1, "protocols": 1 }, { "title": "*.ec2.internal* ", "active": true, "pattern": "*.ec2.internal*", "importedPattern": "*.ec2.internal*", "type": 1, "protocols": 1 } ], "blackPatterns": [] }, "logging": { "size": 100, "active": false }, "mode": "patterns", "browserVersion": "68.12.0", "foxyProxyVersion": "7.5.1", "foxyProxyEdition": "standard" }
  3. Firefox で [拡張機能の管理] ページを開きます ([about:addons] に移動し、[拡張機能] を選択します)。

  4. [FoxyProxy Standard] を選択し、その他のオプションボタン (省略記号のようなボタン) を選択します。

  5. ドロップダウンから [Options] を選択します。

  6. 左のメニューから、[Import Settings] を選択します。

  7. [Import Settings] ページで [Import Settings from FoxyProxy 6.0+] の下の [Import Settings] を選択し、作成した foxyproxy-settings.json ファイルの場所を参照して、ファイルを選択し [Open] を選択します。

  8. 既存の設定を上書きして新しい設定を保存するかどうかを確認するメッセージが表示されたら [OK] を選択します。

例: Chrome 用の SwitchyOmega を設定する

Google Chrome の SwitchyOmega 拡張機能のセットアップ方法を次の例に示します。SwitchyOmega を使用すると、複数のプロキシの設定、管理、およびそれらの間の切り替えを実行できます。

Google Chrome で SwitchyOmega をインストールして設定するには
  1. https://chrome.google.com/webstore/category/extensions に移動し、Proxy SwitchyOmega を検索して、Chrome に追加します。

  2. [New profile] 選択し、プロファイル名として emr-socks-proxy を入力します。

  3. [PAC profile] を選択し、[Create] を選択します。プロキシ自動設定 (Proxy Auto-Configuration, PAC) ファイルは、ウェブプロキシサーバーに転送する必要があるブラウザリクエストの許可リストを定義するのに役立ちます。

  4. [PAC Script] フィールドのコンテンツを、ウェブプロキシサーバー経由で転送する URL を定義する次のスクリプトに置き換えます。SSH トンネルのセットアップ時に別のポート番号を指定した場合は、8157 を指定のポート番号に置き換えます。

    function FindProxyForURL(url, host) { if (shExpMatch(url, "*ec2*.*compute*.amazonaws.com*")) return 'SOCKS5 localhost:8157'; if (shExpMatch(url, "*ec2*.compute*")) return 'SOCKS5 localhost:8157'; if (shExpMatch(url, "http://10.*")) return 'SOCKS5 localhost:8157'; if (shExpMatch(url, "*10*.compute*")) return 'SOCKS5 localhost:8157'; if (shExpMatch(url, "*10*.amazonaws.com*")) return 'SOCKS5 localhost:8157'; if (shExpMatch(url, "*.compute.internal*")) return 'SOCKS5 localhost:8157'; if (shExpMatch(url, "*ec2.internal*")) return 'SOCKS5 localhost:8157'; return 'DIRECT'; }
  5. [Actions] の下で、[Apply changes] を選択して、プロキシ設定を保存します。

  6. Chrome ツールバーで [SwitchyOmega] を選択し、emr-socks-proxy プロファイル選択します。

ブラウザでウェブインターフェイスにアクセスする

ウェブインターフェイスを開くには、ブラウザのアドレスバーにプライマリノードまたはコアノードのパブリック DNS 名を入力し、その後に選択したインターフェイスのポート番号を入力します。Spark History Server に接続するために入力する URL を次の例に示します。

http://master-public-dns-name:18080/

ノードのパブリック DNS 名を取得する手順については、「プライマリノードのパブリック DNS 名を取得する」を参照してください。ウェブインターフェイス URL の詳細なリストについては、「Amazon EMR クラスターでホストされているウェブインターフェイスを表示する」を参照してください。