赞
踩
准备环境修改hostname
-
- # 永久修改hostname
-
- [root@bogon java]# hostnamectl set-hostname server-247
- [root@bogon java]#
- [root@bogon java]# hostname
- server-247
- [root@bogon 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。