zookeeper安装

一、
安装3台虚拟机

二、
/etc/hosts
配置:
127.0.0.1 localhost
192.168.76.131 linux01
192.168.76.134 linux02
192.168.76.132 linux03

三、安装JDK
rpm -ivh jdk.rpm
vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

:wq

source /etc/profile

java -version

四、安装zookeeper

0.关闭防火墙
service iptables stop

禁用防火墙
chkconfig iptables off

1.解压安装包
tar -zxvf zookeeper.tar.gz

2.修改配置文件

[img]http://dl2.iteye.com/upload/attachment/0124/5101/63bdc75f-9ece-3089-a26e-1d6eda9d70de.png[/img]


[img]http://dl2.iteye.com/upload/attachment/0124/5103/31a02566-5b7a-3899-8c9b-0150f7fab474.png[/img]


[img]http://dl2.iteye.com/upload/attachment/0124/5105/69383c84-9d92-3456-973a-64bac6cadde9.png[/img]

3.配置集群中的其他机器

scp -r zookeeper-3.4.7 root@linux02:/usr/local/software/
scp -r zookeeper-3.4.7 root@linux03:/usr/local/software/

分别修改 tmp/myid 为 2 与 3

4.启动

./bin/zkServer.sh start
依次启动各个机器上的zookeeper

5.异常

启动正常
但查看状态时 ./zkServer.sh status
Error contacting service. It is probably not running.

错误原因:
配置hosts
127.0.0.1 localhost linux01
导致机器在寻址时找到的是127.0.0.1的地址而不是配置的192.168.76.131的地址

需要删除tmp目录下的文件
目录中记录了错误的信息状态,需要删除重新配置
rm -rf /tmp

Interrupted while waiting for message on queue java.lang.InterruptedException
conf/zoo.cfg
配置错误
server.1=linux01
server.2=linux01
server.3=linux01
导致

Cannot open channel to 2 at election address linux02/192.168.198.201:3888 java.net.NoRouteToHostExce
防火墙未关闭
service iptables status 查看防火墙状态
service iptables stop 关闭防火墙

6../zkServer status
依次查看各机器
3台当启动到第2台时

[img]http://dl2.iteye.com/upload/attachment/0124/5108/eb3aa481-5330-3e6a-8088-e77fb2110b9d.png[/img]

[img]http://dl2.iteye.com/upload/attachment/0124/5110/402e3c93-7781-3b6f-96ae-67de0fd64a01.png[/img]


[img]http://dl2.iteye.com/upload/attachment/0124/5112/ba8565a8-8ce0-3f40-80b5-68c488c3ba1d.png[/img]


7.3台机器

尝试关闭两台,则剩余一台机器的状态为:
It is probably not running

尝试关闭leader,则新的leader会产生在两台机器中的一个

8.错误信息日志

/bin/zookeeper.out 文件为错误信息日志
若启动出现问题,则查询此文件

五、使用

1.连接

./zkcl.sh -server linux02:2181 访问指定机器
./zkcl.sh 连接本机

2.

创建 znode 并复制 value
create [-s] [-e] path data [acl] #创建数据节点
--其中
-s表示顺序节点,不加则为普通节点
-e表示临时节点,不加则为持久节点
两个都不加,则为普通持久节点
--acl 指定权限控制,不赋值则不进行任何权限控制
节点的两个维度:
[table]
||顺序节点|普通节点|
|临时节点||
|持久节点||
[/table]
两两组合共四种可能的节点存在
如:create /part 222

查询
ls /part

修改
set /part 333

取值
get /part

删除
delete /part


六、
配置全局命令

vim /etc/profile
export ZK_HOME=/zookeeper
exprot PATH=/ZK_HOME/bin


[img]http://dl2.iteye.com/upload/attachment/0124/5366/c1c10143-05e0-38de-8871-11495cf0e5de.png[/img]

TAB TAB 按两下TAB键,提示所有相关命令
[img]http://dl2.iteye.com/upload/attachment/0124/5368/8aa07f0a-8e26-324b-a242-0d1a95e32286.png[/img]

JPS 查询相应进程(非Linux命令,是JAVA的命令,在/etc/profile中配置了JAVA的环境变量)

七、JAVA API

创建会话:
Zookeeper(String connectString,int sessionTimeout,Watcher watcher)
Zookeeper(String connectString,int sessionTimeout,Watcher watcher,boolean canBeReadOnly)
Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd)
Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd,boolean canBeReadOnly)
参数说明:
connectString -- host:port[,host:port][basePath] 指定的服务器列表,多个host:port之间用英文逗号分隔。还可以可选择的指定一个基路径,如果指定了一个基路径,则所有后续操作基于这个及路径进行。
sessionTimeOut -- 会话超时时间。以毫秒为单位。客户端和服务器端之间的连接通过心跳包进行维系,如果心跳包超过这个指定时间则认为会话超时失效。
watcher -- 指定默认观察者。如果为null表示不需要观察者。
canBeReadOnly -- 是否支持只读服务。只当一个服务器失去过半连接后不能再进行写入操作时,是否继续支持读取操作。略
sessionId、SessionPassword -- 会话编号 会话密码,用来实现会话恢复。

注意,整个创建会话的过程是异步的,构造方法会在初始化连接后即返回,并不代表真正建立好了一个会话,此时会话处于"CONNECTING"状态。
当会话真正创建起来后,服务器会发送事件通知给客户端,只有客户端获取到这个通知后,会话才真正建立。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值