快速搭建Streams集群环境
搭建集群环境的关键步骤包含以下6大步骤,后面对每个步骤再展开描述。
1. 环境规划
2. 环境准备
3. 安装Streams
4. 创建并配置Domain
5. 创建Instance并验证安装
6. 安装开发工具Streams Studio
1.环境规划
集群环境由Domain和外部ZooKeeper组成,如下图所示,其中Domain将多台主机组织在一起,形成一个大资源池。一个Domain共享相同的用户鉴权(LDAP、PAM)和外部的Zookeeper,Domain包含多台主机,这些主机则可以分给不同Instance。
此次安装采用三台主机为例,三台主机同时运行ZooKeeper服务器、管理节点和Streams应用节点。出于性能考虑,在生产环境中建议将ZooKeeper运行到专门的服务器上。未来新增加的节点可用于运行Application。
主机信息
主机 |
IP |
用途 |
运行组件 |
说明 |
streams001.test.com |
192.168.6.133 |
运行ZooKeeper,Streams管理和应用 |
ZooKeeper Server Application、audit、authentication、jmx、management、sws、view |
作为Main Management进行安装 |
streams002.test.com |
192.168.6.134 |
运行ZooKeeper,Streams管理和应用 |
ZooKeeper Server Application、audit、authentication、jmx、management、sws、view |
|
streams003.test.com |
192.168.6.135 |
运行ZooKeeper,和应用 |
ZooKeeper Server Application |
|
如果新增 |
运行Streams应用 |
Streams管理员用户信息
用户 |
说明 |
streamsadmin |
属于OS用户,创建Domain时选用PAM鉴权的方式 |
2.环境准备
2.1.主机环境准备
2.1.1. 设置主机名和域名解析
分别在各主机上修改/etc/sysconfig/network,设置主机名并重启。主机名分别如下:
streams001.test.com
streams002.test.com
streams003.test.com
vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=streams001.test.com |
reboot |
reboot完成后,修改所有主机的/etc/hosts实现域名解析
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. 关闭防火墙
为了方便管理,在运行Streams的主机需要关闭整个防火墙。如果有其他需要,请参考Linux指导进行防火墙设置。
在各主机以root用户运行以下命令:
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. 设置时钟同步
时钟同步是集群环境的一个基本要求。由于时钟同步需要NTP服务器,本文在这里不详细描述,如果服务器的时间是不同步的,请参考操作系统管理手册进行时钟同步设置。
2.1.4. 安装JDK
ZooKeeper和Streams GUI的安装方式需要JDK,如果系统里没有Java环境或Java版本低于v1.7,请执行以下安装。
以root用户在各主机安装JDK并设置环境变量:
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. 创建并设置Streams管理员用户
本次采用root用户安装Streams,在安装过程中再指定Streams管理员的用户和组,因此需要预先创建用户。注意保持每台服务器上的streams相关用户和组的ID是一致的。
以root用户在各主机执行以下命令:
groupadd -g 1001 streamsadmin useradd -u 1001 -g streamsadmin -m -d /home/streamsadmin streamsadmin passwd streamsadmin |
在后续的配置中,需要Streams管理员用于具有root用户权限执行命令,创建用户后还需配置sudo。
visudo 在打开的配置文件中,找到root ALL=(ALL) ALL,在下面添加一行 streamsadmin ALL=(ALL) NOPASSWD: ALL |
修改streamsadmin的ulimit参数,在/etc/security/limits.conf最后增加下面内容。
注意:文件保存之后,需要重新登录一次才能生效,如果重新登录不行就需要重启主机。
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环境准备
Streams 需要 ZooKeeper V3.4.6 或更高版本,请访问//zookeeper.apache.org/下载。
生产环境建议将ZooKeeper安装在Streams集群外的机器,如果仅为了测试,则采用下面的办法进行安装。
2.2.1. 安装配置ZooKeeper
使用root用户在各主机安装和配置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目录下创建一个文件:myid
分别在myid上按照配置文件的server.中id的数值,在不同主机上的该文件中填写相应过的值,如果
streams001、streams002、streams003的myid内容分别为1、2、3
如在streams001上执行:
echo 1 > /zookeeper/data/myid |
在各主机上分别执行启动和检查状态脚本,由于已经把可执行路径添加到环境变量中了,所以可以直接执行:
zkServer.sh start zkServer.sh status |
正确的状态是两个Zookeeper状态为Follower,一个为Leader。
2.2.2. 设置ZooKeeper环境变量【可选】
在运行一些命令(如streamtool)时会提示输入Zookeeper URL,如下图。我们可以通过设置环境变量STREAMS_ZKCONNECT来避免每次的手工输入。
注意:在单机Streams环境中,确保 STREAMS_ZKCONNECT 环境变量的值为 unset。此环境变量用于设置外部ZooKeeper 服务器的连接字符串。如果此环境变量的值不是unset,那么InfoSphere Streams streamtool 命令可能不会使用嵌入式 ZooKeeper(它会导致不正确的结果)。
请在需要执行streamtool的主机,分别用root和streamsadmin用户执行以下命令以添加环境变量:
echo "export STREAMS_ZKCONNECT=streams001:2181,streams002:2181,streams003:2181" >> ~/.bash_profile source ~/.bash_profile |
3.在第一台主机安装Streams
在集群环境里,我们先在一台主机上安装Streams并创建Domain,然后再利用已安装的内容和Domain信息生成新的安装包并在其他主机上运作,这样就能快速地把其他主机加入到Domain里。
解压Streams安装包,并执行安装前的环境检查:
mkdir /install_pkg cd /install_pkg tar zxvf /<your_path>/Streams-4.0.1.0-x86_64-el6.tar.gz ./dependency_checker.sh |
根据dependency_checker.sh的运行结果安装必要的依赖包,以下命令是安装在RHEL 6.5所需的依赖包。安装完成后再次运行dependency_checker.sh,直到不再提示错误。
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执行安装命令,如果配置X Window则启用GUI安装方式,否则启动命令行方式。按提示即可,注意选择前面创建的streamsadmin用户和组。提示:root和non-root的安装区别仅在于默认安装路径不同。执行InfoSphereStreamsSetup.bin后按提示进行即可。
cd /install_pkg/StreamsInstallFiles/ ./InfoSphereStreamsSetup.bin |
安装完成后,分别用root和streamsadmin用户设置Streams的环境变量
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.创建并配置Domain
4.1.创建Domain
1. 用streamsadmin用户启动Domain管理界面进行创建:
su - streamsadmin /opt/ibm/InfoSphere_Streams/4.0.1.0/DomainManager.sh |
2. 创建基于PAM鉴权的Domain
在ZooKeeper connection string里填:
streams001:2181,streams002:2181,streams003:2181
3. 为InfoSphere Streams 生成认证密钥
生成公用密钥和专用密钥使 InfoSphere Streams 用户不必在运行 streamtool 命令时输入密码。该操作或streamtool genkey 命令会生成下列文件:
专用密钥:user-id_priv.pem
公用密钥:user-id.pem
Streams 将专用密钥存储在user-home-directory/.streams/key/domain-id 目录中。公用密钥存储在 ZooKeeper 中。
4. 设置domain开机自动启动/恢复(可选)
用streamtool registerdomainhost -d domain-id --zkconnecthost:port命令设置domain为Linux的自动启动服务,以保证服务器因故障重启时,domain服务能自动恢复。如果前面设置了STREAMS_ZKCONNECT变量,--zkconnnect可以省略,下同。
streamtool registerdomainhost -d myDomain |
4.2. 添加其他主机到Domain
1. 产生域主机安装包
2. 将域主机安装包拷贝到其他机器
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上进行安装
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马上能查看到:
执行以下命令也可以看到Domain的状态和资源:
streamtool lsdomain streamtool getdomainstate -l -d myDomain streamtool checkdomainhosts -d myDomain |
4.3.为Domain中的主机添加Tag(可选)
为主机指定Tag,是为了将不同的服务在主机上区分开来,如主机指定Application表示该主机只运行应用程序而不运行管理服务。
选中某台主机,勾选/去勾选右边的服务名字并保存。
修改后执行streamtool getdomainstate -l -d myDomain查看状态
4.4. 修改Domain属性
通过修改Domain的属性,以启用Domain的高可用性。
4.5. 同步环境变量
将第一台主机root和streamsadmin用户的.bash_profile同步到其他主机。
scp ~/.bash_profile streams002:~/ scp ~/.bash_profile streams003:~/ |
5.创建Instance并验证安装
5.1. 创建Instance
5.2. 运行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 |
检查结果
cd /tmp/Streams-StreamsDomain/logs/<hostname>/instances/StreamsInstance/jobs/<0> cat xxx |
6.安装开发工具StreamsStudio
在本地安装Streams Studio有三种方法,具体请参考:
//www-01.ibm.com/support/knowledgecenter/SSCRJU_4.0.0/com.ibm.streams.install.doc/doc/tinstall-studio-linux.html?lang=zh
从本地或远程访问Streams Console并下载 Streams Studio forLinux/Windows安装。
tar xf ~/Downloads/StreamsStudio.tar.gz cd StreamsStudio ./streamsStudio -clean & |
小结
Streams集群安装并不复杂,用户可以通过参考官网的安装过程进行安装配置。然而,本文将关键步骤总结下来方便用户参考,减少走弯路的可能性,用户只需参考该文档即能快速搭建Streams集群环境。
慧都控件网年终促销第一波已开启,全场6折起,豪礼抢不停>>>
截止时间:2016年10月30日
详情请咨询!
客服热线:023-66090381