8. Zookeeper

Zookeeper

# 部署zookeeper集群
# 下载并解压:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
tar -zxvf apache-zookeeper-3.9.2-bin.tar.gz -C /usr/local/src/
ln -s /usr/local/src/apache-zookeeper-3.9.2-bin /usr/local/zookeeper

# 配置zookeeper集群
# 添加环境变量
vim /etc/profile
# 在/etc/profile文件底部追加如下内容
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

# 创建数据存储目录
mkdir /usr/local/zookeeper/{data,log} -p
# 复制默认配置文件
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
# 编辑配置文件
vim /usr/local/zookeeper/conf/zoo.cfg
# 填入如下内容
tickTime=2000  # 心跳间隔
initLimit=10  # 初始化连接时间
syncLimit=5  # 同步时间
# 数据存储目录
dataDir=/usr/local/zookeeper/data
# 日志存储目录
dataLogDir=/usr/local/zookeeper/log
clientPort=2181  # 客户端连接端口

# zookeeper 集群节点配置节点通信端口与选举端口
server.1=kube-40:2888:3888
server.2=kube-41:2888:3888
server.3=kube-42:2888:3888

# 创建myid文件
echo 1 > /usr/local/zookeeper/data/myid

# 目录授权
chown -R hadoop:hadoop /usr/local/zookeeper
chown -R hadoop:hadoop /usr/local/src/apache-zookeeper-3.9.2-bin

# 分发zookeeper文件到其他节点使用rsync命令
rsync -avzl /usr/local/src/apache-zookeeper-3.9.2-bin root@kube-41:/usr/local/src
rsync -avzl /usr/local/src/apache-zookeeper-3.9.2-bin root@kube-42:/usr/local/src

# 在其他节点上创建软连接
ln -s /usr/local/src/apache-zookeeper-3.9.2-bin /usr/local/zookeeper

# 在其他节点上创建myid文件
# kube-41节点
echo 2 > /usr/local/zookeeper/data/myid
# kube-42节点
echo 3 > /usr/local/zookeeper/data/myid

# 在其他节点上授权
chown -R hadoop:hadoop /usr/local/zookeeper
chown -R hadoop:hadoop /usr/local/src/apache-zookeeper-3.9.2-bin

# 切换到hadoop用户
su - hadoop

# 启动zookeeper集群,分别在所有节点上执行
zkServer.sh start
# 查看zookeeper集群状态
zkServer.sh status

# zookeeper 常用操作命令
zkServer.sh start  # 启动zookeeper
zkServer.sh stop  # 停止zookeeper
zkServer.sh restart  # 重启zookeeper
zkServer.sh status  # 查看zookeeper状态
zkCli.sh  # 进入zookeeper客户端,连接本机
zkCli.sh -server kube-42:2181  # 连接指定服务器

# zookeeper客户端常用命令
help  #显示所有操作命令
ls /  # 查看根目录下的节点
ls / watch  # 监听路径变化
ls2  # 查看当前节点数据并能看到更新次数等数据
create /test "hello"  # 创建节点
create -e  # 创建临时短暂节点
create -s  # 创建顺序带序号的节点
create -es  # 创建临时顺序的节点
get /test  # 获取节点数据
get / watch  # 监听节点的值
set /test "world"  # 修改节点数据
delete /test  # 删除节点
stat -w /  # 查看节点状态
deleteall path  # 递归删除节点
quit  # 退出zookeeper客户端

# 集群启停脚本
vim zk.sh
#!/bin/bash
case $1 in
"start"){
    for i in kube-40 kube-41 kube-42
    do
        echo  ------------- zookeeper $i 启动 ------------
        ssh $i "/usr/local/zookeeper/bin/zkServer.sh start"
    done
}
;;
"stop"){
    for i in kube-40 kube-41 kube-42
    do
        echo  ------------- zookeeper $i 停止 ------------
        ssh $i "/usr/local/zookeeper/bin/zkServer.sh stop"
    done
}
;;
"status"){
    for i in kube-40 kube-41 kube-42
    do
        echo  ------------- zookeeper $i 状态 ------------
        ssh $i "/usr/local/zookeeper/bin/zkServer.sh status"
    done
}
;;
esac

chmod +x zk.sh
./zk.sh start
./zk.sh stop
./zk.sh status

vim jps.sh
#!/bin/bash
for host in kube-40 kube-41 kube-42
do
        echo =============== $host ===============
        ssh $host jps 
done