0


zookeeper

zookeeper

zookeeper-ha

软件版本openEuler24.03jdk21.0.5zookeeper3.9.3主机名IP地址lihaozhe01192.168.10.101lihaozhe02192.168.10.102lihaozhe03192.168.10.103

1. 升级内核和软件

  1. yum -y update

2. 安装常用软件

  1. yum -y install gcc gcc-c++ autoconf automake cmake make\
  2. zlib zlib-devel openssl openssl-devel pcre-devel \rsync openssh-server vimmanzipunzip net-tools tcpdump lrzsz tarwget

3. 关闭防火墙

  1. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  2. setenforce 0
  3. systemctl stop firewalld
  4. systemctl disable firewalld

4. 修改主机名

lihaozhe01

  1. hostnamectl set-hostname lihaozhe01

saprk02

  1. hostnamectl set-hostname lihaozhe02

lihaozhe03

  1. hostnamectl set-hostname lihaozhe03

5. 修改IP地址

  1. vim /etc/sysconfig/network-scripts/ifcfg-ens160

参考如下:

  1. TYPE=Ethernet
  2. PROXY_METHOD=none
  3. BROWSER_ONLY=no
  4. BOOTPROTO=none
  5. DEFROUTE=yes
  6. IPV4_FAILURE_FATAL=no
  7. IPV6INIT=yes
  8. IPV6_AUTOCONF=yes
  9. IPV6_DEFROUTE=yes
  10. IPV6_FAILURE_FATAL=no
  11. IPV6_ADDR_GEN_MODE=eui64
  12. NAME=ens160
  13. UUID=1851e3d6-81c4-4af7-90b1-63482c79813c
  14. DEVICE=ens160
  15. ONBOOT=yes
  16. IPADDR=192.168.10.100
  17. PREFIX=24GATEWAY=192.168.10.2
  18. DNS1=192.168.10.2

6. 修改hosts配置文件

  1. vim /etc/hosts

修改内容如下:

  1. 192.168.10.101 lihaozhe01
  2. 192.168.10.102 lihaozhe02
  3. 192.168.10.103 lihaozhe03

7. 重启系统

  1. reboot

8. 下载安装JDK和Zookeeper并配置环境变量

在所有主机节点创建软件目录

  1. mkdir -p /opt/soft

以下操作在 lihaozhe01 主机上完成

进入软件目录

  1. cd /opt/soft

下载JDK

  1. wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz

下载 Zookeeper

  1. wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz

解压 JDK 修改名称

解压 zookeeper 修改名称

  1. tar -zxvf jdk-21_linux-x64_bin.tar.gz
  2. mv jdk-21.0.5 jdk-21
  3. tar -zxvf apache-zookeeper-3.9.3-bin.tar.gz
  4. mv apache-zookeeper-3.9.3-bin zookeeper-3

配置环境变量

  1. vim /etc/profile

追加以下内容:

  1. exportJava_HOME=/opt/soft/jdk-21
  2. exportZOOKEEPER_HOME=/opt/soft/zookeeper-3
  3. exportPATH=$PATH:$Java_HOME/bin:$ZOOKEEPER_HOME/bin

在各服务器上使环境变量生效

  1. source /etc/profile

验证环境变量

  1. printenv

10. 编辑配置文件

  1. rm -rf $ZOOKEEPER_HOME/docs
  1. cd$ZOOKEEPER_HOME/conf
  1. vim zoo.cfg

不要使用这个配置,这个配置仅仅是配置文件说明

  1. # 心跳单位,2stickTime=2000# zookeeper-3初始化的同步超时时间,10个心跳单位,也即20sinitLimit=10# 普通同步:发送一个请求并得到响应的超时时间,5个心跳单位也即10ssyncLimit=5# 内存快照数据的存储位置dataDir=/home/zookeeper-3/data
  2. # 事务日志的存储位置dataLogDir=/home/zookeeper-3/datalog
  3. # 当前zookeeper-3节点的端口 clientPort=2181# 单个客户端到集群中单个节点的并发连接数,通过ip判断是否同一个客户端,默认60maxClientCnxns=1000# 保留7个内存快照文件在dataDir中,默认保留3个
  4. autopurge.snapRetainCount=7# 清除快照的定时任务,默认1小时,如果设置为0,标识关闭清除任务
  5. autopurge.purgeInterval=1#允许客户端连接设置的最小超时时间,默认2个心跳单位minSessionTimeout=4000#允许客户端连接设置的最大超时时间,默认是20个心跳单位,也即40s,maxSessionTimeout=300000#zookeeper-3 3.5.5启动默认会把AdminService服务启动,这个服务默认是8080端口
  6. admin.serverPort=9001#集群地址配置
  7. server.1=lihaozhe01:2888:3888
  8. server.2=lihaozhe02:2888:3888
  9. server.3=lihaozhe03:2888:3888

使用这个配置

  1. tickTime=2000initLimit=10syncLimit=5dataDir=/home/zookeeper-3/data
  2. dataLogDir=/home/zookeeper-3/datalog
  3. clientPort=2181maxClientCnxns=1000
  4. autopurge.snapRetainCount=7
  5. autopurge.purgeInterval=1minSessionTimeout=4000maxSessionTimeout=300000
  6. admin.serverPort=9001
  7. server.1=lihaozhe01:2888:3888
  8. server.2=lihaozhe02:2888:3888
  9. server.3=lihaozhe03:2888:3888

11. 保存后根据配置文件创建目录

在每台服务器上执行

  1. mkdir -p /home/zookeeper-3/data
  2. mkdir -p /home/zookeeper-3/datalog

12. 编写zookeeper-3开机启动脚本

在/etc/systemd/system/文件夹下创建一个启动脚本zookeeper-3.service

注意:在每台服务器上编写

  1. cd /etc/systemd/system
  2. vim zookeeper.service

内容如下:

  1. [Unit]Description=zookeeper
  2. After=syslog.target network.target
  3. [Service]Type=forking
  4. Environment=ZOO_LOG_DIR=/home/zookeeper-3/datalog
  5. Environment=JAVA_HOME=/opt/soft/jdk-21
  6. ExecStart=/opt/soft/zookeeper-3/bin/zkServer.sh start
  7. ExecStop=/opt/soft/zookeeper-3/bin/zkServer.sh stop
  8. Restart=always
  9. User=root
  10. Group=root
  11. [Install]WantedBy=multi-user.target

服务启动步骤需要所有节点配置完成后执行,即以下步骤暂时

  1. systemctl daemon-reload
  2. # 等所有主机配置好后再执行以下命令
  3. systemctl start zookeeper
  4. systemctl enable zookeeper
  5. systemctl status zookeeper

13. 配置ssh免密钥登录

创建本地秘钥并将公共秘钥写入认证文件

  1. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  1. ssh-copy-id root@lihaozhe01
  1. ssh-copy-id root@lihaozhe02
  1. ssh-copy-id root@lihaozhe03
  1. ssh root@lihaozhe01
  2. exit
  1. ssh root@lihaozhe02
  2. exit
  1. ssh root@lihaozhe03
  2. exit

14. 分发软件和配置文件

分发 ssh 免密钥

  1. scp -r ~/.ssh root@lihaozhe02:~/
  2. scp -r ~/.ssh root@lihaozhe03:~/

分发 hosts 文件

  1. scp -r /etc/hosts root@lihaozhe02:/etc/
  2. scp -r /etc/hosts root@lihaozhe03:/etc/

分发软件

  1. scp -r /opt/soft/jdk-21 root@lihaozhe02:/opt/soft
  2. scp -r /opt/soft/zookeeper-3 root@lihaozhe02:/opt/soft
  3. scp -r /opt/soft/jdk-21 root@lihaozhe03:/opt/soft
  4. scp -r /opt/soft/zookeeper-3 root@lihaozhe03:/opt/soft

分发环境变量

  1. scp /etc/profile root@lihaozhe02:/etc
  2. scp /etc/profile root@lihaozhe03:/etc

分发开启启动脚本

  1. scp /etc/systemd/system/zookeeper.service root@lihaozhe02:/etc/systemd/system
  2. scp /etc/systemd/system/zookeeper.service root@lihaozhe03:/etc/systemd/system

在所有主机节点 使新的环境变量生效

  1. source /etc/profile

15. myid

lihaozhe01

  1. echo1> /home/zookeeper-3/data/myid
  2. more /home/zookeeper-3/data/myid

lihaozhe02

  1. echo2> /home/zookeeper-3/data/myid
  2. more /home/zookeeper-3/data/myid

lihaozhe03

  1. echo3> /home/zookeeper-3/data/myid
  2. more /home/zookeeper-3/data/myid

16. 启动服务

在各节点执行以下命令

  1. systemctl daemon-reload
  2. systemctl start zookeeper
  3. systemctl enable zookeeper
  4. systemctl status zookeeper

17. 验证

  1. jps
  1. zkServer.sh status

18. 修改 windows hosts文件

C:\Windows\System32\drivers\etc\hosts

使用管理员身份打开

  1. powershell

执行以下命令

  1. cd drivers/etc
  2. attrib -r hosts
  3. start hosts

hosts 文件追加以下内容:

  1. 192.168.10.101 lihaozhe01
  2. 192.168.10.102 lihaozhe02
  3. 192.168.10.103 lihaozhe03

powershell
hosts

19. 浏览器访问 AdminServer

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

zookeeper AdminServer

zookeeper shell

zookeeper 存储结构类似于Linux文件系统 使用根结构

node 不是文件也不是目录

客户端命令行

  1. # 连接本地服务
  2. zkCli.sh
  3. # 连接其他节点
  4. zkCli.sh -server spark02:2181
  5. # 这里并不是连接了三个节点,而是按照顺序连接一个,当第一个连接无法获取时,就连接第二个
  6. zkCli.sh -server spark01:2181,spark02:2181,spark03:2181

查看帮助

  1. help
  2. ZooKeeper -server host:port -client-configuration properties-file cmd args
  3. addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
  4. addauth scheme auth
  5. close
  6. config [-c][-w][-s]
  7. connect host:port
  8. create [-s][-e][-c][-t ttl] path [data][acl]
  9. delete [-v version] path
  10. deleteall path [-b batch size]
  11. delquota [-n|-b|-N|-B] path
  12. get [-s][-w] path
  13. getAcl [-s] path
  14. getAllChildrenNumber path
  15. getEphemerals path
  16. history
  17. listquota path
  18. ls[-s][-w][-R] path
  19. printwatches on|off
  20. quit
  21. reconfig [-s][-v version][[-file path]|[-members serverID=host:port1:port2;port3[,...]*]]|[-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
  22. redo cmdno
  23. removewatches path [-c|-d|-a][-l]set[-s][-v version] path data
  24. setAcl [-s][-v version][-R] path acl
  25. setquota -n|-b|-N|-B val path
  26. stat[-w] path
  27. sync path
  28. version
  29. whoami

连接其他节点

  1. # 在某节点连接其他节点
  2. connect spark01:2181

退出

  1. quit

查看节点

  1. ls /
  2. ls -s /
  1. cZxid = 0x0 # 节点创建的时候的zxid
  2. ctime = Thu Jan 01 08:00:00 CST 1970# 节点创建的时候的zxid
  3. mZxid = 0x0 #节点修改的时候的zxid,与子节点的修改无关
  4. mtime = Thu Jan 01 08:00:00 CST 1970# 节点修改的时间
  5. pZxid = 0x0 # 子节点的创建/删除对应的 zxid,和修改无关,和孙子节点无关
  6. cversion = -1 # 子节点的更新次数
  7. dataVersion =0# 节点数据的更新次数
  8. aclVersion =0# 节点(ACL)的更新次数
  9. ephemeralOwner = 0x0 # 值表示与该节点绑定的 session id. 如果该节点不是 ephemeral 节点, ephemeralOwner 值为0
  10. dataLength =0# 节点数据的字节数
  11. numChildren =1# 节点数据的字节数

创建节点

持久

临时

有序号

无序号

  1. # 持久无序号# 节点lihaozhe存储的数据是 李昊哲
  2. create /lihaozhe "李昊哲"# 节点lihaozhe存储的数据是 空
  3. create /lihaozhe ""# 查看该节点中的文件或目录,[]代表其中没有文件或子目录[zk: localhost:2181(CONNECTED)7]ls /lihaozhe
  4. []# 创建持久无序号子节点
  5. create /lihaozhe/zk01
  6. # 创建持久有序号子节点
  7. create -s /lihaozhe/zk01
  8. # 创建临时无序号节点
  9. create -e /lihaozhe/zk10
  10. # 创建临时有序号节点
  11. create -e -s /lihaozhe/zk10

删除节点

  1. delete /lihaozhe/zk04
  2. delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
  3. deleteall /lihaozhe

获取节点数据

  1. get /lihaozhe

设置节点数据

  1. set /lihaozhe "李大宝"

关闭当前session

  1. close

监听

  1. # NodeChildrenChangedls -w /lihaozhe
  2. # NodeDataChangedstat -w /lihaozhe
  3. #

localhost:2181(CONNECTED) 7] ls /lihaozhe
[]

创建持久无序号子节点

create /lihaozhe/zk01

创建持久有序号子节点

create -s /lihaozhe/zk01

创建临时无序号节点

create -e /lihaozhe/zk10

创建临时有序号节点

create -e -s /lihaozhe/zk10

  1. ### 删除节点
  2. ```bash
  3. delete /lihaozhe/zk04
  4. delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
  5. deleteall /lihaozhe

获取节点数据

  1. get /lihaozhe

设置节点数据

  1. set /lihaozhe "李大宝"

关闭当前session

  1. close

监听

  1. # NodeChildrenChangedls -w /lihaozhe
  2. # NodeDataChangedstat -w /lihaozhe
  3. #

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

“zookeeper”的评论:

还没有评论