0


zookeeper

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

powershell
hosts

19. 浏览器访问 AdminServer

浏览器访问:http://lihaozhe03:9001/commands

zookeeper 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
# 

本文转载自: https://blog.csdn.net/qq_24330181/article/details/143400677
版权归原作者 李昊哲小课 所有, 如有侵权,请联系我们删除。

“zookeeper”的评论:

还没有评论