Storm集群安裝Version1.0.1開啟Kerberos

Storm集群安裝,基于版本1.0.1,
同時(shí)開啟Kerberos安全認(rèn)證,
使用apache-storm-1.0.1.tar.gz安裝包。

1.安裝規(guī)劃

角色規(guī)劃 IP/機(jī)器名 安裝軟件 運(yùn)行進(jìn)程
UI, nimbus zdh-237 storm core,nimbus
supervisor zdh-238 storm supervisor,worker,LogWriter
supervisor zdh-239 storm supervisor,worker,LogWriter

Storm集群有三臺(tái)機(jī)器,各個(gè)角色的安裝規(guī)劃如上。

2.安裝用戶

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

3.安裝依賴

1.JDK
2.Python
3.Zookeeper
4.Kerberos

4.主機(jī)名配置

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安裝

確定系統(tǒng)自帶的Python版本,如果是2.6.6+可以不用再安裝。
python -V
如果版本不對(duì),請(qǐng)參考以下文章安裝或者升級(jí)Python:
Python升級(jí)至2.7方法

7.Zookeeper安裝

請(qǐng)參考Zookeeper集群安裝(開啟kerberos)
這里使用的Zookeeper集群信息:
zookeeper集群 zookeeper/zdh1234
zdh-237,zdh-238,zdh-239 端口:12181

8.Kerberos安裝

Kerberos安裝方法請(qǐng)自行百度參考。
這里使用的Kerberos集群信息:
Kerberos服務(wù)器:
root/zdh1234
zdh-240
Kerberos客戶端:
zdh-237,zdh-238,zdh-239

Kerberos是用于認(rèn)證用戶的,
Storm安裝集群上要有keberos的客戶端。

9.Storm安裝

請(qǐng)自行從官網(wǎng)獲取安裝包:
apache-storm-1.0.1.tar.gz
將安裝包上傳到zdh-237的storm用戶下,
解壓安裝包:
tar -zxvf apache-storm-1.0.1.tar.gz
配置環(huán)境變量和別名,方便操作:

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'

創(chuàng)建本地?cái)?shù)據(jù)存放的目錄:
mkdir /home/storm/apache-storm-1.0.1/data

10.配置storm.yaml文件

vi conf/storm.yaml
修改為如下配置,注意字符串需要加上引號(hào),特別是包含/的值:

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"]  

請(qǐng)注意正確配置上面的每一個(gè)配置項(xiàng),
有問(wèn)題可以參加storm.yaml中對(duì)配置項(xiàng)的解釋。

11.創(chuàng)建storm-jaas.conf文件

在/home/storm/apache-storm-1.0.1/conf目錄下,
創(chuàng)建storm-jaas.conf文件內(nèi)容如下:

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.確定要訪問(wèn)的Zookeeper服務(wù)器名稱

上面Client是Storm用來(lái)訪問(wèn)Zookeeper的,
如果未指定serviceName作為請(qǐng)求對(duì)象,
則默認(rèn)是zookeeper@zdh-237@ZDH.COM。

StormClient是UI(core)用來(lái)訪問(wèn)nimbus的,
如果指定serviceName="stormkrb",
則訪問(wèn)的是stormkrb/zdh-237@ZDH.COM,
否則默認(rèn)向TGTServer請(qǐng)求的服務(wù)器的
名字為storm/zdh-237@ZDH.COM,
即serviceName作用是指定要訪問(wèn)的AppServer服務(wù)器名稱。

Storm使用Zookeeper的客戶端訪問(wèn)
開啟kerberos的zookeeper服務(wù)端時(shí),
如果Zookeeper的服務(wù)端的安裝用戶不為zookeeper,
假設(shè)服務(wù)器名稱是zookeeperkrb時(shí),
則需要在storm中需要修改storm.yaml中nimbus的進(jìn)程參數(shù),
指明客戶端需要訪問(wèn)的服務(wù)端的名稱:

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要訪問(wèn)的Zookeeper服務(wù)端的名稱,
同時(shí)配合storm-jaas.conf的Client配置能夠正確的工作。
Storm的supervisor也是需要訪問(wèn)zookeeper的,
同步進(jìn)行修改如下:

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.創(chuàng)建Storm和HTTP的principal

操作機(jī)器:
在zdh-240 Kerberos服務(wù)器,
使用root用戶,切換到/root/keytabs目錄,
執(zhí)行如下操作命令:

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訪問(wèn)Nimbus,以及Strom訪問(wèn)Zookeeper時(shí)Kerberos鑒權(quán)。
HTTP.keytab:
用于UI對(duì)外提供Rest查詢管理等服務(wù)。

14.拷貝Storm到集群其他機(jī)器

zdh-237的stom復(fù)制到zdh-238節(jié)點(diǎn)的storm用戶下:
scp -r storm@zdh-237:/home/storm/apache-storm-1.0.1 .
修改storm.yaml文件,替換zdh-237為zdh-238,
注意不要把storm.zookeeper.servers和nimbus.seeds里面數(shù)組替換掉了。
修改storm-jaas.conf文件,替換zdh-237為zdh-238:
%s/zdh-237/zdh-238/g

對(duì)zdh-239節(jié)點(diǎn)操作類似。

如果后面又修改了配置,可以僅拷貝同步配置文件:
scp storm@zdh-237:/home/storm/apache-storm-1.0.1/conf/storm.yaml .

15.啟動(dòng)Storm

啟動(dòng)之前請(qǐng)確保ZooKeeper,Kerberos等已正常啟動(dòng)

15.1.nimbus節(jié)點(diǎn)啟動(dòng)(無(wú)日志)

bin/storm nimbus >/dev/null 2>&1 &
bin/storm ui >/dev/null 2>&1 &
supervisor節(jié)點(diǎn)啟動(dòng):
bin/storm supervisor >/dev/null 2>&1 &

15.2.nimbus節(jié)點(diǎn)啟動(dòng)(有日志):

storm nimbus >nimbusInit.log 2>&1 &
storm ui >uiCoreInit.log 2>&1 &
supervisor節(jié)點(diǎn)啟動(dòng):
storm supervisor > superInit.log 2>&1 &

15.3.Storm啟動(dòng)后相關(guān)進(jìn)程

nimbus啟動(dòng)后相應(yīng)會(huì)產(chǎn)生如下進(jìn)程:
core(對(duì)應(yīng)Storm UI)
nimbus

supervisor啟動(dòng)后相應(yīng)會(huì)產(chǎn)生如下進(jìn)程:
supervisor
提交storm任務(wù)后還會(huì)生成:
worker,LogWriter

15.4.Storm重啟

Storm沒有提高停止節(jié)點(diǎn)的命令,
需要先使用jps或者ps找到Storm所有進(jìn)程,
再kill掉相應(yīng)進(jìn)程,重新啟動(dòng)。

16.登陸Web管理頁(yè)面

需要使用具有Kerberos客戶端的Lunix環(huán)境上面的瀏覽器,
例如zdh-237上面的firefox:
10.43.159.41:18080 (不能用,開啟kerberos就無(wú)法訪問(wèn))
zdh-237:18080 (能用)

關(guān)于如何使用Lunix上面的firefox,請(qǐng)參考:
MobaXterm遠(yuǎn)程連接Linux圖形用戶界面
Xstart遠(yuǎn)程連接Linux圖形用戶界面
VNC的安裝和使用

17.提交topo任務(wù)

運(yùn)行自帶測(cè)試用例
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任務(wù)

18.1.后臺(tái)命令查看topo信息

storm list

18.2.模擬http請(qǐng)求topo信息

查看crul的特性Features,需要支持GSS-Negotiate:
curl -V
先使用kinit獲取票據(jù):
kinit -kt /home/storm/apache-storm-1.0.1/conf/storm.keytab storm/zdh-237@ZDH.COM
注意需要使用域名zdh-237,而不能用真實(shí)的IP,
而且curl向TGTServer請(qǐng)求訪問(wèn)的Server是HTTP/zdh-237@ZDH.COM
curl -u : --negotiate http://zdh-237:18080/api/v1/topology/summary
如果沒有響應(yīng),使用下面的進(jìn)行調(diào)試:
curl -v -i -u : --negotiate http://zdh-237:18080/api/v1/topology/summary
下面這種使用IP的是無(wú)法成功的:
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
搜索配置項(xiàng)network.negotiate-auth.trusted-uris
雙擊添加變量值 "http://zdh-237:18080"
然后在firefox里面輸入:
http://zdh-237:18080

如果登陸失敗,在命令行使用kinit獲取票據(jù):
kinit -kt /home/storm/apache-storm-1.0.1/conf/storm.keytab storm/zdh-237@ZDH.COM
再次輸入地址即可訪問(wèn)stormUI

19.問(wèn)題總結(jié)

19.1

storm.zookeeper.superACL: "sasl:storm"如果未配置,會(huì)導(dǎo)致worker進(jìn)程無(wú)法啟動(dòng)

19.2

不要在業(yè)務(wù)啟動(dòng)之前運(yùn)行kinit,業(yè)務(wù)啟動(dòng)是發(fā)現(xiàn)kerberos鑒權(quán)不過(guò),
則刪除tmp目錄下storm創(chuàng)建的類似/tmp/kbr5cc_[UID]的文件
NOT to run kinit before starting the app.
rm krb5cc_521

19.3

刪除原有zookeeper上面的storm集群信息
deleteall /storm
如果/storm被加密無(wú)法刪除,需要使用zookeeper的超級(jí)賬戶刪除,
請(qǐng)參考Zookeeper使用超級(jí)用戶刪除帶權(quán)限的節(jié)點(diǎn)
或者清除zookeeper下面的dataDir,相當(dāng)于初始化zookeeper。

19.4

其他問(wèn)題,請(qǐng)參考Storm集群安裝Version1.0.1
建議安裝普通Storm集群,可以正常運(yùn)行之后,再來(lái)開啟Kerberos。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容