1.安装单机Zookeeper
1.需要先安装jdk
2.安装zookeeper,下载地址https://archive.apache.org/dist/zookeeper/ ,选择对应的版本,我这里选择3.4.9版本进行安装,复制你要下载的版本链接地址,使用wget命令下载到虚拟机中。
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
3.解压zookeeper压缩文件到/usr/local/apps/下,该app目录需要自己创建。
tar -zxvf ~/zookeeper-3.4.9.tar.gz -C /usr/local/apps/
4.重命名zookeeper安装目录,此步骤非必须,只是为了方便操作
mv zookeeper-3.4.9 zookeeper
5.修改环境变量,此步骤是为了在执行zookeeper一些命令(如启动命令)时不一定非要进入bin目录下以相对路径的方式执行或者不进入bin目录下以绝对路径的方式执行,配置了环境变量在任何目录下都可以执行zookeeper的bin目录下的命令。
编辑/etc/profile文件
vi /etc/profile
添加如下内容,ZOOKEEPER_HOME配置的是zookeeper安装位置,$ZOOKEEPER_HOME指代的就是/usr/local/apps/zookeeper,PATH配置的就是将/usr/local/apps/zookeeper/bin变量追加到PATH中。
export ZOOKEEPER_HOME=/usr/local/apps/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
6.重新编译文件使修改后的文件生效
source /etc/profile
2.ZooKeeper 伪集群环境搭建
1.ZooKeeper伪集群的实现是在一台虚拟机上创建3个zookeeper实例,由于zookeeper启动依赖于zoo_sample.cfg配置文件,所以我这里另外创建了3份配置文件以来模拟3个zookeeper实例
创建zookeeper实例1,进入zookeeper/conf目录下复制一份配置文件名为zk1.cfg
cd zookeeper/conf
cp zoo_sample.cfg zk1.cfg
2.修改zk1.cfg配置文件,有的属性有默认值需要注释掉,以免造成冲突
dataDir=/usr/local/apps/zookeeper/data/zk1
dataLogDir=/usr/local/apps/zookeeper/log/zk1
clientPort=2181
#server.序号= (主机名, 心跳端口、数据端口)
server.1=192.168.2.10:1888:2888
server.2=192.168.2.10:3888:4888
server.3=192.168.2.10:5888:6888
3.创建zookeeper实例2
cp zk1.cfg zk2.cfg
dataDir=/usr/local/apps/zookeeper/data/zk2
dataLogDir=/usr/local/apps/zookeeper/log/zk2
clientPort=2182
#server.序号= (主机名, 心跳端口、数据端口)
server.1=192.168.2.10:1888:2888
server.2=192.168.2.10:3888:4888
server.3=192.168.2.10:5888:6888
4.创建zookeeper实例3
cp zk1.cfg zk3.cfg
dataDir=/usr/local/apps/zookeeper/data/zk3
dataLogDir=/usr/local/apps/zookeeper/log/zk3
clientPort=2183
#server.序号= (主机名, 心跳端口、数据端口)
server.1=192.168.2.10:1888:2888
server.2=192.168.2.10:3888:4888
server.3=192.168.2.10:5888:6888
5.创建上一步骤配置的目录所需要的文件夹
mkdir -p /usr/local/apps/zookeeper/data/zk1
mkdir -p /usr/local/apps/zookeeper/log/zk1
mkdir -p /usr/local/apps/zookeeper/data/zk2
mkdir -p /usr/local/apps/zookeeper/log/zk2
mkdir -p /usr/local/apps/zookeeper/data/zk3
mkdir -p /usr/local/apps/zookeeper/log/zk3
6.在对应的data文件夹下创建myid文件,并添加相应的内容
echo "1" > /usr/local/apps/zookeeper/data/zk1/myid
echo "2" > /usr/local/apps/zookeeper/data/zk2/myid
echo "3" > /usr/local/apps/zookeeper/data/zk3/myid
7.启动zookeeper集群
zkServer.sh start zk1.cfg
zkServer.sh start zk2.cfg
zkServer.sh start zk3.cfg
8.查看集群状态
zkServer.sh status zk1.cfg
zkServer.sh status zk2.cfg
zkServer.sh status zk3.cfg
9.测试结果如下
3.ZooKeeper命令行操作
1.访问客户端
zkCli.sh -server 192.168.2.10:2182
登录成功如下
2.使用help查看操作命令
3.创建节点,在根目录下创建servers节点,内容为ss1
create /servers ss1
4.查看节点
ls /
5.查看节点内容
get /servers
6.修改节点内容
set /servers ss2
7.删除节点,delete命令只能删除叶子节点(没有子节点的节点),rmr 命令可以删除非叶子节点
delete /servers
8.节点类型,主要有两种
(1)临时(ephemeral)(断开连接自己删除)
(2)持久(persistent)(断开连接不删除)
创建临时节点,退出客户端后再重新登录客户端查看,节点已被删除。
create -e /servers2 es1
创建持久节点,如果不加-e就是创建的持久节点点,客户端退出再次登录节点还在。
不能在临时节点下再创建任何类型的节点
9.节点内容监听,使用get path watch监听节点,当节点内容发生变化时就会收到节点变化的信息
客户端2183进行监听
get /servers watch
客户端2181 将/servers节点内容修改为ss3
set /servers ss3
客户端2183会显示如下信息
10.目录变化监听
客户端2183进行监听
ls /servers watch
客户端2181添加一个/servers/server1节点
create /servers/server1 cs1
客户端2183显示节点变化信息