单机或者分布式安装
将zookeeper分别解压到不同机器相应的路径上
单机安装就将for循环改成自己主机的IP
#!/bin/bash
zootmp=/root/liutao/zookeeper/tmp # zk的目录下的数据目录,需要自己创建,此路径用于存储zookeeper中数据的内存快照、及事物日志文件
zoocfg=/root/liutao/zookeeper/conf/zoo.cfg # zk目录下的配置文件的路径
myid=1
for h7_node in h71 h72 h73;do
ssh -Tq root@$h7_node << EOF
echo $myid
if test -e $zootmp
then
rm -rf $zootmp
mkdir $zootmp
touch $zootmp/myid
echo $myid >> ~/liutao/zookeeper/tmp/myid // zk主机号
else
mkdir $zootmp
touch $zootmp/myid
echo $myid >> ~/liutao/zookeeper/tmp/myid // // zk主机号
fi
if test -e $zoocfg
then
echo "tickTime=2000" > $zoocfg
echo "initLimit=10" >> $zoocfg
echo "syncLimit=5" >> $zoocfg
echo "dataDir=/root/liutao/zookeeper/tmp" >> $zoocfg
echo "clientPort=2181" >> $zoocfg // 2181:对cline端提供服务
echo "server.1=h71:2888:3888" >> $zoocfg // 3888:选举leader使用 , 2888:集群内机器通讯使用(Leader监听此端口)
echo "server.2=h72:2888:3888" >> $zoocfg
echo "server.3=h73:2888:3888" >> $zoocfg
else
touch $zoocfg
echo "tickTime=2000" > $zoocfg
echo "initLimit=10" >> $zoocfg
echo "syncLimit=5" >> $zoocfg
echo "dataDir=/root/liutao/zookeeper/tmp" >> $zoocfg
echo "clientPort=2181" >> $zoocfg
echo "server.1=h71:2888:3888" >> $zoocfg
echo "server.2=h72:2888:3888" >> $zoocfg
echo "server.3=h73:2888:3888" >> $zoocfg
fi
exit
EOF
myid=`expr $myid + 1`
done
环境变量
export ZOOKEEPER_HOME=/root/liutao/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
常用命令
启动停止
// 启动zookeeper zkServer.sh start
// 停止zookeeper zkServer.sh stop
// 查看状态:zkServer.sh status
创建结点
zkCli.sh 链接本地zk服务器,退出使用quit
create [-s] [-e] path data #其中-s 为有序节点,-e 临时节点,-s会记录每个子节点创建的先后顺序
创建持久化节点并写入数据,get命令获取数据
持久化有序结点并写入数据,结点名称会更改为名称数字的组合,作用是创建的唯一ID
创建临时结点之后,quit退出会话,结点自动删除,并且临时结点不能有子结点。
更新结点
更新结点之后会更新版本号码
zkCli.sh 链接本地zk服务器,退出使用quit
set 路径 更新的数据 【当前dataversion,可选】 #
删除结点
delete path 【当前dataversion,可选】 # 结点有子结点,是不允许删除的
rmr path # 删除该结点以及所有的子结点
查看结点
get path # 返回数据和当前结点的属性
stat path # 返回当前结点属性
属性说明:
返回结点列表
ls path # 返回当前路径下的所有子结点
ls2 path # 返回当前路径下的所有子结点和当前子结点的属性