zookeeper搭建(单机+集群)

zookeeper搭建

一、单机环境搭建

1.1 前置条件

版本: 3.4.11

要求: 依赖Java环境

1.2 步骤

  1. 进入 opt 目录
cd /opt
  1. 下载安装包
wget http://mirror.olnevhost.net/pub/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

如果通过命令下载失败,可以先从浏览器下载安装包,然后再上传到服务器上面。[https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/]

  1. 解压安装包
 tar -zvxf zookeeper-3.4.11.tar.gz

进入解压后的文件夹,如图所示
image

  1. 配置文件

/conf/zoo_sample.cfg 文件为官方给我们的案例配置文件,复制一份,命名为zoo.cfg ,zoo.cfg是官方指定的配置文件命名规则

cp zoo_sample.cfg zoo.cfg

image

  1. 修改配置文件
  • 首先在 /opt/zookeeper-3.4.11 目录下创建 datalogs 两个文件夹
mkdir data logs

image

  • 修改配置文件 zoo.cfg

    cd /opt/zookeeper-3.4.11/conf
    vim zoo.cfg
    # 进入 zoo.cfg 修改以下参数
    dataDir=/opt/zookeeper-3.4.11/data
    dataLogDir=/opt/zookeeper-3.4.11/logs
    # 退出并保存
    
  1. 启动zookeeper
  • 启动
# 进入 /bin 目录
./zkServer.sh start

image

image

  • 查看 zookeeper 的状态

    ./zkServer.sh status
    

image

至此,zookeeper单机版搭建完毕!

1.3 配置文件

配置文件详解:

   ①、tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime

  ②、dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。

  ③、client:监听客户端连接的端口。

  ④、initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。

  ⑤、syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。

  ⑥、server.A=B:C:D

    A:其中 A 是一个数字,表示这个是服务器的编号;

    B:是这个服务器的 ip 地址;

    C:Zookeeper服务器之间的通信端口;

    D:Leader选举的端口。

  我们需要修改的第一个是 dataDir ,在指定的位置处创建好目录。

  第二个需要新增的是 server.A=B:C:D 配置,其中 A 对应下面我们即将介绍的myid 文件。B是集群的各个IP地址,C:D 是端口配置。

  参考官方文档:https://zookeeper.apache.org/doc/r3.5.8/zookeeperStarted.html

二、集群环境搭建

2.1 前置条件

三台 Linux 服务器

192.168.180.196
192.168.180.197
192.168.180.198

2.2 步骤

  1. 按照上述 1.2 步骤 的 1-5步,依次在 197198 两台服务器上分别安装 zookeeper

  2. 修改配置文件

cd /opt/zookeeper-3.4.11/conf
vim zoo.cfg

dataDir=/opt/zookeeper/zookeeper-3.4.14/data
dataLogDir=/opt/zookeeper/zookeeper-3.4.14/log
# 增加以下配置
server.1=192.168.180.196:2888:3888
server.2=192.168.180.197:2888:3888
server.3=192.168.180.198:2888:3888

# 解读:
# Server.A=B:C:D
# A 是一个数字,表示这个是第几号服务器
# B 是这个服务器的 ip 地址
# C 是这个服务器与集群中的 Leader 服务器交换信息的端口
# D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口
# 保存并退出
  1. 创建 myid 文件
# 1.集群模式下需要在data 目录下创建一个 myid 文件
# 2.此文件中有一个值,就是刚才配置文件中 Server.A=B:C:D 对应的 A 的值
# 3.当zookeeper启动时,读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较,
# 从而判断到底是哪个server
cd /opt/zookeeper-3.4.11/data
touch myid
vim myid
# 在文件中写入 A 对应的值: 1 or 2 or 3
# 退出并保存

注:三台服务器,依次创建 myid 文件,写入对应的值。

  1. 启动

分别启动三台服务器上的 zookeeper

cd /opt/zookeeper-3.4.11/bin
./zkServer.sh start

image

2.3 zookeeper命令

  1. 启动命令
./zkServer.sh start
  1. 停止命令
./zkServer.sh stop
  1. 重启命令
./zkServer.sh restart
  1. 查看集群节点状态
./zkServer.sh status

2.4 问题

问题1:zkServer.sh status 查看集群节点状态,集群搭建失败

出现报错 Error
image

查看日志 zookeeper.out
image

解决方案:

  1. 需要设置防火墙
# 1. 查看防火墙状态: dead - 未开启, running - 开启状态
systemctl status firewalld
# 2. 如未开启,需要开启防火墙
systemctl start firewalld
# 3.开放端口号:将zookeeper的端口号设置防火墙
firewall-cmd --add-port=2181/tcp --permanent --zone=public
# 4.将配置文件中的 1-服务器与集群中的 Leader 服务器交换信息的端口
#                2-执行选举时服务器相互通信的端口 分别设置防火墙
#                Server.A=B:C:D(server.1=192.168.180.196:2888:3888)
firewall-cmd --add-port=2888/tcp --permanent --zone=public
firewall-cmd --add-port=3888/tcp --permanent --zone=public
# 4.设置完之后,需要重启防火墙
firewall-cmd --reload
# 5.查看刚才设置的,防火墙开放的端口
firewall-cmd --list-ports
# 6.重启zookeeper
./zkServer.sh restart

防火墙开放的端口
image

  1. 三台服务按上述步骤,依次执行

  2. 三台zookeeper重启完毕之后,查看各自zookeeper的状态

./zkServer.sh status

leader-领导者
image

follower-跟随者
image

follower-跟随者
image

注:

  1. 关闭防火墙命令
systemctl stop firewalld

2.5 参考文章

  1. zookeeper单机和集群搭建过程详细步骤_寰宇001的博客-CSDN博客_zookeeper集群搭建步骤

  2. 如何启动zookeeper集群_Tomorrow YE的博客-CSDN博客_zookeeper集群启动

  3. zookeeper各版本下载

posted @   zlonger  阅读(1132)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示