硬件环境
CentOS 6.3 虚拟机2台
集群最好是奇数台容灾性好一些,由于允许不过半节点挂点:
比如5台允许挂掉2台,
4台只能允许挂掉一台
http://hi.baidu.com/ttovo/item/97add69b19f1ecbccd80e554
CentOS虚拟机桥接方式
环境准备:安装JDK,配置Hosts,配置Hostname
Zookeeper官方 http://zookeeper.apache.org/
storm集群工作交互图
Nimbus(主节点,master)和Supervisor(工作节点,slave)之间的所有协调工作都是通过一个Zookeeper集群来完成。
并且,nimbus进程和supervisor都是快速失败(fail-fast)和无状态的。所有的状态要么在Zookeeper里面, 要么在本地磁盘上。
zk安装步骤
1、下载解压:
Wgethttp://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
tar -xvzf zookeeper-3.4.5.tar.gz
目录为/opt/soft/zookeeper-3.4.5
在/etc/profile 里配置:
JAVA_HOME
ZOOKEEPER_HOME
PATH
2、创建data目录和myid
创建data目录:
$ZOOKEEPER/data,即/opt/soft/zookeeper-3.4.5/data
创建myid: /opt/soft/zookeeper-3.4.5/data/myid
Myid存server的id,可以是1,2,3…,必须唯一
配置
3、配置:
创建文件 $ZOOKEEPER/conf/zoo.cfg
修改zoo.cfg,增加如下:
dataDir=/opt/soft/zookeeper-3.4.5/data
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
server.1=master:2888:3888
server.2=slave1:2888:3888
其中server.myid代表组成整个服务的机器,当服务启动时,会在数据目录下查找这个文件myid,这个文件中存有服务器的号码。下面会讲myid文件的配置。
ZK集群
Master/slave 模式
Leader
Flower
Flower
…
Leader选举
Node :树形目录结构,每个目录是一个可存放数据的node
持久化
序列化持久化节点
临时节点
序列化临时节点
Watches
每个节点及子节点数据发生变化或被删除、或创建时触发对应事件
及时性高
启动,基本使用
zkServer.sh start 启动
zkServer.sh status 查看状态
Master/slave 架构
Leader选举,Leader负责整个集群Client消息接收,分发给每个Flower。
Client操作:
在任一台机器上
zkCli.sh -server master:2181
zk核心
Node:树形结构,每个叶子是个节点
4种节点类型
Watches:事件,当节点及子节点数据变化时触发
运维中需注意事项:
1、连接数容易占满
2、watches数
补充 :
Storm的Nimbus和Supervisor之间通过Zookeeper进行协调
每个Supervisor和Zookeeper之间会存在一个临时目录,当Supervisor挂掉临时目录就会被删除,Nimbus就是通过检测这个目录来进行判断的,一旦挂掉,就会把Supervisor分配的任务重新分配给其他节点,从而保证作业不会受到影响。
zk集群Master/slave
只有一个leader 其他都是flower
leader负责整个zookeeper集群的消息接收和分发,接到消息后会广播到没一台flower节点上面
zookeeper部分leader,只有启动的时候才会选出,当leader挂掉了,就会重新选取一个
leader选举
Node : 树行目录结构,每个目录是一个可存放数据的node
在做分布式配置的时候可以配置到这个节点上面,修改了立马生效
节点有四种:
持久化节点
序列化持久节点
临时节点:一旦节点挂掉,目录清除
序列化临时节点
watches
每一个节点及子节点数据发送变化或被删除,或创建时,触发对应的事件,及时性高。
进入Zookeeper的客户端命令
./zkCli.sh -server localhost:2181
zookeeper命令:
create
默认是持久化目录
-s : 序列化
-e:临时
创建
create /aa "aavalue";
创建序列化的临时目录
create -s -e 、temp “tem”
获取
get "aa"
更新
set /aa "newvalue"
zookeeper连接数
运维注意:
1.连接数容易占满
2.watches数