deepin 安装 zookeeper
deepin 安装 zookeeper
1、升级软件
sudo apt update
sudo apt -y dist-upgrade
2、安装常用软件
sudo apt -y install gcc make openssl libssl-dev libpcre3 libpcre3-dev libgd-dev \
rsync openssh-server vim man zip unzip net-tools tcpdump lrzsz tar wget
3、开启ssh
sudo vim /etc/ssh/ssh_config
追加以下内容
Port 22
重启ssh服务
sudo systemctl restart ssh
4、修改主机名
sudo hostnamectl set-hostname lihaozhe
5、修改hosts配置文件
vim /etc/hosts
修改内容如下:
192.168.10.10 lihaozhe
重启系统
sudo reboot
6. 配置ssh免密钥登录
创建本地秘钥并将公共秘钥写入认证文件
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id lhz@lihaozhe
7. 下载安装JDK和Zookeeper并配置环境变量
在所有主机节点创建软件目录
mkdir -p /home/lhz/opt
以下操作在 lihaozhe01 主机上完成
进入软件目录
cd /home/lhz/opt
下载JDK
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
下载 Zookeeper
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz
解压 JDK 修改名称
解压 zookeeper 修改名称
tar -zxvf jdk-8u421-linux-x64.tar.gz
tar -zxvf jdk-21_linux-x64_bin.tar.gz
tar -zxvf apache-zookeeper-3.9.3-bin.tar.gz
mv jdk1.8.0_421 jdk-8
mv jdk-21.0.5 jdk-21
mv apache-zookeeper-3.9.3-bin zookeeper-3
配置环境变量
vim /home/lhz/.bashrc
追加以下内容:
export Java_HOME=/opt/soft/jdk-8
export M2_HOME=/home/lhz/opt/maven
export ZOOKEEPER_HOME=/home/lhz/opt/zookeeper-3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$ZOOKEEPER_HOME/bin
验证环境变量
printenv
10. 编辑配置文件
rm -rf $ZOOKEEPER_HOME/docs
cd $ZOOKEEPER_HOME/conf
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/lhz/data/zookeeper/data
dataLogDir=/home/lhz/data/zookeeper/datalog
clientPort=2181
maxClientCnxns=1000
autopurge.snapRetainCount=7
autopurge.purgeInterval=1
minSessionTimeout=4000
maxSessionTimeout=40000
admin.serverPort=9001
11. 保存后根据配置文件创建目录
mkdir -p /home/lhz/data/zookeeper/data
mkdir -p /home/lhz/data/zookeeper/datalog
12. 编写zookeeper-3开机启动脚本
在/etc/systemd/system/文件夹下创建一个启动脚本zookeeper-3.service
注意:在每台服务器上编写
cd /etc/systemd/system
sudo vim zookeeper.service
内容如下:
[Unit]
Description=zookeeper
After=syslog.target network.target
[Service]
Type=forking
Environment=ZOO_LOG_DIR=/home/lhz/data/zookeeper/datalog
Environment=JAVA_HOME=/home/lhz/opt/jdk-21
ExecStart=/home/lhz/opt/zookeeper-3/bin/zkServer.sh start
ExecStop=/home/lhz/opt/zookeeper-3/bin/zkServer.sh stop
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
13. 启动服务
systemctl daemon-reload
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper
14. 验证
jps
zkServer.sh status
15. 浏览器访问 AdminServer
浏览器访问:http://lihaozhe:9001/commands
zookeeper shell
zookeeper 存储结构类似于Linux文件系统 使用根结构
node 不是文件也不是目录
客户端命令行
# 连接本地服务
zkCli.sh
# 连接其他节点
zkCli.sh -server lihaozhe:2181
查看帮助
help
ZooKeeper -server host:port -client-configuration properties-file cmd args
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
addauth scheme auth
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path [-b batch size]
delquota [-n|-b|-N|-B] path
get [-s] [-w] path
getAcl [-s] path
getAllChildrenNumber path
getEphemerals path
history
listquota path
ls [-s] [-w] [-R] path
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b|-N|-B val path
stat [-w] path
sync path
version
whoami
连接其他节点
# 在某节点连接其他节点
connect lihaozhe01:2181
退出
quit
查看节点
ls /
ls -s /
cZxid = 0x0 # 节点创建的时候的zxid
ctime = Thu Jan 01 08:00:00 CST 1970 # 节点创建的时候的zxid
mZxid = 0x0 #节点修改的时候的zxid,与子节点的修改无关
mtime = Thu Jan 01 08:00:00 CST 1970 # 节点修改的时间
pZxid = 0x0 # 子节点的创建/删除对应的 zxid,和修改无关,和孙子节点无关
cversion = -1 # 子节点的更新次数
dataVersion = 0 # 节点数据的更新次数
aclVersion = 0 # 节点(ACL)的更新次数
ephemeralOwner = 0x0 # 值表示与该节点绑定的 session id. 如果该节点不是 ephemeral 节点, ephemeralOwner 值为0
dataLength = 0 # 节点数据的字节数
numChildren = 1 # 节点数据的字节数
创建节点
持久
临时
有序号
无序号
# 持久无序号
# 节点lihaozhe存储的数据是 李昊哲
create /lihaozhe "李昊哲"
# 节点lihaozhe存储的数据是 空
create /lihaozhe ""
# 查看该节点中的文件或目录,[]代表其中没有文件或子目录
[zk: localhost:2181(CONNECTED) 7] ls /lihaozhe
[]
# 创建持久无序号子节点
create /lihaozhe/zk01
# 创建持久有序号子节点
create -s /lihaozhe/zk01
# 创建临时无序号节点
create -e /lihaozhe/zk10
# 创建临时有序号节点
create -e -s /lihaozhe/zk10
删除节点
delete /lihaozhe/zk04
delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
deleteall /lihaozhe
获取节点数据
get /lihaozhe
设置节点数据
set /lihaozhe "李大宝"
关闭当前session
close
监听
# NodeChildrenChanged
ls -w /lihaozhe
# NodeDataChanged
stat -w /lihaozhe
#
0
### 删除节点
```bash
delete /lihaozhe/zk04
delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
deleteall /lihaozhe
获取节点数据
get /lihaozhe
设置节点数据
set /lihaozhe "李大宝"
关闭当前session
close
监听
# NodeChildrenChanged
ls -w /lihaozhe
# NodeDataChanged
stat -w /lihaozhe
#