このトピックでは、E-MapReduce 上で Knox を設定し、パブリックネットワーク経由で HDFS、YARN、Spark、Ganglia などのサービスの Web UI にアクセスする方法について説明します。
前提条件
Knox サービスを選択した E-MapReduce クラスターが作成済みである必要があります。 詳細については、「クラスターの作成」をご参照ください。
クラスターの作成時に Knox サービスを選択しなかった場合は、追加できます。 詳細については、「サービスの追加」をご参照ください。
事前準備
セキュリティグループアクセスの設定
-
現在のデバイスのパブリック IP アドレスを取得します。
クラスターコンポーネントに安全にアクセスするには、セキュリティグループのルールを設定する際に、現在のパブリック IP アドレスからのアクセスのみを許可してください。 IP アドレス にアクセスして、現在のパブリック IP アドレスを確認してください。
-
ポートを追加します。
このトピックでは、ポート 8443 を例として使用します。
-
E-MapReduce コンソールで、クラスターの [基本情報] ページの [Security] セクションに移動し、[Cluster Security Group] の横にあるリンクをクリックします。
-
[セキュリティグループ] ページで、[受信] タブの [Add Rule] をクリックします。
-
[ Authorization Object ] を前の手順で取得したパブリック IP アドレスに設定し、[ Port Range ] を [ 8443/8443 ] に設定します。
-
[Save] をクリックします。
-
-
セキュリティリスクを防ぐため、[権限付与オブジェクト] を 0.0.0.0/0 に設定しないでください。
-
クラスターの作成時にパブリック IP アドレスを割り当てなかった場合は、ECS コンソールでマスターノードの ECS インスタンスに割り当てることができます。
Knox ユーザーの設定
Knox へのアクセスには、ユーザー名とパスワードによる認証が必要です。Knox はユーザー認証に LDAP を使用します。このサービスは、クラスター内の Apache Directory Server サービスが提供します。
-
方法 1 (推奨)
EMR on ECS ページで、クラスターの名前をクリックします。 [Users] タブをクリックして Knox ユーザーアカウントを追加します。 詳細については、「ユーザー管理」をご参照ください。
-
方法 2:
-
SSH でクラスターに接続します。 詳細については、「クラスターへのログイン」をご参照ください。
-
ユーザーデータを準備します。 次の例では、
Taroという名前のユーザーを使用します。users.ldif ファイルを編集します。
su knox vim /opt/apps/KNOX/knox-current/templates/users.ldifファイル内で、
emr-guestをすべてTaroに、EMR GUESTをすべてTaroに置き換え、userPasswordの値を任意のパスワードに設定します。 -
次のコマンドを実行して、ユーザーデータを LDAP にインポートします。
cd /opt/apps/KNOX/knox-current/templates sh ldap-sample-users.sh
-
Web UI へのアクセス
Web UI へのアクセス方法の詳細については、「コンソールからのオープンソースコンポーネントの Web UI へのアクセス」をご参照ください。
よくある質問
-
Q: Knox コンポーネントが予期せず停止します。 Knox を起動しようとすると、プロセスが失敗し、
Failed to start gateway: org.apache.knox.gateway.services.ServiceLifecycleException: Gateway SSL Certificate is Expiredというエラーが表示されます。s/ecm/sxxx.0.3/bin/.. as GATEWAY_HOME via system property. 2021-08-03 16:37:35,794 INFO knox.gateway (GatewayConfigImpl.java:init(346)) - Cookie scoping feature enabled: false 2021-08-03 16:37:36,091 WARN knox.gateway (RemoteAliasService.java:init(448)) - There is no registry client defined for remote configuration monitoring. 2021-08-03 16:37:36,091 INFO knox.gateway (RemoteAliasService.java:start(485)) - Remote Alias Service enabled 2021-08-03 16:37:36,102 INFO knox.gateway (JettySSLService.java:init(96)) - Credential store for the gateway instance found - no need to create one. 2021-08-03 16:37:36,120 INFO knox.gateway (JettySSLService.java:init(118)) - Keystore for the gateway instance found - no need to create one. 2021-08-03 16:37:36,124 INFO knox.gateway (JettySSLService.java:logAndValidateCertificate(148)) - The Gateway SSL certificate is issued to hostname: localhost. 2021-08-03 16:37:36,125 INFO knox.gateway (JettySSLService.java:logAndValidateCertificate(151)) - The Gateway SSL certificate is valid between: 3/9/20 4:12 PM and 3/9/21 4:12 PM. 2021-08-03 16:37:36,136 FATAL knox.gateway (GatewayServer.java:main(162)) - Failed to start gateway: org.apache.knox.gateway.services.ServiceLifecycleException: Gateway SSL Certificate is Expired. Server will not start. -
A: この問題を解決するには、次の手順に従ってください。
-
SSH でクラスターにログインします。 詳細については、「クラスターへのログイン」をご参照ください。
-
次のコマンドを実行して、期限切れの証明書の名前を変更します。
sudo mv /opt/apps/KNOX/knox-current/data/security/keystores/gateway.jks /opt/apps/KNOX/knox-current/data/security/keystores/bak_gateway.jks説明期限切れの証明書を別のディレクトリに移動することもできます。
-
Knox サービスを開始します。
-
EMR コンソールの [Services] ページで、Knox サービスの を選択します。
-
表示されるダイアログボックスで、実行理由を入力して [OK] をクリックします。
-
[Confirm] ダイアログボックスで、[OK] をクリックします。
-
-
> START