使用 SSH 隧道访问 Ambari Web UI、JobHistory、NameNode、Oozie 和其他 Web UI

使用基于 Linux 的 HDInsight 群集可以通过 Internet 访问 Ambari Web UI,但无法访问 UI 的某些功能。 例如,无法访问通过 Ambari 呈现的其他服务的 Web UI。 若要获得 Ambari Web UI 的完整功能,必须与群集头建立 SSH 隧道。

为何使用 SSH 隧道?

Ambari 中的多个菜单只能通过 SSH 隧道工作。 这些菜单依赖于其他节点类型(例如辅助角色节点)上运行的网站和服务。 通常,这些网站未受保护,因此直接在 Internet 上公开并不安全。

以下 Web UI 需要 SSH 隧道:

  • JobHistory
  • NameNode
  • 线程堆栈
  • Oozie Web UI
  • HBase Master 和日志 UI

如果使用脚本操作来自定义群集,则安装的任何服务或实用工具都需要 SSH 隧道才能公开 Web UI。 例如,如果使用脚本操作安装 Hue,则必须使用 SSH 隧道来访问 Hue Web UI。

Important

如果可以通过虚拟网络直接访问 HDInsight,则不需要使用 SSH 隧道。 有关通过虚拟网络直接访问 HDInsight 的示例,请参阅将 HDInsight 连接到本地网络一文。

什么是 SSH 隧道

安全外壳 (SSH) 隧道将已发送的流量路由到本地工作站的端口。 流量通过与 HDInsight 群集头节点建立的 SSH 连接路由。 请求将得到解析,就如同它源自头节点一样。 然后,通过与工作站建立的隧道将响应路由回去。

先决条件

  • SSH 客户端。 有关详细信息,请参阅 Use SSH with HDInsight(对 HDInsight 使用 SSH)。

  • 可配置为使用 SOCKS5 代理的 Web 浏览器。

    Warning

    内置于 Windows 的 SOCKS 代理不支持 SOCKS5,并且不适用于本文档中的步骤。 以下浏览器依赖于 Windows 代理设置,当前不适用于此文档中的步骤:

    • Microsoft Edge
    • Microsoft Internet Explorer

    Google Chrome 也依赖于 Windows 代理设置。 但是,可以安装支持 SOCKS5 的扩展。 我们建议使用 FoxyProxy Standard。

使用 SSH 命令创建隧道

使用以下 ssh 命令创建 SSH 隧道。 将 USERNAME 替换为 HDInsight 群集的 SSH 用户,将 CLUSTERNAME 替换为 HDInsight 群集的名称:

ssh -C2qTnNf -D 9876 USERNAME@CLUSTERNAME-ssh.azurehdinsight.cn

此命令创建一个通过 SSH 将流量路由到群集本地端口 9876 的连接。 选项包括:

  • D 9876 - 通过隧道路由流量的本地端口。
  • C - 压缩所有数据,因为 Web 流量大多为文本。
  • 2 - 强制 SSH 仅尝试协议版本 2。
  • q - 静默模式。
  • T - 禁用 pseudo-tty 分配,因为我们只要转发端口。
  • n - 防止读取 STDIN,因为我们将仅转发端口。
  • N - 不执行远程命令,因为我们只要转发端口。
  • f - 在后台运行。

在命令完成后,发送到本地计算机上的端口 9876 的流量将路由到群集头节点。

使用 PuTTY 创建隧道

PuTTY 是适用于 Windows 的图形 SSH 客户端。 执行以下步骤可使用 PuTTY 创建 SSH 隧道:

  1. 打开 PuTTY 并输入连接信息。 如果不熟悉 PuTTY,请参阅 PuTTY 文档 (http://www.chiark.greenend.org.uk/~sgtatham/putty/docs.html)

  2. 在对话框左侧的“类别”部分中,依次展开“连接”和“SSH”,并选择“隧道”。

  3. 提供以下有关“用于控制 SSH 端口转发的选项”窗体的信息:

    • 源端口 - 客户端上要转发的端口。 例如 9876

    • 目标 - 基于 Linux 的 HDInsight 群集的 SSH 地址。 例如 mycluster-ssh.azurehdinsight.cn

    • 动态 - 启用动态 SOCKS 代理路由。

      隧道选项图像

  4. 单击“添加”以添加设置,并单击“打开”以打开 SSH 连接。

  5. 出现提示时,登录到服务器。

从浏览器使用隧道

Important

本部分中的步骤使用 Mozilla FireFox 浏览器,因为它在所有平台中提供相同的代理设置。 对于其他新式浏览器(如 Google Chrome),可能需要 FoxyProxy 等扩展才能使用隧道。

  1. 将浏览器配置为使用 localhost,并将创建隧道时使用的端口配置为 SOCKS v5 代理。 Firefox 中的设置如下所示。 如果使用的端口不是 9876,请将端口更改为所用的端口:

    Firefox 设置图像

    Note

    通过选择“远程 DNS”,可使用 HDInsight 群集解析域名系统 (DNS) 请求。 此设置使用群集的头节点解析 DNS。

  2. 请通过访问某个站点(例如 http://www.whatismyip.com/)来验证隧道的工作状态。 返回的 IP 应是 Azure 数据中心使用的 IP。

Ambari Web UI 访问验证

建立群集后,请通过以下步骤验证是否可以从 Ambari Web 访问服务 Web UI:

  1. 在浏览器中,转到 http://headnodehost:8080headnodehost 地址通过隧道发送到群集,并解析为运行 Ambari 的头节点。 出现提示时,请输入群集的管理员用户名 (admin) 和密码。 Ambari Web UI 可能会再次出现提示。 如果出现,请重新输入信息。

    Note

    使用 http://headnodehost:8080 地址连接到群集时,将通过隧道进行连接。 通信是使用 SSH 隧道而不是 HTTPS 保护的。 若要使用 HTTPS 通过 Internet 进行连接,请使用 https://CLUSTERNAME.azurehdinsight.cn,其中 CLUSTERNAME 是群集的名称。

  2. 在 Ambari Web UI 中,请选择页面左侧列表中的“HDFS”。

    已选择“HDFS”的截图

  3. 显示 HDFS 服务信息时,请选择“快速链接”。 将显示群集头节点列表。 选择其中一个头节点,并选择“NameNode UI”。

    已展开“快速链接”菜单的截图

    Note

    选择“快速链接”时,可能会看到等待指示器。 如果 Internet 连接速度慢,则可能会出现此情况。 请等待一两分钟,让系统从服务器接收数据,然后再次尝试列出节点列表。

    “快速链接”菜单中的某些项可能在屏幕右侧截断。 如果是这样,请使用鼠标展开菜单,然后使用向右键向右滚动屏幕,查看菜单的余下内容。

  4. 随后将显示类似于下图的页面:

    NameNode UI 的截图

    Note

    请注意此页的 URL,它应类似于 http://hn1-CLUSTERNAME.randomcharacters.cx.internal.chinacloudapp.cn:8088/cluster。 此 URI 使用节点的内部完全限定域名 (FQDN),只能在使用 SSH 隧道的情况下访问它。

后续步骤

了解如何创建和使用 SSH 隧道后,请参阅以下文档了解 Ambari 的其他用法:

有关将 SSH 与 HDInsight 配合使用的详细信息,请参阅将 SSH 与 HDInsight 配合使用