zookeeper 集群搭建
准备环境修改hostname
# 永久修改hostname[root@bogon java]# hostnamectl set-hostname server-247
[root@bogon java]#
[root@bogon java]# hostname
server-247
[root@bogon java]#
1部署Java环境
因为部署zookeeper需要java环境,所以需要从Oracle官网https://www.oracle.com/cn/java/technologies/downloads/#java11下载jdk安装部署,我下载版本是java11版本,下载版本截图如下:

具体部署脚本如下:
# 新建java目录
mkdir /usr/java
# 切换到安装包目录
cd /root/zookeeper
# 解压jdk二进制安装包到java目录下
tar zxvf jdk-11.0.18_linux-x64_bin.tar.gz -C /usr/java
# 删除java文件夹
rm -rf /usr/java/jdk1.8.0_351
# 分发java目录到77和76服务器对应目录上
scp -r /usr/java/jdk-11.0.18 root@192.168.2.77:/usr/java/jdk-11.0.18
scp -r /usr/java/jdk-11.0.18 root@192.168.2.76:/usr/java/jdk-11.0.18
# 247 环境
# 解压到指定路径
tar zxvf jdk-11.0.18_linux-x64_bin.tar.gz -C /usr/java#将解压后java 分发到76,77 服务器指定路径下scp -r /usr/java/jdk-11.0.18 root@192.168.2.77:/usr/java/jdk-11.0.18
scp -r /usr/java/jdk-11.0.18 root@192.168.2.76:/usr/java/jdk-11.0.18
配置环境变量
vim /etc/profile
用vim编辑器来编辑profile文件,在文件末尾添加一下内容:
#java环境变量添加# 编辑profile文件配置java环境变量
vi /etc/profile
# 配置java环境变量
#config jdk11-0-18
#config jdk11-0-18
export JAVA_HOME=/usr/java/jdk-11.0.18
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${JAVA_HOME}/bin:$PATH
# 保存退出
:wq
# vi /etc/profile#config jdk11-0-18#config jdk11-0-18
export JAVA_HOME=/usr/java/jdk-11.0.18
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${JAVA_HOME}/bin:$PATH#config zookeeper EVN# 刷新profile文件使其java环境变量生效
[root@localhost java]#
[root@localhost java]# source /etc/profile
[root@localhost java]## 测试JDK安装是否成功
# java -version 出现安装版本信息[root@localhost java]# java -version
java version "11.0.18" 2023-01-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.18+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.18+9-LTS-195, mixed mode)
[root@localhost java]#
配置76,77 环境的jdk,步骤同 248,247
# vi /etc/profile
# 将以下参数添加到 /etc/profile#config jdk11-0-18
export JAVA_HOME=/usr/java/jdk-11.0.18
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${JAVA_HOME}/bin:$PATH#config zookeeper EVN
export ZOOKEEPER_HOME=/root/zookeeper/apache-zookeeper-3.7.1-bin# config PATH ENV
export PATH=$PATH:${JAVA_PATH}:${ZOOKEEPER_HOME}/bin# 刷新
# source /etc/profile# 验证java
[root@server-76 java]# java -version
java version "11.0.18" 2023-01-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.18+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.18+9-LTS-195, mixed mode)
[root@server-76 java]#
下载安装Zookeeper
下载zookeeper
解压到指定路径下
# 官网下载zookeeper
# 新建 /home/Tools 目录,将下载zookeeper 上传至 此路径#创建 安装目录[root@localhost Tools]# mkdir /root/zookeeper# 解压到指定目录 (# 解压zookeeper安装包到其目录下)
[root@localhost java]# cd /home/Tools/
[root@localhost Tools]# ls
apache-zookeeper-3.7.1-bin.tar.gz jdk-11.0.18_linux-x64_bin.tar.gz
[root@localhost Tools]# ll
total 177716
-rw-r--r--. 1 root root 12649765 Apr 3 15:44 apache-zookeeper-3.7.1-bin.tar.gz
-rw-r--r--. 1 root root 169328243 Apr 3 15:22 jdk-11.0.18_linux-x64_bin.tar.gz
[root@localhost Tools]#
[root@localhost Tools]#
[root@localhost Tools]# tar zvxf apache-zookeeper-3.7.1-bin.tar.gz -C /root/zookeeper
apache-zookeeper-3.7.1-bin/docs/
apache-zookeeper-3.7.1-bin/docs/skin/
....# 查看/root/zookeeper
[root@server-248 zookeeper]# pwd
/root/zookeeper
[root@server-248 zookeeper]#
[root@server-248 zookeeper]# ll
total 0
drwxr-xr-x. 6 root root 133 Apr 3 16:19 apache-zookeeper-3.7.1-bin
[root@server-248 zookeeper]#
配置环境变量
# vi /etc/profile
# 最后一行添加#config zookeeper EVN
export ZOOKEEPER_HOME=/root/zookeeper/apache-zookeeper-3.7.1-bin# config PATH ENV
export PATH=$PATH:${JAVA_PATH}:${ZOOKEEPER_HOME}/bin# :wq! 保存# 刷新 /etc/profile
[root@server-248 zookeeper]# source /etc/profile
# 用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中
mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
# 创建zookeeper数据目录
mkdir $ZOOKEEPER_HOME/data
# 创建zookeeper日志目录
mkdir $ZOOKEEPER_HOME/logs
# 用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中
# mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg[root@server-248 conf]# pwd
/root/zookeeper/apache-zookeeper-3.7.1-bin/conf
[root@server-248 conf]#[root@server-248 conf]# ll
total 12
-rw-r--r--. 1 yusur yusur 535 May 7 2022 configuration.xsl
-rw-r--r--. 1 yusur yusur 3435 May 7 2022 log4j.properties
-rw-r--r--. 1 yusur yusur 1148 May 7 2022 zoo_sample.cfg # 将此文件重命名为zoo.cfg
[root@server-248 conf]#
[root@server-248 conf]#
[root@server-248 conf]# mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
[root@server-248 conf]#
[root@server-248 conf]# ll
total 12
-rw-r--r--. 1 yusur yusur 535 May 7 2022 configuration.xsl
-rw-r--r--. 1 yusur yusur 3435 May 7 2022 log4j.properties
-rw-r--r--. 1 yusur yusur 1148 May 7 2022 zoo.cfg # 将此文件重命名为zoo.cfg
[root@server-248 conf]#
# 创建zookeeper数据目录
# mkdir $ZOOKEEPER_HOME/data
[root@server-248 apache-zookeeper-3.7.1-bin]# ll
total 36
drwxr-xr-x. 2 yusur yusur 4096 May 7 2022 bin
drwxr-xr-x. 2 yusur yusur 70 Apr 3 16:36 conf
drwxr-xr-x. 5 yusur yusur 4096 May 7 2022 docs
drwxr-xr-x. 2 root root 4096 Apr 3 16:19 lib
-rw-r--r--. 1 yusur yusur 11358 May 7 2022 LICENSE.txt
-rw-r--r--. 1 yusur yusur 2084 May 7 2022 NOTICE.txt
-rw-r--r--. 1 yusur yusur 2214 May 7 2022 README.md
-rw-r--r--. 1 yusur yusur 3570 May 7 2022 README_packaging.md
[root@server-248 apache-zookeeper-3.7.1-bin]#
[root@server-248 apache-zookeeper-3.7.1-bin]# mkdir $ZOOKEEPER_HOME/data
[root@server-248 apache-zookeeper-3.7.1-bin]#
[root@server-248 apache-zookeeper-3.7.1-bin]# ll
total 36
drwxr-xr-x. 2 yusur yusur 4096 May 7 2022 bin
drwxr-xr-x. 2 yusur yusur 70 Apr 3 16:36 conf
drwxr-xr-x. 2 root root 6 Apr 3 16:39 data # 已创建
drwxr-xr-x. 5 yusur yusur 4096 May 7 2022 docs
drwxr-xr-x. 2 root root 4096 Apr 3 16:19 lib
-rw-r--r--. 1 yusur yusur 11358 May 7 2022 LICENSE.txt
-rw-r--r--. 1 yusur yusur 2084 May 7 2022 NOTICE.txt
-rw-r--r--. 1 yusur yusur 2214 May 7 2022 README.md
-rw-r--r--. 1 yusur yusur 3570 May 7 2022 README_packaging.md
[root@server-248 apache-zookeeper-3.7.1-bin]#[root@server-248 apache-zookeeper-3.7.1-bin]# mkdir $ZOOKEEPER_HOME/logs
[root@server-248 apache-zookeeper-3.7.1-bin]#
[root@server-248 apache-zookeeper-3.7.1-bin]# ll
total 36
drwxr-xr-x. 2 yusur yusur 4096 May 7 2022 bin
drwxr-xr-x. 2 yusur yusur 70 Apr 3 16:36 conf
drwxr-xr-x. 2 root root 6 Apr 3 16:39 data
drwxr-xr-x. 5 yusur yusur 4096 May 7 2022 docs
drwxr-xr-x. 2 root root 4096 Apr 3 16:19 lib
-rw-r--r--. 1 yusur yusur 11358 May 7 2022 LICENSE.txt
drwxr-xr-x. 2 root root 6 Apr 3 16:39 logs # 已创建
-rw-r--r--. 1 yusur yusur 2084 May 7 2022 NOTICE.txt
-rw-r--r--. 1 yusur yusur 2214 May 7 2022 README.md
-rw-r--r--. 1 yusur yusur 3570 May 7 2022 README_packaging.md
[root@server-248 apache-zookeeper-3.7.1-bin]#
# 编辑zookeeper配置文件
vi $ZOOKEEPER_HOME/conf/zoo.cfg
# 插入
i
{
# 配置zookeeper数据目录
dataDir=/root/zookeeper/apache-zookeeper-3.7.1-bin/data
# 配置zookeeper日志目录
dataLogDir=/root/zookeeper/apache-zookeeper-3.7.1-bin/logs
# 配置zookeeper集群,如果是阿里云服务器,当前节点要配置成0.0.0.0:2888:3888
server.1=192.168.2.248:2888:3888
server.2=192.168.2.77:2888:3888
server.3=192.168.2.76:2888:3888
}
# 修改 zoo.cfg 配置文件# Leader-Follower 初始通信时限 tickTime*5
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement# Leader-Follower 同步通信时限 tickTime*5
syncLimit=5# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# dataDir=/tmp/zookeeper#修改为自定义的zookeeper数据目录
dataDir=/root/zookeeper/apache-zookeeper-3.7.1-bin/data#修改为自定义的zookeeper日志目录
dataLogDir=/root/zookeeper/apache-zookeeper-3.7.1-bin/logs# the port at which the clients will connect
clientPort=2181
server.1=192.168.2.248:2888:3888
server.2=20.1.1.77:2888:3888
server.3=20.1.1.76:2888:3888
server.4=20.1.1.1:2888:3888
# 编辑myid文件,设置zookeeper集群ID,注意集群ID不能重复,集群节点可以依次1、2、3如此类推设置
vi $ZOOKEEPER_HOME/data/myid
# vi /root/zookeeper/apache-zookeeper-3.7.1-bin/data/myid
# 插入1[root@server-248 data]# pwd
/root/zookeeper/apache-zookeeper-3.7.1-bin/data
[root@server-248 data]# vi myid
1
:wq!# 查看
[root@server-248 data]# cat myid
1
[root@server-248 data]#
# 分发zookeeper目录到76,77,247服务器对应目录上
scp -r /root/zookeeper/apache-zookeeper-3.7.1-bin root@192.168.2.76:/root/zookeeper/apache-zookeeper-3.7.1-bin
scp -r /root/zookeeper/apache-zookeeper-3.7.1-bin root@192.168.2.77:/root/zookeeper/apache-zookeeper-3.7.1-bin
# 分发zookeeper 到 76,77 server
# 248 环境
[root@localhost zookeeper]# scp -r /root/zookeeper/apache-zookeeper-3.7.1-bin root@192.168.2.77:/root/zookeeper/apache-zookeeper-3.7.1-bin#输入77 root 密码[root@localhost zookeeper]# scp -r /root/zookeeper/apache-zookeeper-3.7.1-bin root@192.168.2.76:/root/zookeeper/apache-zookeeper-3.7.1-bin#输入76 root 密码#输入247 root 密码[root@localhost zookeeper]# scp -r /root/zookeeper/apache-zookeeper-3.7.1-bin root@192.168.2.247:/root/zookeeper/apache-zookeeper-3.7.1-bin#输入247 root 密码
根据zookeeper conf文件下的zoo.cfg 文件中的配置修改 /data/myid value
根据 /root/zookeeper/apache-zookeeper-3.7.1-bin/conf/zoo.cfg 中
# the port at which the clients will connect
clientPort=2181
server.1=192.168.2.248:2888:3888
server.2=20.1.1.77:2888:3888
server.3=20.1.1.76:2888:3888server.4=20.1.1.1:2888:3888
修改77 myid 为2;
修改76 myid 为3
修改247 myid 为4
# 77 server[root@server-77 data]# pwd
/root/zookeeper/apache-zookeeper-3.7.1-bin/apache-zookeeper-3.7.1-bin/data
[root@server-77 data]#
[root@server-77 data]# cat myid
2
[root@server-77 data]## 76 server[root@server-77 data]# pwd
/root/zookeeper/apache-zookeeper-3.7.1-bin/apache-zookeeper-3.7.1-bin/data
[root@server-77 data]#
[root@server-77 data]# cat myid
3
[root@server-77 data]#
启动zookeeper集群
# 启动zk服务:
sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start# 停止zk服务:
sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh stop# 重启zk服务:
sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh restart
注意:启动一台zookeeper 服务器时,查询 status时会报错
只要启动2台时,才可以查询zookeeeper 服务器status
# 查看zk服务状态:
sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh status
# 启动zk服务:
sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start[root@localhost bin]# pwd
/root/zookeeper/apache-zookeeper-3.7.1-bin/bin
[root@localhost bin]#
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost bin]## 停止zk服务:
# sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh stop[root@localhost bin]# pwd
/root/zookeeper/apache-zookeeper-3.7.1-bin/bin
[root@localhost bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[root@localhost bin]## 重启zk服务:
sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh restart[root@localhost bin]# pwd
/root/zookeeper/apache-zookeeper-3.7.1-bin/bin
[root@localhost bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[root@localhost bin]## 查看zk服务状态:
sh /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/zkServer.sh status
# 启动一台zookeeper server时,查询状态报错如下:[root@server-76 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.
[root@server-76 bin]#
Zookeeper 自启动
#切换到/etc/rc.d/init.d目录,该目录下的脚本就类似与windows中的注册表,在系统启动的时候执行[root@localhost bin]# cd /etc/rc.d/init.d/
[root@localhost init.d]# pwd
/etc/rc.d/init.d
[root@localhost init.d]# ll
total 40
-rw-r--r--. 1 root root 18281 May 22 2020 functions
-rwxr-xr-x. 1 root root 4569 May 22 2020 netconsole
-rwxr-xr-x. 1 root root 7928 May 22 2020 network
-rw-r--r--. 1 root root 1160 Oct 2 2020 README
[root@localhost init.d]#
[root@localhost init.d]# touch zookeeper
[root@localhost init.d]#
[root@localhost init.d]# ll
total 40
-rw-r--r--. 1 root root 18281 May 22 2020 functions
-rwxr-xr-x. 1 root root 4569 May 22 2020 netconsole
-rwxr-xr-x. 1 root root 7928 May 22 2020 network
-rw-r--r--. 1 root root 1160 Oct 2 2020 README
-rw-r--r--. 1 root root 0 Apr 3 18:16 zookeeper
[root@localhost init.d]#
[root@localhost init.d]# chmod +x zookeeper
[root@localhost init.d]#
[root@localhost init.d]# ll
total 40
-rw-r--r--. 1 root root 18281 May 22 2020 functions
-rwxr-xr-x. 1 root root 4569 May 22 2020 netconsole
-rwxr-xr-x. 1 root root 7928 May 22 2020 network
-rw-r--r--. 1 root root 1160 Oct 2 2020 README
-rwxr-xr-x. 1 root root 0 Apr 3 18:16 zookeeper
[root@localhost init.d]#
查询zookeeper 服务
# 可通过ps -ef 查询zookeeper 是否启动[root@server-77 bin]# ps -ef|grep zookeep
root 261670 48768 0 18:09 pts/19 00:00:00 grep --color=auto zookeep
[root@server-77 bin]#
[root@server-77 bin]#
关于leader如何确定
目前第二台启动的zookeeper 是leader
若leader stop,第三台zookeeper 由follow 转为 leader
# 第一台zookeeper 永远不会成为leader
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
