首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

2020全网最全Apache Knox实战总结

  • 25-03-03 01:41
  • 3106
  • 12827
blog.csdn.net

本文针对knox_1.0.0进行总结,过程中可能会穿插其他版本的异同


一、环境准备

运行环境:Java1.8
支持Hadoop 3.x
下载knox1.0.0
https://cwiki.apache.org/confluence/display/KNOX/Apache+Knox+Releases
这个官网链接有全版本的资源

二、解压安装

在这里插入图片描述
cd knox-1.0.0查看目录如下
在这里插入图片描述

三、knox文件目录解析

这里主要对conf/与data/等重要的配置文件进行介绍下
logs/,bin/,会在启动knox时说明下

3.1 conf/

解压后的knox-1.0.0为{GATEWAY_HOME}目录,启动前要先依据自己的Hadoop集群情况进行配置。
主要在{GATEWAY_HOME}/conf目录下进行配置
包含适用于gateway全局的配置
tree结构,如下
在这里插入图片描述
这里说几个比较重要的配置文件

  • gateway-site.xml
    重要参数如下
paramdescriptiondefault
gateway.portknox默认端口8443
gateway.path默认url中的路径gateway
gateway.hadoop.kerberos.secured集群是否开启kerberosfalse
java.security.krb5.confkrb5.conf的完整路径/etc/knox/conf/krb5.conf
java.security.auth.login.configJAAS登陆配置的完整路径/etc/knox/conf/krb5JAASLogin.conf

更多配置查看官网
http://knox.apache.org/books/knox-1-0-0/user-guide.html#Quick+Start

  • topologies 放置所有的网络拓扑xml文件,用于部署集群代理
    如下
    在这里插入图片描述
    登陆的配置
    admin.xml
    knoxsso.xml

    knox 前台webUI界面
    manager.xml

    沙箱测试案例
    sandbox。xml

    这里可以了解到,只要是个web应用,都可以拿knox来代理,起作用与nginx如出一辙,都是反向代理的思想

    如果需要对自己的hadoop集群进行topology部署,则touch一个{cluster_name}.xml文件,参考沙箱进行配置

  • users.ldif
    里面是knox自带的一个Ldap demo,默认knox的登陆就是依据这个文件中的ldap用户密码等信息进行登陆的
    这里的用户名密码都是如下格式
    {user}
    {user-password}
    如admin/admin-password

3.2 data/

包含安全与特定拓扑结构构件,在运行时需要读/写访问
此目录包含的东西比较多
总结如下

  • persisted master secret在磁盘持久化的密码
  • keystore秘钥库
  • services Hadoop组件服务的rewrite、service配置文件(配置页面资源跳转)
  • 每一个集群对应的topology中xml会在deployment目录下生成发布包

下来依次说下

  • persisted master secret在磁盘持久化的密码
    在启动knox前必须先执行一个脚本{GATEWAY_HOME}/bin/knoxcli.sh create-master,需要在磁盘生成一个持久化的master secret,这个密码保存在{GATEWAY_HOME}/data/security/master文件中(加密形式)
    在这里插入图片描述

  • keystore秘钥库
    在{GATEWAY_HOME}/data/security/keystores包含了knox的身份秘钥
    gateway.jks文件以及每个部署的集群拓扑对应的证书存储,如下
    在这里插入图片描述

  • services Hadoop组件服务的rewrite配置文件(配置页面资源跳转)
    在{GATEWAY_HOME}/data/services中有着各个大数据组件UI服务
    在这里插入图片描述
    拿yarnui来说
    cd yarnui
    在这里插入图片描述
    首先就是对应的版本,版本下对应2个文件
    在这里插入图片描述
    rewrite.xml内容如下
    在这里插入图片描述
    基本是一些资源的重定向,用一些正则表示哪一类资源的访问都用knox的gateway来代理
    service.xml文件如下
    在这里插入图片描述
    可以看出,service.xml中配置的是yarn组件服务的路由分发
    每一类服务都有一个rewrite标签,这个标签指向rewrite.xml中的规则从而实现服务请求到资源的代理
    其他组件服务跟yarn一样的道理,可能有些版本不止一个
    这里面的路由转发语法比较晦涩难懂,具体可以参考维基
    https://cwiki.apache.org/confluence/display/KNOX/2017/08/14/Understanding+Rewrite+Rules+for+Apache+Knox

  • 每一个集群对应的topology中xml会在deployment目录下生成发布包
    在{GATEWAY_HOME}/data/deployments目录下有如下文件,都是各个集群的发布包
    在这里插入图片描述
    这里在前台用gateway第一次访问组件ui时,就会在此目录下生成{GATEWAY_HOME}/conf/topologies/{cluster_name}.xml文件对应的发布包
    需要注意下,因为rewrite.xml与service.xml问题可能会有很多(比如说跳转时界面资源刷不出来,报错404等其他问题),你就需要修改rewrite.xml或者service.xml。修改完xml后想要生效,需要在这里将{GATEWAY_HOME}/data/deployments下对应集群的发布包删除
    rm -rf {cluster_name}*
    然后再重启knox即可生效

四、配置{cluster_name}.xml

<?xml version="1.0" encoding="utf-8"?>
<!--==============================================-->
<!-- DO NOT EDIT. This is an auto-generated file. -->
<!--==============================================-->
<topology>
    <generated>true</generated>
    <gateway>
        <provider>
            <role>authentication</role>
            <name>ShiroProvider</name>
            <enabled>true</enabled>
            <param>
                <name>sessionTimeout</name>
                <value>30</value>
            </param>
            <param>
                <name>main.ldapRealm</name>
                <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm</value>
            </param>
            <param>
                <name>main.ldapContextFactory</name>
                <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapContextFactory</value>
            </param>
            <param>
                <name>main.ldapRealm.contextFactory</name>
                <value>$ldapContextFactory</value>
            </param>
            <param>
                <name>main.ldapRealm.userDnTemplate</name>
                <value>uid={0},ou=people,dc=hadoop,dc=apache,dc=org</value>
            </param>
            <param>
                <name>main.ldapRealm.contextFactory.url</name>
                <value>ldap://localhost:33389</value>
            </param>
            <param>
                <name>main.ldapRealm.contextFactory.authenticationMechanism</name>
                <value>simple</value>
            </param>
            <param>
                <name>urls./**</name>
                <value>authcBasic</value>
            </param>
        </provider>
    </gateway>

    <service>
        <role>HBASEUI</role>
        <url>http://ocdp52:16010</url>
    </service>


    <service>
        <role>JOBHISTORYUI</role>
        <url>http://ocdp52:19888</url>
    </service>

    <service>
        <role>JOBTRACKER</role>
        <url>http://ocdp52:19888</url>
    </service>

    <service>
        <role>RANGER</role>
        <url>http://ocdp52:6080</url>
    </service>

    <service>
        <role>RANGERUI</role>
        <url>http://ocdp52:6080</url>
    </service>
   <service>
        <role>RESOURCEMANAGER</role>
        <url>http://ocdp52:8088/ws</url>
    </service>


    <service>
        <role>YARNUI</role>
        <url>http://ocdp52:8088</url>
    </service>

    <service>
        <role>HDFSUI</role>
        <url>http://ocdp52:50070</url>
    </service>
    <service>
         <role>AMBARIUI</role>
         <url>http://ocdp52:8080</url>
    </service>
    <service>
         <role>AMBARI</role>
         <url>http://ocdp52:8080</url>
    </service>

    <service>
        <role>AMBARIWS</role>
        <url>ws://ocdp52:8080</url>
    </service>
</topology>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100

HBase UI跳转

需要的配置如下

    <service>
        <role>HBASEUI</role>
        <url>http://ocdp52:16010</url>
    </service>
  • 1
  • 2
  • 3
  • 4

4.1 HDFS UI跳转

    <service>
        <role>HDFSUI</role>
        <url>http://ocdp52:50070</url>
    </service>
  • 1
  • 2
  • 3
  • 4

4.2 Yarn UI 跳转

    <service>
        <role>YARNUI</role>
        <url>http://ocdp52:8088</url>
    </service>
    
    <service>
        <role>RESOURCEMANAGER</role>
        <url>http://ocdp52:8088/ws</url>
    </service>
    
    <service>
        <role>JOBHISTORYUI</role>
        <url>http://ocdp52:19888</url>
    </service>

    <service>
        <role>JOBTRACKER</role>
        <url>http://ocdp52:19888</url>
    </service>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

4.3 Ranger UI跳转

    <service>
        <role>RANGER</role>
        <url>http://ocdp52:6080</url>
    </service>

    <service>
        <role>RANGERUI</role>
        <url>http://ocdp52:6080</url>
    </service>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.4 Ambari UI 跳转

    <service>
         <role>AMBARIUI</role>
         <url>http://ocdp52:8080</url>
    </service>
    
    <service>
         <role>AMBARI</role>
         <url>http://ocdp52:8080</url>
    </service>

    <service>
        <role>AMBARIWS</role>
        <url>ws://ocdp52:8080</url>
    </service>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

其余组件UI请浏览官网配置

注意:
每次对{cluster_name}.xml文件修改后无需重启knox,他这个是热部署,会自动生效

五、启动gateway

knox启动不能用root用户操作,需要将{GATEWAY_HOME}也就是knox-1.0.0文件夹赋予另外的用户权限,如ocdp
在这里插入图片描述
然后执行如下操作

su ocdp
cd ${knox}/
./bin/knoxcli.sh create-master

  • 1
  • 2
  • 3
  • 4

执行结果如下
在这里插入图片描述
上图中–force 是因为之前创建过了,强制执行覆盖的,密码设置为ocdp123

接着操作

./bin/gateway.sh start
./bin/ldap.sh start
  • 1
  • 2

在这里插入图片描述
gateway启动端口在gateway-site.xml中设置过了,默认8443
ldap用的是knox内嵌默认的ldap Demo服务,端口33389,不执行ldap.sh start就会访问组件UI报错

六、浏览器通过Knox访问组件UI

至此,knox部署完成,可根据如下url访问组件UI界面
https://{gateway_ip}:8443/gateway/{cluster_name}/{hadoop_UI}
Ex:

https://localhost:8443/gateway/ocdp/ranger
https://localhost:8443/gateway/ocdp/hdfs
https://localhost:8443/gateway/ocdp/yarn
https://localhost:8443/gateway/ocdp/hbase/webui
https://localhost:8443/gateway/ocdp/ambari
  • 1
  • 2
  • 3
  • 4
  • 5

拿yarnUI来说
https://ocdp52:8443/gateway/ocdp/yarn
在这里插入图片描述
点击高级
点击继续前往链接(不安全)
会弹出一个输入账号密码输入框
在这里插入图片描述
这里的账号密码就是knox自带的ldap用户账号密码,上面有说过
输入admin/admin-password
在这里插入图片描述

代理成功

七、knox代理组件UI报错

但是Knox这个东西各个版本里的不同组件UI对应的rewrite.xml、service.xml文件比较复杂,会出现很多很多的问题,要么组件UI访问不进去,要么访问进去了组件UI内部界面跳转就会有问题,不过基本上都是因为rewrite.xml与service.xml文件的问题
我研究了一段时间后总结如下
我knox访问的集群是HDP平台下的各个组件服务

7.1 knox版本为1.0.0.3、1.3

这些高版本knox访问HDFS UI、HBASE UI报错500。压根访问不了,报错我至今未解决,不过确定是证书问题

7.2 knox版本为0.12

低版本可以访问所有的UI,但是内部跳转问题却层出不穷
yarn UI内部访问8042、log、node、appication问题有很多
hdfs UI 内部访问datanode地址就失效了。不再是gateway所代理的地址了
HBASE UI 最上面的Head一栏按钮大部分都访问不了

7.3 Apache Knox报错整理

具体的报错我很多已经发了篇文章大致说了下链接如下
Apache Knox报错大全

后续会持续补充,有问题可以私信我沟通

八、nginx->knox->Hadoop组件 UI

knox毕竟能够代理的组件有限,所以我外层套了一个nginx服务
架构如下
在这里插入图片描述

部署nginx链接如下

Nginx安装部署操作梳理(三步走)
部署完后需要开启nginx 的SSL模式并生成证书,配置证书路径
文章链接如下
Nginx开启SSL总结
依据以上文档可以保证配通

九、还需研究方向

一个月的knox之旅到此结束了,但是knox很多其他的东西还处于调研阶段,比如下面几点

9.1 KNOXSSO配置

9.2 HA配置

9.3 kerberos配置

后续有时间再继续研究

一键三连(〃‘▽’〃)

更多关于大数据(Hadoop、HBASE、Hive、Flink、Doris、Pulsar、Kafka、ClickHouse)学习干货资料
识别下方二维码,回复“资料全集”,即可获得下载地址。
在这里插入图片描述
在这里插入图片描述

注:本文转载自blog.csdn.net的Geoffrey Turing的文章"https://blog.csdn.net/qq_37865420/article/details/105787160"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top