zookeeper
zookeeper-ha
软件版本openEuler24.03jdk21.0.5zookeeper3.9.3主机名IP地址lihaozhe01192.168.10.101lihaozhe02192.168.10.102lihaozhe03192.168.10.103
1. 升级内核和软件
yum -y update
2. 安装常用软件
yum -y install gcc gcc-c++ autoconf automake cmake make\
zlib zlib-devel openssl openssl-devel pcre-devel \rsync openssh-server vimmanzipunzip net-tools tcpdump lrzsz tarwget
3. 关闭防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
4. 修改主机名
lihaozhe01
hostnamectl set-hostname lihaozhe01
saprk02
hostnamectl set-hostname lihaozhe02
lihaozhe03
hostnamectl set-hostname lihaozhe03
5. 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens160
参考如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens160
UUID=1851e3d6-81c4-4af7-90b1-63482c79813c
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.10.100
PREFIX=24GATEWAY=192.168.10.2
DNS1=192.168.10.2
6. 修改hosts配置文件
vim /etc/hosts
修改内容如下:
192.168.10.101 lihaozhe01
192.168.10.102 lihaozhe02
192.168.10.103 lihaozhe03
7. 重启系统
reboot
8. 下载安装JDK和Zookeeper并配置环境变量
在所有主机节点创建软件目录
mkdir -p /opt/soft
以下操作在 lihaozhe01 主机上完成
进入软件目录
cd /opt/soft
下载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-21_linux-x64_bin.tar.gz
mv jdk-21.0.5 jdk-21
tar -zxvf apache-zookeeper-3.9.3-bin.tar.gz
mv apache-zookeeper-3.9.3-bin zookeeper-3
配置环境变量
vim /etc/profile
追加以下内容:
exportJava_HOME=/opt/soft/jdk-21
exportZOOKEEPER_HOME=/opt/soft/zookeeper-3
exportPATH=$PATH:$Java_HOME/bin:$ZOOKEEPER_HOME/bin
在各服务器上使环境变量生效
source /etc/profile
验证环境变量
printenv
10. 编辑配置文件
rm -rf $ZOOKEEPER_HOME/docs
cd$ZOOKEEPER_HOME/conf
vim zoo.cfg
不要使用这个配置,这个配置仅仅是配置文件说明
# 心跳单位,2stickTime=2000# zookeeper-3初始化的同步超时时间,10个心跳单位,也即20sinitLimit=10# 普通同步:发送一个请求并得到响应的超时时间,5个心跳单位也即10ssyncLimit=5# 内存快照数据的存储位置dataDir=/home/zookeeper-3/data
# 事务日志的存储位置dataLogDir=/home/zookeeper-3/datalog
# 当前zookeeper-3节点的端口 clientPort=2181# 单个客户端到集群中单个节点的并发连接数,通过ip判断是否同一个客户端,默认60maxClientCnxns=1000# 保留7个内存快照文件在dataDir中,默认保留3个
autopurge.snapRetainCount=7# 清除快照的定时任务,默认1小时,如果设置为0,标识关闭清除任务
autopurge.purgeInterval=1#允许客户端连接设置的最小超时时间,默认2个心跳单位minSessionTimeout=4000#允许客户端连接设置的最大超时时间,默认是20个心跳单位,也即40s,maxSessionTimeout=300000#zookeeper-3 3.5.5启动默认会把AdminService服务启动,这个服务默认是8080端口
admin.serverPort=9001#集群地址配置
server.1=lihaozhe01:2888:3888
server.2=lihaozhe02:2888:3888
server.3=lihaozhe03:2888:3888
使用这个配置
tickTime=2000initLimit=10syncLimit=5dataDir=/home/zookeeper-3/data
dataLogDir=/home/zookeeper-3/datalog
clientPort=2181maxClientCnxns=1000
autopurge.snapRetainCount=7
autopurge.purgeInterval=1minSessionTimeout=4000maxSessionTimeout=300000
admin.serverPort=9001
server.1=lihaozhe01:2888:3888
server.2=lihaozhe02:2888:3888
server.3=lihaozhe03:2888:3888
11. 保存后根据配置文件创建目录
在每台服务器上执行
mkdir -p /home/zookeeper-3/data
mkdir -p /home/zookeeper-3/datalog
12. 编写zookeeper-3开机启动脚本
在/etc/systemd/system/文件夹下创建一个启动脚本zookeeper-3.service
注意:在每台服务器上编写
cd /etc/systemd/system
vim zookeeper.service
内容如下:
[Unit]Description=zookeeper
After=syslog.target network.target
[Service]Type=forking
Environment=ZOO_LOG_DIR=/home/zookeeper-3/datalog
Environment=JAVA_HOME=/opt/soft/jdk-21
ExecStart=/opt/soft/zookeeper-3/bin/zkServer.sh start
ExecStop=/opt/soft/zookeeper-3/bin/zkServer.sh stop
Restart=always
User=root
Group=root
[Install]WantedBy=multi-user.target
服务启动步骤需要所有节点配置完成后执行,即以下步骤暂时
systemctl daemon-reload
# 等所有主机配置好后再执行以下命令
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper
13. 配置ssh免密钥登录
创建本地秘钥并将公共秘钥写入认证文件
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id root@lihaozhe01
ssh-copy-id root@lihaozhe02
ssh-copy-id root@lihaozhe03
ssh root@lihaozhe01
exit
ssh root@lihaozhe02
exit
ssh root@lihaozhe03
exit
14. 分发软件和配置文件
分发 ssh 免密钥
scp -r ~/.ssh root@lihaozhe02:~/
scp -r ~/.ssh root@lihaozhe03:~/
分发 hosts 文件
scp -r /etc/hosts root@lihaozhe02:/etc/
scp -r /etc/hosts root@lihaozhe03:/etc/
分发软件
scp -r /opt/soft/jdk-21 root@lihaozhe02:/opt/soft
scp -r /opt/soft/zookeeper-3 root@lihaozhe02:/opt/soft
scp -r /opt/soft/jdk-21 root@lihaozhe03:/opt/soft
scp -r /opt/soft/zookeeper-3 root@lihaozhe03:/opt/soft
分发环境变量
scp /etc/profile root@lihaozhe02:/etc
scp /etc/profile root@lihaozhe03:/etc
分发开启启动脚本
scp /etc/systemd/system/zookeeper.service root@lihaozhe02:/etc/systemd/system
scp /etc/systemd/system/zookeeper.service root@lihaozhe03:/etc/systemd/system
在所有主机节点 使新的环境变量生效
source /etc/profile
15. myid
lihaozhe01
echo1> /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid
lihaozhe02
echo2> /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid
lihaozhe03
echo3> /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid
16. 启动服务
在各节点执行以下命令
systemctl daemon-reload
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper
17. 验证
jps
zkServer.sh status
18. 修改 windows hosts文件
C:\Windows\System32\drivers\etc\hosts
使用管理员身份打开
powershell
执行以下命令
cd drivers/etc
attrib -r hosts
start hosts
hosts 文件追加以下内容:
192.168.10.101 lihaozhe01
192.168.10.102 lihaozhe02
192.168.10.103 lihaozhe03
19. 浏览器访问 AdminServer
zookeeper shell
zookeeper 存储结构类似于Linux文件系统 使用根结构
node 不是文件也不是目录
客户端命令行
# 连接本地服务
zkCli.sh
# 连接其他节点
zkCli.sh -server spark02:2181
# 这里并不是连接了三个节点,而是按照顺序连接一个,当第一个连接无法获取时,就连接第二个
zkCli.sh -server spark01:2181,spark02:2181,spark03: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 spark01: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
监听
# NodeChildrenChangedls -w /lihaozhe
# NodeDataChangedstat -w /lihaozhe
#
localhost:2181(CONNECTED) 7] ls /lihaozhe
[]
创建持久无序号子节点
create /lihaozhe/zk01
创建持久有序号子节点
create -s /lihaozhe/zk01
创建临时无序号节点
create -e /lihaozhe/zk10
创建临时有序号节点
create -e -s /lihaozhe/zk10
### 删除节点
```bash
delete /lihaozhe/zk04
delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
deleteall /lihaozhe
获取节点数据
get /lihaozhe
设置节点数据
set /lihaozhe "李大宝"
关闭当前session
close
监听
# NodeChildrenChangedls -w /lihaozhe
# NodeDataChangedstat -w /lihaozhe
#
版权归原作者 李昊哲小课 所有, 如有侵权,请联系我们删除。