Storm集群安装,基于版本1.0.1,

同时开启Kerberos安全认证,

使用apache-storm-1.0.1.tar.gz安装包。

1.安装规划

角色规划 IP/机器名 安装软件 运行进程
UI, nimbus zdh-237 storm core,nimbus
supervisor zdh-238 storm supervisor,worker,LogWriter
supervisor zdh-239 storm supervisor,worker,LogWriter

Storm集群有三台机器,各个角色的安装规划如上。

2.安装用户

storm/zdh1234

useradd -g hadoop -s /bin/bash -md /home/storm storm

3.安装依赖

1.JDK

2.Python

3.Zookeeper

4.Kerberos

4.主机名配置

vi /etc/hosts
10.43.159.237 zdh-237
10.43.159.238 zdh-238
10.43.159.239 zdh-239
10.43.159.240 zdh-240

5.JDK安装

可以使用root用户安装的公共jdk,要求JDK 6+,

为Storm用户配置JAVA_HOME:

export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

6.Python安装

确定系统自带的Python版本,如果是2.6.6+可以不用再安装。

python -V

如果版本不对,请参考以下文章安装或者升级Python:

Python升级至2.7方法

7.Zookeeper安装

请参考Zookeeper集群安装(开启kerberos)

这里使用的Zookeeper集群信息:

zookeeper集群 zookeeper/zdh1234

zdh-237,zdh-238,zdh-239 端口:12181

8.Kerberos安装

Kerberos安装方法请自行百度参考。

这里使用的Kerberos集群信息:

Kerberos服务器:

root/zdh1234

zdh-240

Kerberos客户端:

zdh-237,zdh-238,zdh-239

Kerberos是用于认证用户的,

Storm安装集群上要有keberos的客户端。

9.Storm安装

请自行从官网获取安装包:

apache-storm-1.0.1.tar.gz

将安装包上传到zdh-237的storm用户下,

解压安装包:

tar -zxvf apache-storm-1.0.1.tar.gz

配置环境变量和别名,方便操作:

export STORM_HOME=/home/storm/apache-storm-1.0.1
export PATH=$PATH:$STORM_HOME/bin
alias logs='cd $STORM_HOME/logs'
alias conf='cd $STORM_HOME/conf'

创建本地数据存放的目录:

mkdir /home/storm/apache-storm-1.0.1/data

10.配置storm.yaml文件

vi conf/storm.yaml

修改为如下配置,注意字符串需要加上引号,特别是包含**/**的值:

storm.zookeeper.servers:
- "zdh-237"
- "zdh-238"
- "zdh-239"
storm.zookeeper.port: 12181
storm.local.dir: "/home/storm/apache-storm-1.0.1/data"
nimbus.seeds: ["zdh-237", "zdh-238", "zdh-239"]
nimbus.thrift.port: 6627
ui.port: 18080
logviewer.port: 8000
drpc.port: 3772
drpc.invocations.port: 3773
drpc.http.port: 3774
ui.filter: "org.apache.hadoop.security.authentication.server.AuthenticationFilter"
ui.filter.params:
"type": "kerberos"
"kerberos.principal": "HTTP/zdh-237@ZDH.COM"
"kerberos.keytab": "/home/storm/apache-storm-1.0.1/conf/HTTP.keytab"
"kerberos.name.rules": "RULE:[2:$1/$2@$0](.*@ZDH.COM)s/.*/storm/"
ui.header.buffer.bytes: 65536
storm.thrift.transport: "org.apache.storm.security.auth.kerberos.KerberosSaslTransportPlugin"
java.security.auth.login.config: "/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
nimbus.childopts: "-Xmx1024m -Djava.security.auth.login.config=/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
ui.childopts: "-Xmx768m -Djava.security.auth.login.config=/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
supervisor.childopts: "-Xmx256m -Djava.security.auth.login.config=/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
storm.principal.tolocal: "org.apache.storm.security.auth.KerberosPrincipalToLocal"
storm.zookeeper.superACL: "sasl:storm"
nimbus.impersonation.authorizer: "org.apache.storm.security.auth.authorizer.ImpersonationAuthorizer"
nimbus.impersonation.acl:
"storm/zdh-237@ZDH.COM":
"hosts":
["zdh-237"]
"groups":
["hadoop"]
"storm/zdh-238@ZDH.COM":
"hosts":
["zdh-238"]
"groups":
["hadoop"]
"storm/zdh-239@ZDH.COM":
"hosts":
["zdh-239"]
"groups":
["hadoop"]

请注意正确配置上面的每一个配置项,

有问题可以参加storm.yaml中对配置项的解释。

11.创建storm-jaas.conf文件

在/home/storm/apache-storm-1.0.1/conf目录下,

创建storm-jaas.conf文件内容如下:

StormServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/storm/apache-storm-1.0.1/conf/storm.keytab"
storeKey=true
useTicketCache=false
principal="storm/zdh-237@ZDH.COM";
};
StormClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/storm/apache-storm-1.0.1/conf/storm.keytab"
storeKey=true
useTicketCache=false
serviceName="storm"
principal="storm/zdh-237@ZDH.COM";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/storm/apache-storm-1.0.1/conf/storm.keytab"
storeKey=true
useTicketCache=false
principal="storm/zdh-237@ZDH.COM";
};

12.确定要访问的Zookeeper服务器名称

上面Client是Storm用来访问Zookeeper的,

如果未指定serviceName作为请求对象,

则默认是zookeeper@zdh-237@ZDH.COM。

StormClient是UI(core)用来访问nimbus的,

如果指定serviceName=“stormkrb”,

则访问的是stormkrb/zdh-237@ZDH.COM,

否则默认向TGTServer请求的服务器的

名字为storm/zdh-237@ZDH.COM,

即serviceName作用是指定要访问的AppServer服务器名称。

Storm使用Zookeeper的客户端访问

开启kerberos的zookeeper服务端时,

如果Zookeeper的服务端的安装用户不为zookeeper,

假设服务器名称是zookeeperkrb时,

则需要在storm中需要修改storm.yaml中nimbus的进程参数,

指明客户端需要访问的服务端的名称:

nimbus.childopts: "-Xmx1024m -Djava.security.auth.login.config=/home/stormkrb/apache-storm-1.0.1/conf/storm-jaas.conf -Dzookeeper.sasl.client.username=zookeeperkrb"

zookeeperkrb即为Storm的nimbus要访问的Zookeeper服务端的名称,

同时配合storm-jaas.conf的Client配置能够正确的工作。

Storm的supervisor也是需要访问zookeeper的,

同步进行修改如下:

supervisor.childopts: "-Xmx256m -Djava.security.auth.login.config=/home/stormkrb/apache-storm-1.0.1/conf/storm-jaas.conf -Dzookeeper.sasl.client.username=zookeeperkrb"

13.创建Storm和HTTP的principal

操作机器:

在zdh-240 Kerberos服务器,

使用root用户,切换到/root/keytabs目录,

执行如下操作命令:

kadmin.local
addprinc -randkey storm/zdh-237@ZDH.COM
addprinc -randkey storm/zdh-238@ZDH.COM
addprinc -randkey storm/zdh-239@ZDH.COM
xst -k storm.keytab storm/zdh-237@ZDH.COM
xst -k storm.keytab storm/zdh-238@ZDH.COM
xst -k storm.keytab storm/zdh-239@ZDH.COM addprinc -randkey HTTP/zdh-237@ZDH.COM
addprinc -randkey HTTP/zdh-238@ZDH.COM
addprinc -randkey HTTP/zdh-239@ZDH.COM
xst -k HTTP.keytab HTTP/zdh-237@ZDH.COM
xst -k HTTP.keytab HTTP/zdh-238@ZDH.COM
xst -k HTTP.keytab HTTP/zdh-239@ZDH.COM
exit

把storm.keytab和HTTP.keytab拷贝到storm的conf目录下:

scp storm.keytab storm@zdh-237:/home/storm/apache-storm-1.0.1/conf
scp HTTP.keytab storm@zdh-237:/home/storm/apache-storm-1.0.1/conf

storm.keytab:

用于UI访问Nimbus,以及Strom访问Zookeeper时Kerberos鉴权。

HTTP.keytab:

用于UI对外提供Rest查询管理等服务。

14.拷贝Storm到集群其他机器

zdh-237的stom复制到zdh-238节点的storm用户下:

scp -r storm@zdh-237:/home/storm/apache-storm-1.0.1 .

修改storm.yaml文件,替换zdh-237为zdh-238,

注意不要把storm.zookeeper.servers和nimbus.seeds里面数组替换掉了。

修改storm-jaas.conf文件,替换zdh-237为zdh-238:

%s/zdh-237/zdh-238/g

对zdh-239节点操作类似。

如果后面又修改了配置,可以仅拷贝同步配置文件:

scp storm@zdh-237:/home/storm/apache-storm-1.0.1/conf/storm.yaml .

15.启动Storm

启动之前请确保ZooKeeper,Kerberos等已正常启动

15.1.nimbus节点启动(无日志)

bin/storm nimbus >/dev/null 2>&1 &

bin/storm ui >/dev/null 2>&1 &

supervisor节点启动:

bin/storm supervisor >/dev/null 2>&1 &

15.2.nimbus节点启动(有日志):

storm nimbus >nimbusInit.log 2>&1 &

storm ui >uiCoreInit.log 2>&1 &

supervisor节点启动:

storm supervisor > superInit.log 2>&1 &

15.3.Storm启动后相关进程

nimbus启动后相应会产生如下进程:

core(对应Storm UI)

nimbus

supervisor启动后相应会产生如下进程:

supervisor

提交storm任务后还会生成:

worker,LogWriter

15.4.Storm重启

Storm没有提高停止节点的命令,

需要先使用jps或者ps找到Storm所有进程,

再kill掉相应进程,重新启动。

16.登陆Web管理页面

需要使用具有Kerberos客户端的Lunix环境上面的浏览器,

例如zdh-237上面的firefox:

10.43.159.41:18080 (不能用,开启kerberos就无法访问)

zdh-237:18080 (能用)

关于如何使用Lunix上面的firefox,请参考:

MobaXterm远程连接Linux图形用户界面

Xstart远程连接Linux图形用户界面

VNC的安装和使用

17.提交topo任务

运行自带测试用例

cd /home/storm/apache-storm-1.0.1/examples/storm-starter/

storm jar storm-starter-topologies-1.0.1.jar storm.starter.StatefulTopology topoNewTest1

18.查询提交的topo任务

18.1.后台命令查看topo信息

storm list

18.2.模拟http请求topo信息

查看crul的特性Features,需要支持GSS-Negotiate:

curl -V

先使用kinit获取票据:

kinit -kt /home/storm/apache-storm-1.0.1/conf/storm.keytab storm/zdh-237@ZDH.COM

注意需要使用域名zdh-237,而不能用真实的IP,

而且curl向TGTServer请求访问的Server是HTTP/zdh-237@ZDH.COM:

curl -u : --negotiate http://zdh-237:18080/api/v1/topology/summary

如果没有响应,使用下面的进行调试:

curl -v -i -u : --negotiate http://zdh-237:18080/api/v1/topology/summary

下面这种使用IP的是无法成功的:

curl -i --negotiate -u : http://10.43.159.237:18080/api/v1/topology/summary

18.3.使用浏览器查看topo信息

使用vncview登陆zdh-237的可视化界面:

10.43.159.237:1

使用storm/zdh1234用户登陆

Firefox地址栏输入:

about:config

搜索配置项network.negotiate-auth.trusted-uris

双击添加变量值 “http://zdh-237:18080

然后在firefox里面输入:

http://zdh-237:18080

如果登陆失败,在命令行使用kinit获取票据:

kinit -kt /home/storm/apache-storm-1.0.1/conf/storm.keytab storm/zdh-237@ZDH.COM

再次输入地址即可访问stormUI

19.问题总结

19.1

storm.zookeeper.superACL: "sasl:storm"如果未配置,会导致worker进程无法启动

19.2

不要在业务启动之前运行kinit,业务启动是发现kerberos鉴权不过,

则删除tmp目录下storm创建的类似/tmp/kbr5cc_[UID]的文件

NOT to run kinit before starting the app.

rm krb5cc_521

19.3

删除原有zookeeper上面的storm集群信息

deleteall /storm

如果/storm被加密无法删除,需要使用zookeeper的超级账户删除,

请参考Zookeeper使用超级用户删除带权限的节点

或者清除zookeeper下面的dataDir,相当于初始化zookeeper。

19.4

其他问题,请参考Storm集群安装Version1.0.1

建议安装普通Storm集群,可以正常运行之后,再来开启Kerberos。

Storm集群安装Version1.0.1开启Kerberos的更多相关文章

  1. Storm集群安装Version1.0.1

    Storm集群安装,基于版本1.0.1, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 nimbus zdh-237 sto ...

  2. Kafka集群安装Version1.0.1(自带Zookeeper)

    1.说明 Kafka集群安装,基于版本1.0.1, 使用kafka_2.12-1.0.1.tgz安装包, 其中2.12是编译工具Scala的版本. 而且不需要另外安装Zookeeper服务, 使用Ka ...

  3. Storm集群安装详解

    storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器 ...

  4. Storm集群安装部署步骤【详细版】

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...

  5. Storm入门教程 第三章Storm集群安装部署步骤、storm开发环境

    一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...

  6. Storm集群安装部署步骤

    本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1. Sto ...

  7. Storm 集群安装

    http://archive.apache.org/dist/storm/  版本都在这 本人安装的是 其他版本的自行安装吧,估计都差不多 sudo mkdir /export/serverssudo ...

  8. storm集群安装部署

    安装步骤: 搭建Zookeeper集群: 安装Storm依赖库: 下载并解压Storm发布版本: 修改storm.yaml配置文件: 启动Storm各个后台进程. 1. 搭建Zookeeper集群 这 ...

  9. Hbase集群安装Version1.1.5

    Hbase集群安装,基于版本1.1.5, 使用hbase-1.1.5.tar.gz安装包. 1.安装说明 使用外部Zookeeper集群而非Hbase自带zookeeper, 使用Hadoop文件系统 ...

随机推荐

  1. An internal error occurred during: “Updating Maven Project”. Unsupported IClasspathEntry kind=4解决办法

    An internal error occurred during: "Updating Maven Project". Unsupported IClasspathEntry k ...

  2. archive后upload to app store时遇到app id不可用的问题

    问题如下图 出现此问题的原因有两种: 1.此app id在AppStore中已经存在,也就是说你使用别人注册的app ID ,  如果是这样,你只能更换app ID 2.此app ID是自己的,突然之 ...

  3. OpenStack之七: compute服务(端口8774)

    注意此处的bug,参考o版 官网地址 https://docs.openstack.org/nova/stein/install/controller-install-rdo.html 控制端配置 # ...

  4. 【Linux】【Basis】用户、组和权限管理

    1. 概念: 1.1. 每个使用者都有,用户标识UID和密码:并且有身份(Authentication),授权(Authorization),审计(Audition):组(用户组,用户容器) 1.2. ...

  5. zookeeper 异常 :stat is not executed because it is not in the whitelist. Connection closed b

    1 .问题 1.启动 zookeeper 后 用指令:  telnet 127.0.0.1 2181 连接 提示输入指令 :stat 后报错,然后关闭连接 2.问题解决: 修改启动指令 zkServe ...

  6. 使用jstl和el表达式来展示request域中存放的user对象的信息

    <%@ page import="java.util.ArrayList" %><%@ page import="java.util.List" ...

  7. Airtest结合tidevice实现IOS自动化测试

    这篇博文内容,是基于之前的配置而来的.我们可以先回顾一下之前博文,Windows搭建mac黑苹果系统:WebDriverAgent重签名爬坑记 . 今天来分享下如何通过 tidevice实现IOS自动 ...

  8. SQL 基础知识终极指南

    什么是数据库? 数据库是以电子方式从系统中存储和检索的大量数据集合. 存储在数据库中的结构化数据被处理.操纵.控制和更新以执行各种操作. 行业中使用的一些流行数据库是 Oracle.MySQL.Pos ...

  9. Linux入侵 反弹shell

    目录 一.简介 二.命令 三.NetCat 一.简介 黑入服务器很少会是通过账号密码的方式进入,因为这很难破解密码和很多服务器都做了限制白名单. 大多是通过上传脚本文件,然后执行脚本开启一个端口,通过 ...

  10. java多线程7:ReentrantReadWriteLock

    真实的多线程业务开发中,最常用到的逻辑就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务), 这样做虽然保证了实例变量的线程安全性, ...