zookeeper集群搭建

集群搭建

zookeeper集群规模不小于3个节点,并且要求服务器之间系统时间保持一致。

首先在一台机器上192.168.1.106如下操作:

1、下载包传到Linux后解压到/usr/local/zookeeper/下

2、添加环境变量vim /etc/profile

1
2
3
4
#zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
立即生效:source /etc/profile

3、进入cd /usr/local/zookeeper/conf

1
2
3
4
5
6
重命名配置文件:mv zoo_sample.cfg zoo.cfg
修改配置: dataDir=/usr/local/zookeeper/data
并且添加如下代码
server.0=192.168.1.106:2888:3888
server.1=192.168.1.107:2888:3888
server.2=912.101.1.108:2888:3888

4、创建data目录:/usr/local/zookeeper/data

1
2
在data下创建文件myid
vim myid 在里边填写0

5、把zookeeper目录远程拷贝到192.168.1.107、192.168.1.108

1
2
3
4
5
6
7
8
9
10
进入/usr/local/
scp -r zookeeper 192.168.1.107:/usr/local/
scp -r zookeeper 192.168.1.108:/usr/local/
分别修改这两个节点下data中的myid文件的数字。和配置文件中的0、1、2
server.0=192.168.1.106:2888:3888
server.1=192.168.1.107:2888:3888
server.2=912.101.1.108:2888:3888
一致。
```
### 6、启动
在三台机器上分别启动zookeeper
启动:zkServer.sh start
看状态:zkServer.sh status(其中一个是leader,其他为follower)
重启:zkServer.sh  restart
1
### 7、操作zookeeper (shell)
zkCli.sh 进入zookeeper客户端    
根据提示命令进行操作:
        查找:ls /   ls /zookeeper
        创建并赋值:create /server hadoop
        获取:get /server
        设值:set /server hadoop
        可以看到zookeeper集群的数据一致性
创建节点有俩种类型:短暂(ephemeral) 持久(persistent)

zkCli.sh -server 192.168.1.106
1
2
## 操作API
Zookeeper API共包含五个包,分别为:

  (1)org.apache.zookeeper
  (2)org.apache.zookeeper.data
  (3)org.apache.zookeeper.server
  (4)org.apache.zookeeper.server.quorum
  (5)org.apache.zookeeper.server.upgrade

1
2
3
4
5
其中org.apache.zookeeper,包含Zookeeper类,他是我们编程时 最常用的类文件。这个类是Zookeeper客户端的主要类文件。如果要使用Zookeeper服务,应用程序首先必须创建一个Zookeeper实例, 这时就需要使用此类。一旦客户端和Zookeeper服务建立起了连接,Zookeeper系统将会给次连接会话分配一个ID值,并且客户端将会周期性的 向服务器端发送心跳来维持会话连接。只要连接有效,客户端就可以使用Zookeeper API来做相应处理了。

zookeeper-*.jar是官方提供的java api,zkclient-0.1.jar则是在原生态的api基础上进行扩展的开源Java客户端api。

Zookeeper构造方法参数:

connectString 服务器列表,用逗号分隔
sessionTimeOut 心跳检测时间周期,毫秒
wather 事件处理通知器
canBeReadOnly 标识当前会话是否支持只读
sessionId和sessionPasswd 标识连接集群的sessionid和密码。

1
2
3
4
5
由于zookeeper客户端和服务端简历连接会话是一个异步的过程,在程序中,我们我们需要在程序中设置等待连接成功在进行下面代码执行。

创建节点方法:create

提供两套创建节点方法,同步和异步方式。

同步方式:
参数1 节点路径,不许递归创建路径。
参数2 节点内容,要求类型是字节数组,不支持序列化方式,如果需要实现序列化,可以使用序列化框架如:Hessian/kryo框架
参数3 节点权限,用Ids.OPEN_ACL_UNSAFE开放权限即可
参数4 节点类型,四种:
PERSISTENT 持久节点
PERSISTENT SEQUENTIAL 持久顺序节点
ERHEMERAL 临时节点
ERHEMERAL SEQUENTIAL 临时顺序节点
```