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:3888

server.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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部