大家好,又见面了,我是你们的朋友全栈君。
序
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用户
代码语言:javascript复制useradd knox
后续操作全部使用 knox 用户进行操作!
代码语言:javascript复制su knox
解压 knox包
下载好安装包后,解压在安装目录,如:
代码语言:javascript复制cd /usr/local/knox
unzip knox-1.6.1.zip
启动内置Ldap
代码语言:javascript复制cd ${knox_home}./bin/ldap.sh start
创建master 秘钥
代码语言:javascript复制${knox_home}/bin/knoxcli.sh create-master ${自定义一个密码 master}
这里创建了一个 master 秘钥,是给knox gateway的秘钥。
及的记录这个 pem 文件的位置
启动gateway
代码语言:javascript复制${knox_home}/bin/gateway.sh start
启动完毕后使用 gateway.sh status 查看gateway的运行状态:
登陆knox页面查看是否正常
代码语言:javascript复制curl https://${knox_server}:8443/gateway/manager/admin-ui
默认账号密码为 admin / admin-password
如果发现关于白名单的报错,那可能是由于默认非本机访问报错:
代码语言:javascript复制vim ${knox_server}/conf/gateway-site.xml:
代码语言:javascript复制<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映射等等:
代码语言:javascript复制 <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 也没啥好说的,这里直接给配置:
代码语言:javascript复制<!--
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 两个文件。
更改也很简单:
代码语言:javascript复制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'
然后就可以变成:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/210765.html原文链接:https://javaforall.cn