接下来的例子中,你将会使用Kubernetes和Docker来创建一个多功能的Apache
Storm集群。
你将会设置一个Apache ZooKeeper服务,一个Storm master服务(又名Nimbus主机),以及一个Storm工作者集合(又名监管者)。
资源
可以自由获取这些资源文件:
Docker镜像 – https://github.com/mattf/docker-storm
Docker受信的构建文件 – https://registry.hub.docker.com/search?q=mattf/storm
步骤零:前期准备
这个示例假设你已经安装运行了一个Kubernetes集群,环境路径下已经安装了kubectl命令行工具。请查看不同平台的安装说明开始。
步骤一:启动ZooKeeper服务
ZooKeeper是一个分布式协调者服务,Storm使用它来作为引导程序和存储运行转态数据。
使用这个examples/storm/zookeeper.json文件来创建一个运行ZooKeeper服务的pod。
$
kubectl create -f examples/storm/zookeeper.json |
然后使用examples/storm/zookeeper-service.json文件创建一个逻辑服务终端节点用来给Storm访问ZooKeeper
pod。
$
kubectl create -f examples/storm/zookeeper-service.json |
在这之前,你需要确保ZooKeeper pod处于运行态并且可以被访问。
查看ZooKeeper是否运行
$
kubectl get pods
NAME READY STATUS RESTARTS AGE
zookeeper 1/1 Running
0 43s |
查看ZooKeeper是否可以访问
步骤二:启动Nimbus服务
Nimbus服务是Storm集群的主节点(或者首要)服务。Nimbus依赖于多种功能的ZooKeeper服务。
使用examples/storm/storm-nimbus.json文件创建一个运行Nimbus服务的pod。
$
kubectl create -f examples/storm/storm-nimbus.json |
然后使用examples/storm/storm-nimbus-service.json文件创建一个逻辑服务终端节点用来给Storm工作者访问Nimbus
pod。
$
kubectl create -f examples/storm/storm-nimbus-service.json |
确保Nimbus服务运行正常。
查看Nimbus节点是否运行以及可以访问
步骤三:启动Storm工作者
在Storm集群中,Storm工作者(或者监督者)用来完成繁重的工作。Nimbus服务管理这些运行流处理拓扑应用的工人。
Storm工作者需要保证ZooKeeper和Nimbus服务处于运行态。
使用examples/storm/storm-worker-controller.json文件来创建副本控制器来管理工作者pods。
$
kubectl create -f examples/storm/storm-worker-controller.json |
查看工作者们是否在运行
一种查看工作者信息的方式是,通过ZooKeeper服务查看有多少客户端在运行。
$
echo stat | nc 10.254.139.141 2181; echo
Zookeeper version: 3.4.6--1, built on 10/23/2014
14:18 GMT
Clients:
/192.168.48.0:44187[0](queued=0,recved=1,sent=0)
/192.168.45.0:39568[1] (queued=0,recved=14072,sent=14072)
/192.168.86.1:57591[1](queued=0,recved=34,sent=34)
/192.168.8.0:50375[1](queued=0,recved=34,sent=34)
/192.168.45.0:39576[1](queued=0,recved=34,sent=34)
Latency min/avg/max: 0/2/2570
Received: 23199
Sent: 23198
Connections: 5
Outstanding: 0
Zxid: 0xa39
Mode: standalone
Node count: 13 |
Nimbus服务和每个工作者都对应着一个客户端。理想情况下,应该可以在副本控制器创建前后从ZooKeeper获取stat输出。
(欢迎提交pull requests使用不同的方式来验证workers)
tl;dr
kubectl create -f zookeeper.json
kubectl create -f zookeeper-service.json
确保ZooKeeper Pod正在运行(使用:kubectl get pods)。
kubectl create -f storm-nimbus.json
kubectl create -f storm-nimbus-service.json
确保Nimbus Pod正在运行。
kubectl create -f storm-worker-controller.json
|