本文介紹如何在E-MapReduce上配置Knox,以通過公網方式訪問HDFS、YARN、Spark和Ganglia等Web UI頁面。
前提條件
已建立選擇了Knox服務的E-MapReduce,詳情請參見建立叢集。
如果您建立的叢集未選擇Knox服務,可以通過新增服務來添加。
準備工作
設定安全性群組訪問
-
擷取您當前裝置的公網訪問IP地址。
為了安全的訪問叢集組件,在設定安全性群組策略時,推薦您只針對當前的公網訪問IP地址開放。訪問IP地址,即可查看您當前的公網訪問IP地址。
-
添加連接埠:
本文以添加8443連接埠為例介紹。
-
在EMR控制台叢集的基础信息頁面的安全地區,單擊集群安全组右側的連結。
-
在安全组頁面,單擊入方向中的增加規則。
-
訪問來源 填寫為上一步驟中擷取的公網訪問IP地址, 訪問目的 填寫為 8443/8443 。
-
單擊保存。
-
-
為防止被外部的使用者攻擊導致安全問題,授權對象禁止填寫為0.0.0.0/0。
-
如果您建立叢集時,沒有掛載公網IP,可以在ECS控制台為Master節點上的ECS執行個體添加公網IP。
設定Knox使用者
訪問Knox時需要驗證身份,即需要輸入您的使用者名稱和密碼。Knox的使用者身分識別驗證基於LDAP,您可以使用叢集中Apache Directory Server的LDAP服務。
-
方式一(推薦)
在EMR on ECS頁面,單擊目的地組群的叢集名稱。單擊上方的用户管理頁簽,直接添加Knox訪問帳號,詳情請參見使用者管理。
-
方式二 :
-
通過SSH方式串連叢集,詳情請參見登入叢集。
-
準備您的使用者資料,例如Tom。
編輯users.ldif檔案。
su knox vim /opt/apps/KNOX/knox-current/templates/users.ldif替換檔案中所有的
emr-guest為Tom,替換EMR GUEST為Tom,設定userPassword的值為您自己的密碼。 -
執行以下命令,匯入使用者資料至LDAP。
cd /opt/apps/KNOX/knox-current/templates sh ldap-sample-users.sh
-
訪問Web UI
訪問Web UI的詳情,請參見通過控制台訪問開源組件Web介面。
常見問題
-
Q:Knox組件異常停止,啟動Knox的時候報錯
Failed to start gateway: org.apache.hadoop.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控制台的集群服务頁面,選擇Knox服務地區的。
-
在彈出的對話方塊中,輸入執行原因,單擊确定。
-
在确认對話方塊中,單擊确定。
-
-
> 启动