Knox 代理各类组件

Posted 青冬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Knox 代理各类组件相关的知识,希望对你有一定的参考价值。

Since:2022年8月9日09:34:13

Auth:Hadi

前言

使用 knox 进行正向和反向代理,并且进行一些权限认证,使用起来很方便,特别是对于 NiFi 的相关权限认证(ldap),所以本章节讲下我使用 knox 代理的服务,以及相关的一些配置选项。

knox 快速搭建

这里只讲怎么快速搭建一个knox,使用 Knox Gateway – Announcing Apache Knox 1.6.1! 中最新版 knox 1.6.1 进行搭建操作。

官方文档在这里 https://knox.apache.org/books/knox-1-6-0/user-guide.html#Quick+Start

确保环境

使用 java -version 进行java版本的查看,需求在1.8+

创建knox用户

useradd knox

后续操作全部使用 knox 用户进行操作!

su knox

解压 knox包

下载好安装包后,解压在安装目录,如:

cd /usr/local/knox

unzip knox-1.6.1.zip

启动内置Ldap

cd $knox_home

./bin/ldap.sh start

创建master 秘钥

$knox_home/bin/knoxcli.sh create-master $自定义一个密码 master

这里创建了一个 master 秘钥,是给knox gateway的秘钥。

及的记录这个 pem 文件的位置

启动gateway

$knox_home/bin/gateway.sh start

启动完毕后使用 gateway.sh status 查看gateway的运行状态:

登陆knox页面查看是否正常

curl https://$knox_server:8443/gateway/manager/admin-ui

默认账号密码为 admin / admin-password

如果发现关于白名单的报错,那可能是由于默认非本机访问报错:

vim $knox_server/conf/gateway-site.xml:
<property>
    <name>gateway.dispatch.whitelist</name>
    <value>.*</value>
    <!--<value>^https?:\\/\\/(localhost|127\\.0\\.0\\.1|0:0:0:0:0:0:0:1|::1):[0-9].*$</value>-->
    <description>The whitelist to be applied for dispatches associated with the service roles specified by gateway.dispatch.whitelist.services.
        If the value is DEFAULT, a domain-based whitelist will be derived from the Knox host.</description>
</property>

如果登陆成功那就ok了 我们knox 已经搭建完成。

正向代理各个大数据组件配置

模板

模板在$knox_home/conf/topologies 中有一个 sandbox.xml

默认已经帮我们把所有的配置好了,所以只需要更改下面service的ip就行。

讲解

随便讲一下需要注意的点:

topologies目录下的xml文件才会被加载,如果下面有文件夹不会继续查找。

在这里面的每个xml被视为一个集群,集群中可以有多个service。(这里的集群可以理解为相同的登陆验证方式&权限)

对于我们的$topology.xml文件主要是两部分:

gateway

主要包含各种配置项,如采取的服务,认证过期时间,认证域,dn映射等等:

            <param>
                <name>main.ldapRealm.userDnTemplate</name>
                <value>uid=0,ou=people,dc=hadoop,dc=apache,dc=org</value>
                <!-- 使用 0 来代表登陆knox时的用户名,然后生成使用这个dn去ldap 中寻找匹配的-->
            </param>

service

service 也没啥好说的,这里直接给配置:

<!--
    service 相关的配置
    我们更喜欢自己人去访问对应的页面
    所以都使用自带的个各种UI
    比如:
-->
  <service>
    <role>NIFI</role>
    <url>http://10.254.xx.xx:10111/</url>
    <param>
      <name>useTwoWaySsl</name>
      <value>true</value>
    </param>
  </service>

  <service>
    <role>YARNUI</role>
    <url>http://10.254.xx.xx:8088/</url>
    <param>
      <name>useTwoWaySsl</name>
      <value>true</value>
    </param>
  </service>

  <service>
    <role>HDFSUI</role>
    <url>http://10.254.xx.xx:50070</url>
    <url>http://10.254.xx.xx:50070</url>
    <param>
      <name>useTwoWaySsl</name>
      <value>true</value>
    </param>
  </service>

  <service>
    <role>HBASEUI</role>
    <url>http://10.254.xx.xx:16010/</url>
    <url>http://10.254.xx.xx:16010/</url>
    <version>2.1.0</version>
    <param>
      <name>useTwoWaySsl</name>
      <value>true</value>
    </param>
  </service>

注意1:HBASE代理版本设置

hbase 的代理,因为下面有两个版本:1.1 和 2.1 。默认情况下会加载1.1的代理解析,如果不手动设置version则可能出现:

/gateway/sandbox/hbase/webui/HTTP ERROR 404

注意2:Yarn 的ha 设置

yarn ha 本身 knox 当前是不支持的,所以进行了一些更改已适配 如果进行去的节点不是 Acitve。

我们可以这样实现:在$knox_home/data/services 中添加一个 yarnui2,复制 yarnui中的内容,然后更改 rewrite.xml & service.xml 两个文件。

更改也很简单:

sed -i rewrite.xml 's/YARNUI/YARNUI2/g'
sed -i service.xml 's/YARNUI/YARNUI2/g'
sed -i rewrite.xml 's/\\/yarn\\//\\/yarn2\\//g'
sed -i service.xml 's/\\/yarn\\//\\/yarn2\\//g'

然后就可以变成:

 

以上是关于Knox 代理各类组件的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError:没有名为“knox”的模块

带有 Knox 代币的 DRF 的 Djoser

通过 Knox 获取到 Hive 的 JDBC 连接时出错

使用 Hive JDBC 驱动程序通过 Squirrel 连接到 Knox

如何使用 node.js、Express 和 knox 将文件从浏览器上传到 Amazon S3? [关闭]

如何在 Zeppelin 中基于 HadoopGroupProvider 中的组配置角色,使用 Knox 提供基于 SAML 的 SSO?