用Knox做http代理
2015-11-25 15:46
393 查看
其实用Knox可以代理任何http服务或者web app,不仅仅局限于代理hadoop的服务或者web应用/界面。
例如,你可以把tomcat装在一台机器上,然后把knox装在另一台机器上或者跟tomcat相同的机器上。knox就可以作为代理,作为通向tomcat的访问点。
1.下载并安装knox 0.6.0或者以上版本。
http://mirror.bit.edu.cn/apache/knox/0.6.0/knox-0.6.0.zip
解压后,先运行knox/bin/knoxcli create-master 来创建密码,再运行knox/bin/ldap start 启动ldap,最后运行knox/bin/gateway来启动knox服务器.
2.下载并安装Tomcat,最新版本或者以前版本都可以.(需要注意的是tomcat9需要java8以上版本)
http://apache.fayea.com/tomcat/tomcat-9/v9.0.0.M1/bin/apache-tomcat-9.0.0.M1.zip
解压后,到tomcat/bin目录运行startup [Windows运行startup.bat ,Linux运行startup.sh]
tomcat默认端口号是8080,如果要修改可到tomcat/conf/server.xml中找到Connector port=”8080”这一行将8080改为其他值.
3.创建一个tomcat.xml放于knox/conf/topologies目录下,并具有以下内容(这样一来tomcat将被视作一个集群的名字,同理如果在knox/conf/topologies目录下放置一个mycluster.xml,那么mycluster也被看做是一个集群的名字,会在knox/data/deployment生成其最新的war包)
4.创建一个tomcat/9.0目录层级放于knox/data/services目录下.
4.1 再创建一个service.xml具有以下内容,放于knox/data/services/tomcat/9.0目录下
4.2 再创建一个rewrite.xml具有以下内容,放于knox/data/services/tomcat/9.0目录下
rewrite.xml:
5.重启knox服务器(先运行knox/bin/gateway stop 再运行knox/bin/gateway start)
若更改service.xml 或rewrite.xml 则执行 ./knoxcli.sh redeploy –cluster tomcat
或删除data/deployments里所有内容,重启knox服务器
6.访问https://localhost:8443/gateway/tomcat/tomcatui
用浏览器访问时(比如firefox),将网址添加到例外(表示这是个受信任的网站),要求用户名和密码时输入guest和guest-password
可以看到它的内容, 等同于访问http://localhost:8080/.
*注 https://{knox-host}:{knox-port}/gateway/tomcat/tomcatui中tomcat会被看做集群名字,/tomcatui会被看做service.xml里的根路径。rewrite.xml中IN类型的rule中的pattern是针对呈献给用户的最终url比如https://{knox-host}:{knox-port}/gateway/tomcat/tomcatui
也可以利用curl用如下命令访问,看到其结果: curl -i -k -u guest:guest-password -X GET https://localhost:8443/gateway/tomcat/tomcatui
例如,你可以把tomcat装在一台机器上,然后把knox装在另一台机器上或者跟tomcat相同的机器上。knox就可以作为代理,作为通向tomcat的访问点。
1.下载并安装knox 0.6.0或者以上版本。
http://mirror.bit.edu.cn/apache/knox/0.6.0/knox-0.6.0.zip
解压后,先运行knox/bin/knoxcli create-master 来创建密码,再运行knox/bin/ldap start 启动ldap,最后运行knox/bin/gateway来启动knox服务器.
2.下载并安装Tomcat,最新版本或者以前版本都可以.(需要注意的是tomcat9需要java8以上版本)
http://apache.fayea.com/tomcat/tomcat-9/v9.0.0.M1/bin/apache-tomcat-9.0.0.M1.zip
解压后,到tomcat/bin目录运行startup [Windows运行startup.bat ,Linux运行startup.sh]
tomcat默认端口号是8080,如果要修改可到tomcat/conf/server.xml中找到Connector port=”8080”这一行将8080改为其他值.
3.创建一个tomcat.xml放于knox/conf/topologies目录下,并具有以下内容(这样一来tomcat将被视作一个集群的名字,同理如果在knox/conf/topologies目录下放置一个mycluster.xml,那么mycluster也被看做是一个集群的名字,会在knox/data/deployment生成其最新的war包)
<?xml version="1.0" ?> <topology> <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.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> <provider> <role>identity-assertion</role> <name>Default</name> <enabled>true</enabled> </provider> </gateway> <service> <role>TOMCAT</role> <url>http://localhost:8080</url> </service> </topology>
4.创建一个tomcat/9.0目录层级放于knox/data/services目录下.
4.1 再创建一个service.xml具有以下内容,放于knox/data/services/tomcat/9.0目录下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <service role="TOMCAT" name="tomcat" version="9.0"> <routes> <route path="/tomcatui/"> </route> <route path="/tomcatui/**"> </route> <route path="/tomcatui/**?**"> </route> </routes> </service>
4.2 再创建一个rewrite.xml具有以下内容,放于knox/data/services/tomcat/9.0目录下
rewrite.xml:
<rules> <!-- Inbound rewrite rules --> <rule dir="IN" name="TOMCAT/root/inbound" pattern="*://*:*/**/tomcatui/"> <rewrite template="{$serviceUrl[TOMCAT]}/"/> </rule> <rule dir="IN" name="TOMCAT/path/inbound" pattern="*://*:*/**/tomcatui/{**}"> <rewrite template="{$serviceUrl[TOMCAT]}/{**}"/> </rule> <rule dir="IN" name="TOMCAT/full/inbound" pattern="*://*:*/**/tomcatui/{**}?{**}"> <rewrite template="{$serviceUrl[TOMCAT]}/{**}?{**}"/> </rule> <rules>
5.重启knox服务器(先运行knox/bin/gateway stop 再运行knox/bin/gateway start)
若更改service.xml 或rewrite.xml 则执行 ./knoxcli.sh redeploy –cluster tomcat
或删除data/deployments里所有内容,重启knox服务器
6.访问https://localhost:8443/gateway/tomcat/tomcatui
用浏览器访问时(比如firefox),将网址添加到例外(表示这是个受信任的网站),要求用户名和密码时输入guest和guest-password
可以看到它的内容, 等同于访问http://localhost:8080/.
*注 https://{knox-host}:{knox-port}/gateway/tomcat/tomcatui中tomcat会被看做集群名字,/tomcatui会被看做service.xml里的根路径。rewrite.xml中IN类型的rule中的pattern是针对呈献给用户的最终url比如https://{knox-host}:{knox-port}/gateway/tomcat/tomcatui
也可以利用curl用如下命令访问,看到其结果: curl -i -k -u guest:guest-password -X GET https://localhost:8443/gateway/tomcat/tomcatui
相关文章推荐
- 详解HDFS Short Circuit Local Reads
- Hadoop_2.1.0 MapReduce序列图
- 使用Hadoop搭建现代电信企业架构
- 单机版搭建Hadoop环境图文教程详解
- hadoop常见错误以及处理方法详解
- hadoop 单机安装配置教程
- hadoop的hdfs文件操作实现上传文件到hdfs
- hadoop实现grep示例分享
- Apache Hadoop版本详解
- linux下搭建hadoop环境步骤分享
- hadoop client与datanode的通信协议分析
- hadoop中一些常用的命令介绍
- Hadoop单机版和全分布式(集群)安装
- 用PHP和Shell写Hadoop的MapReduce程序
- hadoop map-reduce中的文件并发操作
- Hadoop1.2中配置伪分布式的实例
- java结合HADOOP集群文件上传下载
- 用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
- Hadoop安装感悟
- hadoop安装lzo