SSH トンネルを使用すると、クラスターの内部ネットワークを公開することなく、ご利用の E-MapReduce (EMR) クラスター上のオープンソースコンポーネントのウェブ UI に安全にアクセスできます。ローカルポートフォワーディングと SOCKS プロキシを使用した動的ポートフォワーディングの 2 つの方法があります。
オープンソースコンポーネントのウェブ UI にアクセスするためのすべての利用可能な方法については、「オープンソースコンポーネントのウェブ UI へのアクセス」をご参照ください。
メソッドの選択
| メソッド | 最適な用途 | 制限事項 |
|---|---|---|
| ローカルポートフォワーディング | 一度に 1 つのコンポーネントにアクセスする場合 | ジョブ詳細ページにアクセスできない |
| 動的ポートフォワーディング | 1 つのトンネルで複数のコンポーネントに同時にアクセスする場合 | ブラウザのプロキシ設定が必要 |
前提条件
開始する前に、以下を確認してください。
EMR クラスター。詳細については、「クラスターの作成」をご参照ください。
EMR クラスターのマスターノードに接続されたクライアント。詳細については、「Elastic Compute Service (ECS) インスタンスへの EIP の関連付け」をご参照ください。
ローカルポートフォワーディング
ローカルポートフォワーディングは、ご利用のオンプレミスマシンのポートをマスターノードのポートにマッピングすることで、localhost 経由で単一コンポーネントのウェブ UI にアクセスできるようにします。
この方法では、ジョブ詳細ページへのナビゲーションはサポートされていません。
ステップ 1: SSH トンネルの作成
ご利用のオンプレミスマシンでターミナルを開き、次のいずれかのコマンドを実行します。この例では、ローカルポート 8156 をマスターノードのポート 8088 に転送して、YARN ResourceManager のウェブ UI にアクセスします。別のコンポーネントにアクセスするには、8088 を適切なポート番号に置き換えてください。コンポーネントのポート一覧については、「オープンソースコンポーネントの共通ポート」をご参照ください。
秘密鍵ファイルを使用した接続
ssh -i <private-key-file-path> -N -L <local-port>:<master-node-name>:<component-port> root@<master-node-public-ip>ユーザー名とパスワードを使用した接続
ssh -N -L <local-port>:<master-node-name>:<component-port> root@<master-node-public-ip>| パラメーター | 説明 | 例 |
|---|---|---|
-i | 認証に使用される秘密鍵ファイルへのパス。詳細については、「SSH キーペアの管理」をご参照ください。 | ~/.ssh/emr-key.pem |
-N | リモートコマンドを実行せずにトンネルを作成します。トンネルが確立された後、ターミナルは何も出力しませんが、これは想定された動作です。 | — |
-L | ローカルポートフォワーディングを有効にします。マスターノード経由でトラフィックを <local-port> から <master-node-name>:<component-port> に転送します。 | — |
<private-key-file-path> | 秘密鍵ファイルへのパス。 | ~/.ssh/emr-key.pem |
<local-port> | ご利用のマシン上の任意の空きポート。 | 8156 |
<master-node-name> | クラスターの [ノード] タブに表示されるマスターノードの名前。詳細については、「ノードのパブリック IP アドレスと名前の取得」をご参照ください。 | master-1-1 |
<component-port> | ターゲットのオープンソースコンポーネントのポート。 | 8088 (YARN) |
<master-node-public-ip> | [ノード] タブに表示されるマスターノードのパブリック IP アドレス。詳細については、「ノードのパブリック IP アドレスと名前の取得」をご参照ください。 | 203.0.113.10 |
トンネルが確立された後も、ターミナルは実行したままにしてください。-N フラグは、SSH がトンネルを維持するだけでリモートコマンドを実行しないことを意味するため、出力は生成されません。これは正常な動作です。
ステップ 2: ウェブ UI へのアクセス
ブラウザのアドレスバーに http://localhost:<local-port> と入力し、Enter キーを押します。
たとえば、YARN ResourceManager にアクセスするには、http://localhost:8156 と入力します。
複数のコンポーネントのウェブ UI に同時にアクセスするには、追加のターミナルを開き、コンポーネントごとに異なるローカルポートを使用してステップ 1 を繰り返します。
動的ポートフォワーディング
動的ポートフォワーディングは、すべてのトラフィックをマスターノード経由でルーティングする SOCKS プロキシをローカルポートで開始します。1 つのトンネルで、どのコンポーネントのウェブ UI にもアクセスできます。ブラウザでコンポーネントのホスト名とポートを変更するだけです。
ステップ 1: SSH トンネルの作成
ご利用のオンプレミスマシンでターミナルを開き、次のいずれかのコマンドを実行します。この例では、ローカルポート 8157 で SOCKS プロキシを開始します。
秘密鍵ファイルを使用した接続
ssh -i <private-key-file-path> -N -D <local-port> root@<master-node-public-ip>ユーザー名とパスワードを使用した接続
ssh -N -D <local-port> root@<master-node-public-ip>| パラメーター | 説明 | 例 |
|---|---|---|
-i | 認証に使用される秘密鍵ファイルへのパス。詳細については、「SSH キーペアの管理」をご参照ください。 | ~/.ssh/emr-key.pem |
-N | リモートコマンドを実行せずにトンネルを作成します。トンネルが確立された後、ターミナルは何も出力しませんが、これは想定された動作です。 | — |
-D | 動的ポートフォワーディングを有効にします。<local-port> でリッスンし、マスターノード上の任意のポートにトラフィックをルーティングする SOCKS プロキシを開始します。 | — |
<local-port> | ご利用のマシン上の任意の空きポート。 | 8157 |
<master-node-public-ip> | [ノード] タブに表示されるマスターノードのパブリック IP アドレス。詳細については、「ノードのパブリック IP アドレスと名前の取得」をご参照ください。 | 203.0.113.10 |
トンネルが確立された後も、ターミナルは実行したままにしてください。-N フラグは、SSH がトンネルを維持するだけでリモートコマンドを実行しないことを意味するため、出力は生成されません。これは正常な動作です。
ステップ 2: ブラウザのプロキシ設定
トンネルが実行されたら、SOCKS プロキシ経由でトラフィックをルーティングするように Google Chrome を設定します。CLI または SwitchyOmega 拡張機能のいずれかを使用します。
オプション A: CLI
ターミナルを開き、お使いのオペレーティングシステムの Google Chrome インストールディレクトリに移動します。
オペレーティングシステム デフォルトのインストールディレクトリ macOS X /Applications/Google\ Chrome.app/Contents/macOSLinux /usr/bin/google-chromeWindows (64 ビット) C:\Program Files\Google\Chrome\Application\Windows (32 ビット) C:\Program Files (x86)\Google\Chrome\Application\SOCKS プロキシ設定で Google Chrome を起動します。
8157をステップ 1 で設定したローカルポートに置き換えます。macOS X
./Google\ Chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/Linux
chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/Windows
chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=c:\\tmppath\\
オプション B: SwitchyOmega 拡張機能
SwitchyOmega 拡張機能を使用すると、同じブラウザウィンドウ内で直接接続とプロキシ経由のブラウジングを切り替えることができます。
Google Chrome に SwitchyOmega 拡張機能を追加します。
左側のナビゲーションウィンドウで [New profile] をクリックします。[New Profile] ダイアログボックスで、[Profile name] フィールドに名前 (例:
SSH tunnel) を入力し、[PAC Profile] を選択して、[Create] をクリックします。[PAC Script] エディターに、次のスクリプトを貼り付けます。すべての
8157をステップ 1 で設定したローカルポートに置き換えます。function regExpMatch(url, pattern) { try { return new RegExp(pattern).test(url); } catch (ex) { return false; } } function FindProxyForURL(url, host) { if (shExpMatch(url, "*localhost*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*emr-header*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*emr-worker*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*master*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*core*")) return "SOCKS5 localhost:8157"; return 'DIRECT'; }左側のナビゲーションウィンドウで [Apply changes] をクリックします。
ブラウザの右上隅で、作成した [SSH tunnel] プロファイルを選択します。
ステップ 3: ウェブ UI へのアクセス
ブラウザのアドレスバーに http://<master-node-name>:<component-port> と入力し、Enter キーを押します。
たとえば、YARN ResourceManager にアクセスするには、http://master-1-1:8088 と入力します。
| パラメーター | 説明 | 例 |
|---|---|---|
<master-node-name> | [ノード] タブに表示されるマスターノードの名前。詳細については、「ノードのパブリック IP アドレスと名前の取得」をご参照ください。 | master-1-1 |
<component-port> | ターゲットのオープンソースコンポーネントのポート。詳細については、「オープンソースコンポーネントの共通ポート」をご参照ください。 | 8088 (YARN) |
複数のコンポーネントのウェブ UI に同時にアクセスするには、アドレスバーのポート番号を変更します。追加のトンネルは必要ありません。