Centos7 安装部署Zookeeper

官网地址:https://zookeeper.apache.org/

1. Zookeeper 介绍

Apache ZooKeeper是一个开源的分布式协调服务,它用于维护配置信息、命名、提供分布式同步以及提供组服务等。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,提供给用户一个简单易用的接口。

2. Zookeeper 软件包下载地址

下载地址: https://zookeeper.apache.org/releases.html

当前稳定版本下载地址:

https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz

下载后上传到服务器。

发布策略: Apache ZooKeeper 社区同时支持两个发布分支:稳定版和当前版。一旦发布新的次要版本,稳定版本预计将很快退役,大约半年后将宣布停用。在半年的宽限期内,预计只会为该版本发布安全和关键修复。宣布停用后,社区将不再提供任何补丁。所有

ZooKeeper 版本仍可从官方 Apache 档案中访问。

3. 系统要求

文档参考:https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_systemReq

所需软件: ZooKeeper 在 Java 1.8 或更高版本中运行(JDK 8 LTS、JDK 11 LTS、JDK 12 - 不支持 Java 9 和 10)。它作为ZooKeeper 服务器的集合运行。三个 ZooKeeper 服务器是集合的最小建议大小。

可以安装openjdk或者配置oracle的jdk

bash 复制代码
# 安装openjdk
# yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)

4. 部署Zookeeper单机部署

参考文档:https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_InstallingSingleMode

将下载的压缩包上传到服务器解压,进入到conf目录

zoo_sample.cfg 配置·文件模板,重新复制一份即可

bash 复制代码
[root@localhost conf]# ls
configuration.xsl  logback.xml zoo_sample.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

默认配置参数介绍:

文档参考:https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_provisioning

bash 复制代码
[root@localhost conf]# grep -vE '^#|^$'  zoo.cfg 
tickTime=2000		# 客户端与服务器之间维持心跳的时间间隔,单位是毫秒
initLimit=10		# 发送的最多心跳个数,如果在 initLimit * tickTime 的时间内 Follower 未能与 Leader 建立连接,那么 Follower 将认为自己启动失败 
syncLimit=5		    # 如果Leader节点在 5 * tickTime内没有收到来自某个 Follower 节点的心跳响应,Leader 节点会认为该 Follower 节点不可达或已宕机。Leader 节点会尝试重新连接该 Follower 节点,并可能在多次尝试失败后从集群中暂时移除该 Follower 节点。
dataDir=/tmp/zookeeper # 指定了 ZooKeeper 存储其数据文件的位置包含了 ZooKeeper 的内存数据库的快照(snapshots)和事务日志(transaction logs)。
clientPort=2181  # 监听客户端连接的端口;

数据目录真实环境下不要放在/tmp/目录下,以防系统重启后数据丢失

启动zookeeper

bash 复制代码
[root@localhost conf]# ../bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

zkServer.sh 参数介绍:

bash 复制代码
[root@localhost conf]# ../bin/zkServer.sh --help
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Usage: ../bin/zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}
  • --config <conf-dir>: 如何配置文件不在默认config目录下可以指定
  • start :启动 ZooKeeper
  • start-foreground : 在前台启动Zookeeper
  • stop:停止 ZooKeeper 服务器
  • version : 打印版本
  • restart:重启zookeeper
  • status: 检查zookeeper状态
  • print-cmd:打印启动 ZooKeeper 服务器时使用的完整命令。这个命令对于调试配置问题很有用,因为它显示了实际执行的命令。

查看端口监听情况:

bash 复制代码
# 通过进程号查看端口占用情况
[root@localhost conf]# netstat  -tnlp|grep 1532
tcp6       0      0 :::8080                 :::*                    LISTEN      1532/java           
tcp6       0      0 :::38776                :::*                    LISTEN      1532/java           
tcp6       0      0 :::2181                 :::*                    LISTEN      1532/java
  • 2181 :客户端连接端口
  • 8080:嵌入式的 Jetty 服务器,提供了一个 HTTP 接口来管理 ZooKeeper
  • 34097:为了支持JMX(Java Management Extensions)调用。JMX是一个为Java应用程序提供管理远程监控和管理功能的标准。

从 3.5 版本开始,ZooKeeper 引入了一个新的特性,即 AdminServer,它是一个嵌入式的 Jetty 服务器,提供了一个 HTTP 接口来管理 ZooKeeper。这个 AdminServer 默认监听在 8080 端口上,可以通过 URL "/commands/[command name]" 来执行命令,响应以 JSON 格式返回。

修改Jetty 端口: admin.serverPort=8888

如果需要关闭Jetty 服务:admin.enableServer=false
如果想关闭 随机端口,可以在启动脚本里面添加 export JMXDISABLE=true 参数

[root@localhost conf]# grep "export JMXDISABLE=true" .../bin/zkServer.sh

export JMXDISABLE=true

zookeeper单机模式到此就配置完成了。

5. 部署Zookeeper集群

集群最小个数为3台,例如,如果有四台机器,ZooKeeper 只能处理一台机器的故障;如果两台机器发生故障,剩下的两台机器就不构成多数。但是,如果有五台机器,ZooKeeper 可以处理两台机器的故障,强烈建议您使用奇数台服务器。

关于集群的设置的建议(集群(多服务器)设置):https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_zkMulitServerSetup

server.1 192.168.0.219
server.2 192.168.0.220
server.3 192.168.0.221

所有Zookeeper 集群配置

bash 复制代码
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
server.1=192.168.0.219:2888:3888
server.2=192.168.0.220:2888:3888
server.3=192.168.0.221:2888:3888
  • 2888 : 用于follower和leader交换消息的端口
  • 3888:是选举leader时使用的端口。

记得关闭防火墙或者开放2888,3888,2181端口,selinux
数据目录真实环境下不要放在/tmp/目录下,以防系统重启后数据丢失

创建myid文件文件
在每台服务器上的数据目录下,创建一个myid文件,文件内容为你的server.X配置中的X值。

bash 复制代码
[root@zook-01 ~]# echo "1" > /tmp/zookeeper/myid
[root@zook-02 ~]# echo "2" > /tmp/zookeeper/myid
[root@zook-03 ~]# echo "3" > /tmp/zookeeper/myid

启动zookeeper

最好是一台一台启动,优先启动的成为leader,follower心跳响应leader之后,建立连接,集群就正常了。

leader:

bash 复制代码
[root@zook-01 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

follower:

bash 复制代码
[root@zook-02 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

follower:

bash 复制代码
[root@zook-01 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.8.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

到这里zookeeper集群就搭建完毕了。

相关推荐
Algorithm157618 分钟前
云原生相关的 Go 语言工程师技术路线(含博客网址导航)
开发语言·云原生·golang
MZWeiei21 分钟前
Zookeeper的选举机制
大数据·分布式·zookeeper
MZWeiei22 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
学计算机的睿智大学生23 分钟前
Hadoop集群搭建
大数据·hadoop·分布式
一路狂飙的猪23 分钟前
RabbitMQ的工作模型
分布式·rabbitmq
miss writer1 小时前
Redis分布式锁释放锁是否必须用lua脚本?
redis·分布式·lua
m0_748254881 小时前
DataX3.0+DataX-Web部署分布式可视化ETL系统
前端·分布式·etl
字节程序员2 小时前
Jmeter分布式压力测试
分布式·jmeter·压力测试
年薪丰厚2 小时前
如何在K8S集群中查看和操作Pod内的文件?
docker·云原生·容器·kubernetes·k8s·container
zhangj11252 小时前
K8S Ingress 服务配置步骤说明
云原生·容器·kubernetes