快速搭建Streams集群環(huán)境
搭建集群環(huán)境的關(guān)鍵步驟包含以下6大步驟,后面對(duì)每個(gè)步驟再展開描述。
1. 環(huán)境規(guī)劃
2. 環(huán)境準(zhǔn)備
3. 安裝Streams
4. 創(chuàng)建并配置Domain
5. 創(chuàng)建Instance并驗(yàn)證安裝
6. 安裝開發(fā)工具Streams Studio
1.環(huán)境規(guī)劃
集群環(huán)境由Domain和外部ZooKeeper組成,如下圖所示,其中Domain將多臺(tái)主機(jī)組織在一起,形成一個(gè)大資源池。一個(gè)Domain共享相同的用戶鑒權(quán)(LDAP、PAM)和外部的Zookeeper,Domain包含多臺(tái)主機(jī),這些主機(jī)則可以分給不同Instance。

此次安裝采用三臺(tái)主機(jī)為例,三臺(tái)主機(jī)同時(shí)運(yùn)行ZooKeeper服務(wù)器、管理節(jié)點(diǎn)和Streams應(yīng)用節(jié)點(diǎn)。出于性能考慮,在生產(chǎn)環(huán)境中建議將ZooKeeper運(yùn)行到專門的服務(wù)器上。未來新增加的節(jié)點(diǎn)可用于運(yùn)行Application。

主機(jī)信息
主機(jī) |
IP |
用途 |
運(yùn)行組件 |
說明 |
streams001.test.com |
192.168.6.133 |
運(yùn)行ZooKeeper,Streams管理和應(yīng)用 |
ZooKeeper Server Application、audit、authentication、jmx、management、sws、view |
作為Main Management進(jìn)行安裝 |
streams002.test.com |
192.168.6.134 |
運(yùn)行ZooKeeper,Streams管理和應(yīng)用 |
ZooKeeper Server Application、audit、authentication、jmx、management、sws、view |
|
streams003.test.com |
192.168.6.135 |
運(yùn)行ZooKeeper,和應(yīng)用 |
ZooKeeper Server Application |
|
如果新增 |
運(yùn)行Streams應(yīng)用 |
Streams管理員用戶信息
用戶 |
說明 |
streamsadmin |
屬于OS用戶,創(chuàng)建Domain時(shí)選用PAM鑒權(quán)的方式 |
2.環(huán)境準(zhǔn)備
2.1.主機(jī)環(huán)境準(zhǔn)備
2.1.1. 設(shè)置主機(jī)名和域名解析
分別在各主機(jī)上修改/etc/sysconfig/network,設(shè)置主機(jī)名并重啟。主機(jī)名分別如下:
streams001.test.com
streams002.test.com
streams003.test.com
vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=streams001.test.com |
reboot |
reboot完成后,修改所有主機(jī)的/etc/hosts實(shí)現(xiàn)域名解析
vi /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.6.133 streams001.test.com streams001 192.168.6.134 streams002.test.com streams002 192.168.6.135 streams003.test.com streams003 |
2.1.2. 關(guān)閉防火墻
為了方便管理,在運(yùn)行Streams的主機(jī)需要關(guān)閉整個(gè)防火墻。如果有其他需要,請(qǐng)參考Linux指導(dǎo)進(jìn)行防火墻設(shè)置。
在各主機(jī)以root用戶運(yùn)行以下命令:
service iptables save service iptables stop service iptables status chkconfig iptables off sed -i "/service iptables stop/d" /etc/rc.local echo "service iptables stop" >> /etc/rc.local |
2.1.3. 設(shè)置時(shí)鐘同步
時(shí)鐘同步是集群環(huán)境的一個(gè)基本要求。由于時(shí)鐘同步需要NTP服務(wù)器,本文在這里不詳細(xì)描述,如果服務(wù)器的時(shí)間是不同步的,請(qǐng)參考操作系統(tǒng)管理手冊(cè)進(jìn)行時(shí)鐘同步設(shè)置。
2.1.4. 安裝JDK
ZooKeeper和Streams GUI的安裝方式需要JDK,如果系統(tǒng)里沒有Java環(huán)境或Java版本低于v1.7,請(qǐng)執(zhí)行以下安裝。
以root用戶在各主機(jī)安裝JDK并設(shè)置環(huán)境變量:
yum install -y java-1.7.0-openjdk echo "export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/" >> ~/.bash_profile . ~/.bash_profile echo $JAVA_HOME |
2.1.5. 創(chuàng)建并設(shè)置Streams管理員用戶
本次采用root用戶安裝Streams,在安裝過程中再指定Streams管理員的用戶和組,因此需要預(yù)先創(chuàng)建用戶。注意保持每臺(tái)服務(wù)器上的streams相關(guān)用戶和組的ID是一致的。
以root用戶在各主機(jī)執(zhí)行以下命令:
groupadd -g 1001 streamsadmin useradd -u 1001 -g streamsadmin -m -d /home/streamsadmin streamsadmin passwd streamsadmin |
在后續(xù)的配置中,需要Streams管理員用于具有root用戶權(quán)限執(zhí)行命令,創(chuàng)建用戶后還需配置sudo。
visudo 在打開的配置文件中,找到root ALL=(ALL) ALL,在下面添加一行 streamsadmin ALL=(ALL) NOPASSWD: ALL |
修改streamsadmin的ulimit參數(shù),在/etc/security/limits.conf最后增加下面內(nèi)容。
注意:文件保存之后,需要重新登錄一次才能生效,如果重新登錄不行就需要重啟主機(jī)。
vi /etc/security/limits.conf streamsadmin hard nofile 65536 streamsadmin soft nofile 65536 streamsadmin hard nproc 65536 streamsadmin soft nproc 65536 streamsadmin hard stack unlimited streamsadmin soft stack 20480 |
2.2. ZooKeeper環(huán)境準(zhǔn)備
Streams 需要 ZooKeeper V3.4.6 或更高版本,請(qǐng)?jiān)L問//zookeeper.apache.org/下載。
生產(chǎn)環(huán)境建議將ZooKeeper安裝在Streams集群外的機(jī)器,如果僅為了測試,則采用下面的辦法進(jìn)行安裝。
2.2.1. 安裝配置ZooKeeper
使用root用戶在各主機(jī)安裝和配置ZooKeeper:
mkdir /zookeeper cd /zookeeper tar xf /…/zookeeper-3.4.6.tar.gz mkdir /zookeeper/{data,log} cat >/zookeeper/zookeeper-3.4.6/conf/zoo.cfg<< EOF tickTime=2000 dataDir=/zookeeper/data dataLogDir=/zookeeper/log clientPort=2181 initLimit=5 syncLimit=2 server.1=streams001:2888:3888 server.2=streams002:2888:3888 server.3=streams003:2888:3888 EOF echo "export ZOOKEEPER=/zookeeper/zookeeper-3.4.6" >> ~/.bash_profile echo 'PATH=$PATH:$ZOOKEEPER/bin' >> ~/.bash_profile sed -i "/export PATH/d" ~/.bash_profile echo 'export PATH' >> ~/.bash_profile source ~/.bash_profile |
在/zookeeper/data目錄下創(chuàng)建一個(gè)文件:myid
分別在myid上按照配置文件的server.中id的數(shù)值,在不同主機(jī)上的該文件中填寫相應(yīng)過的值,如果
streams001、streams002、streams003的myid內(nèi)容分別為1、2、3
如在streams001上執(zhí)行:
echo 1 > /zookeeper/data/myid |
在各主機(jī)上分別執(zhí)行啟動(dòng)和檢查狀態(tài)腳本,由于已經(jīng)把可執(zhí)行路徑添加到環(huán)境變量中了,所以可以直接執(zhí)行:
zkServer.sh start zkServer.sh status |
正確的狀態(tài)是兩個(gè)Zookeeper狀態(tài)為Follower,一個(gè)為Leader。
2.2.2. 設(shè)置ZooKeeper環(huán)境變量【可選】
在運(yùn)行一些命令(如streamtool)時(shí)會(huì)提示輸入Zookeeper URL,如下圖。我們可以通過設(shè)置環(huán)境變量STREAMS_ZKCONNECT來避免每次的手工輸入。
注意:在單機(jī)Streams環(huán)境中,確保 STREAMS_ZKCONNECT 環(huán)境變量的值為 unset。此環(huán)境變量用于設(shè)置外部ZooKeeper 服務(wù)器的連接字符串。如果此環(huán)境變量的值不是unset,那么InfoSphere Streams streamtool 命令可能不會(huì)使用嵌入式 ZooKeeper(它會(huì)導(dǎo)致不正確的結(jié)果)。
請(qǐng)?jiān)谛枰獔?zhí)行streamtool的主機(jī),分別用root和streamsadmin用戶執(zhí)行以下命令以添加環(huán)境變量:
echo "export STREAMS_ZKCONNECT=streams001:2181,streams002:2181,streams003:2181" >> ~/.bash_profile source ~/.bash_profile |
3.在第一臺(tái)主機(jī)安裝Streams
在集群環(huán)境里,我們先在一臺(tái)主機(jī)上安裝Streams并創(chuàng)建Domain,然后再利用已安裝的內(nèi)容和Domain信息生成新的安裝包并在其他主機(jī)上運(yùn)作,這樣就能快速地把其他主機(jī)加入到Domain里。
解壓Streams安裝包,并執(zhí)行安裝前的環(huán)境檢查:
mkdir /install_pkg cd /install_pkg tar zxvf /<your_path>/Streams-4.0.1.0-x86_64-el6.tar.gz ./dependency_checker.sh |
根據(jù)dependency_checker.sh的運(yùn)行結(jié)果安裝必要的依賴包,以下命令是安裝在RHEL 6.5所需的依賴包。安裝完成后再次運(yùn)行dependency_checker.sh,直到不再提示錯(cuò)誤。
yum install -y gcc-c++ yum install -y perl-Time-HiRes cd /install_pkg/StreamsInstallFiles/rpm yum install -y perl-XML-Simple-2.18-6.el6.noarch.rpm ./dependency_checker.sh |
用root執(zhí)行安裝命令,如果配置X Window則啟用GUI安裝方式,否則啟動(dòng)命令行方式。按提示即可,注意選擇前面創(chuàng)建的streamsadmin用戶和組。提示:root和non-root的安裝區(qū)別僅在于默認(rèn)安裝路徑不同。執(zhí)行InfoSphereStreamsSetup.bin后按提示進(jìn)行即可。
cd /install_pkg/StreamsInstallFiles/ ./InfoSphereStreamsSetup.bin |
安裝完成后,分別用root和streamsadmin用戶設(shè)置Streams的環(huán)境變量
echo 'PATH=$PATH:/opt/ibm/InfoSphere_Streams/4.0.1.0/bin' >> ~/.bash_profile sed -i "/export PATH/d" ~/.bash_profile echo 'export PATH' >> ~/.bash_profile echo "source /opt/ibm/InfoSphere_Streams/4.0.1.0/bin/streamsprofile.sh" >> ~/.bash_profile source ~/.bash_profile |
4.創(chuàng)建并配置Domain
4.1.創(chuàng)建Domain
1. 用streamsadmin用戶啟動(dòng)Domain管理界面進(jìn)行創(chuàng)建:
su - streamsadmin /opt/ibm/InfoSphere_Streams/4.0.1.0/DomainManager.sh |

2. 創(chuàng)建基于PAM鑒權(quán)的Domain


在ZooKeeper connection string里填:
streams001:2181,streams002:2181,streams003:2181
3. 為InfoSphere Streams 生成認(rèn)證密鑰
生成公用密鑰和專用密鑰使 InfoSphere Streams 用戶不必在運(yùn)行 streamtool 命令時(shí)輸入密碼。該操作或streamtool genkey 命令會(huì)生成下列文件:
專用密鑰:user-id_priv.pem
公用密鑰:user-id.pem
Streams 將專用密鑰存儲(chǔ)在user-home-directory/.streams/key/domain-id 目錄中。公用密鑰存儲(chǔ)在 ZooKeeper 中。
4. 設(shè)置domain開機(jī)自動(dòng)啟動(dòng)/恢復(fù)(可選)
用streamtool registerdomainhost -d domain-id --zkconnecthost:port命令設(shè)置domain為Linux的自動(dòng)啟動(dòng)服務(wù),以保證服務(wù)器因故障重啟時(shí),domain服務(wù)能自動(dòng)恢復(fù)。如果前面設(shè)置了STREAMS_ZKCONNECT變量,--zkconnnect可以省略,下同。
streamtool registerdomainhost -d myDomain |
4.2. 添加其他主機(jī)到Domain
1. 產(chǎn)生域主機(jī)安裝包




2. 將域主機(jī)安裝包拷貝到其他機(jī)器
su - streamsadmin cd ~/Download scp StreamsDomainHost-4.0.1.0-x86_64-el6.tar streams002: scp StreamsDomainHost-4.0.1.0-x86_64-el6.tar streams003: |
3. 用root用戶在streams002,streams003上進(jìn)行安裝
tar xf StreamsDomainHost-4.0.1.0-x86_64-el6.tar cd StreamsDomainHost ./dependency_checker.sh yum install -y gcc-c++ yum install -y perl-Time-HiRes yum install -y perl-XML-Simple-2.18-6.el6.noarch.rpm ./dependency_checker.sh sudo -E ./streamsdomainhostsetup.sh |
添加資源后在Streams Console馬上能查看到:

執(zhí)行以下命令也可以看到Domain的狀態(tài)和資源:
streamtool lsdomain streamtool getdomainstate -l -d myDomain streamtool checkdomainhosts -d myDomain |
4.3.為Domain中的主機(jī)添加Tag(可選)
為主機(jī)指定Tag,是為了將不同的服務(wù)在主機(jī)上區(qū)分開來,如主機(jī)指定Application表示該主機(jī)只運(yùn)行應(yīng)用程序而不運(yùn)行管理服務(wù)。
選中某臺(tái)主機(jī),勾選/去勾選右邊的服務(wù)名字并保存。

修改后執(zhí)行streamtool getdomainstate -l -d myDomain查看狀態(tài)

4.4. 修改Domain屬性
通過修改Domain的屬性,以啟用Domain的高可用性。


4.5. 同步環(huán)境變量
將第一臺(tái)主機(jī)root和streamsadmin用戶的.bash_profile同步到其他主機(jī)。
scp ~/.bash_profile streams002:~/ scp ~/.bash_profile streams003:~/ |
5.創(chuàng)建Instance并驗(yàn)證安裝
5.1. 創(chuàng)建Instance


5.2. 運(yùn)行Sample
su - streamsadmin cp -R $STREAMS_INSTALL/samples . cd samples/spl/application/WordCount/ make distributed streamtool submitjob -P file='/var/log/boot.log' -d myDomain -i testins output/sample.WordCount.sab |
檢查結(jié)果
cd /tmp/Streams-StreamsDomain/logs/<hostname>/instances/StreamsInstance/jobs/<0> cat xxx |
6.安裝開發(fā)工具StreamsStudio
在本地安裝Streams Studio有三種方法,具體請(qǐng)參考:
//www-01.ibm.com/support/knowledgecenter/SSCRJU_4.0.0/com.ibm.streams.install.doc/doc/tinstall-studio-linux.html?lang=zh
從本地或遠(yuǎn)程訪問Streams Console并下載 Streams Studio forLinux/Windows安裝。

tar xf ~/Downloads/StreamsStudio.tar.gz cd StreamsStudio ./streamsStudio -clean & |
小結(jié)
Streams集群安裝并不復(fù)雜,用戶可以通過參考官網(wǎng)的安裝過程進(jìn)行安裝配置。然而,本文將關(guān)鍵步驟總結(jié)下來方便用戶參考,減少走彎路的可能性,用戶只需參考該文檔即能快速搭建Streams集群環(huán)境。
慧都控件網(wǎng)年終促銷第一波已開啟,全場6折起,豪禮搶不停>>>
截止時(shí)間:2016年10月30日
詳情請(qǐng)咨詢!
客服熱線:023-66090381