侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 292 篇文章
  • 累计创建 132 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

linux环境下zookeeper3.8.0的安装教程

孔子说JAVA
2022-08-04 / 0 评论 / 1 点赞 / 98 阅读 / 6,032 字 / 正在检测是否收录...

zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。zooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。所谓分布式协调主要是来解决分布式系统中多个进程之间的同步限制,防止出现脏读,例如我们常说的分布式锁。

2369535117f3975bba8c58a72d29be99

1、了解zookeeper

Zookeeper 分布式服务框架是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

zookeeper中的数据是存储在内存当中的,因此它的效率十分高效。它内部的存储方式十分类似于文件存储结构,采用了分层存储结构。但是它和文件存储结构的区别是,它的各个节点中是允许存储数据的,需要注意的是zk的每个节点存储数据不能超过1M。它的内存数据结果如下图:

image-1659425637447

我们可以通过不同的路径访问到不同的节点,因为它是分层结构,我们也可以通过某一个父节点,获取到该节点下的所有子节点信息。

Zookeeper可以单机安装,这种应用模式主要用在测试或demo的情况下,在生产环境下一般采用集群模式。

2、zookeeper的下载

可以从Zookeeper的官方网站下载最新的安装包: http://www.apache.org/dist/zookeeper/

image-1659425857057

我们这里选择最新版本 zookeeper-3.8.0/,点击进入。

image-1659425930008

点击apache-zookeeper-3.8.0-bin.tar.gz进行下载。

3、单机安装zookeeper

3.1 前提条件

安装zookeeper的服务器必须有jvm环境,最低要求 JDK 必须是7或以上版本。JDK8的安装教程可参考:Linux下JAVA WEB服务器的搭建一(JDK\MYSQL\TOMCAT)

检查jdk环境:java -version,如下图所示,表示jdk环境已安装成功。

image-1659426394104

3.2 zookeeper安装包上传解压

使用xftp工具将下载好的 apache-zookeeper-3.8.0-bin.tar.gz 安装包上传到linux服务器,我是上传到了 /opt/zookeeper 目录,解压。

# 在opt目录下新建/zookeeper目录

cd /opt/
mkdir zookeeper

# 将下载的压缩包上传到/opt/zookeeper目录下
# 解压

tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz

3.3 zookeeper的配置

在 /opt/zookeeper 目录下创建目录 zkData,用来存放 zookeeper 的数据文件。

cd /opt/zookeeper/
mkdir zkData

修改配置文件,进入 /opt/zookeeper/apache-zookeeper-3.8.0-bin/conf 目录,复制 zoo_sample.cfg 文件并重命名为 zoo.cfg。

  • zookeeper只能识别 zoo.cfg 配置文件。
cd /opt/zookeeper/apache-zookeeper-3.8.0-bin/conf
cp zoo_sample.cfg zoo.cf

使用 vim zoo.cfg 命令修改 zoo.cfg 的配置,将 dataDir=/opt/zookeeper/zkData 的值改为上面创建的zkData目录(用于存放数据文件),修改完后按esc,输入:wq!保存退出。

image-1659427330713

3.4 启动zookeeper服务端

进入bin目录下,通过 ./zkServer.sh start 命令启动服务端,然后使用 ./zkServer.sh status 查看启动状态。

image-1659427564243

从结果可以看到,zookeeper服务启动失败,报错信息为 Error contacting service. It is probably not running.

其他操作命令:

zkServer.sh start	      # 启动ZK服务	
zkServer.sh start-foreground  # 日志启动方式
zkServer.sh stop	      # 停止ZK服务
zkServer.sh restart	      # 重启ZK服务
zkServer.sh status	      # 查看ZK状态

3.5 错误排查

我们进入logs目录查看一下日志。

root@xnzysq20210118001:/opt/zookeeper/apache-zookeeper-3.8.0-bin/bin# cd ../logs/
root@xnzysq20210118001:/opt/zookeeper/apache-zookeeper-3.8.0-bin/logs# ls
zookeeper-root-server-xnzysq20210118001.out
# 查看日志
root@xnzysq20210118001:/opt/zookeeper/apache-zookeeper-3.8.0-bin/logs# cat zookeeper-root-server-xnzysq20210118001.out 

image-1659427745464

可以发现错误信息为 8080 端口被占用,通过查阅Zookeeper3.5的官方文档,发现这是Zookeeper3.5的新特性:

image-1659427869390

这是Zookeeper AdminServer,默认使用8080端口,它的配置属性如下:

image-1659427898454

我们可以修改在zoo.cfg中修改AdminServer的端口,若没有该配置可以新增一行:

admin.serverPort=8088

保存后,再次启动,Zookeeper启动成功。

image-1659428081580

jps命令查看,474659 QuorumPeerMain 就是 zookeeper 的服务端。

image-1659428166746

3.6 zookeeper客户端启动

在bin目录下执行 ./zkCli.sh 命令启动zookeeper客户端,若出现以下页面表示启动成功。

image-1659428572391

image-1659428612056

如果连接的服务端和客户端不在同一台服务器上,使用 ./zkCli.sh -timeout 0 -r -server ip:port 命令,如 ./zkCli.sh -timeout 5000 -server 192.9.200.242:2181

  • -r :即使ZooKeeper服务器集群一半以上的服务器宕机,也可以给客户端提供读服务。

通过ls、create、set、get命令进行测试。

image-1659429206574

使用 quit 命令可以退出客户端。

3.7 zookeeper服务端停用

通过 ./zkServer.sh stop 命令可以停止zookeeper服务。

image-1659429386974

4、集群安装zookeeper

在单台服务器上安装集群。

[root@VM-4-7-centos opt]# mkdir zookeeper01 zookeeper02 zookeeper03
[root@VM-4-7-centos opt]# ll
total 12904
-rw-r--r--  1 root root 13185104 Jun 23 14:47 apache-zookeeper-3.8.0-bin.tar.gz
drwxr-xr-x  4 root root     4096 Jun 20 19:03 mellanox
drwxr-xr-x  2 root root     4096 Jun 20 19:54 mysql
drwxr-xr-x. 2 root root     4096 Oct 31  2018 rh
drwxr-xr-x  3 root root     4096 Jun 24 22:30 zookeeper01
drwxr-xr-x  3 root root     4096 Jun 24 22:31 zookeeper02
drwxr-xr-x  3 root root     4096 Jun 24 22:32 zookeeper03
[root@VM-4-7-centos opt]# cd /
[root@VM-4-7-centos /]# vim etc/hosts
配置信息省略......
 
###最低部加入
127.0.0.1 zookeeper01 zookeeper02 zookeeper03
:wq
[root@VM-4-7-centos /]#
[root@VM-4-7-centos opt]# cp -r apache-zookeeper-3.8.0-bin zookeeper01/
[root@VM-4-7-centos opt]# cp -r apache-zookeeper-3.8.0-bin zookeeper02/
[root@VM-4-7-centos opt]# cp -r apache-zookeeper-3.8.0-bin zookeeper03/
 
###创建myid(必须)
 
[root@VM-4-7-centos zkData]# pwd
/opt/zookeeper01/apache-zookeeper-3.8.0-bin/zkData
[root@VM-4-7-centos zkData]# vim myid
## 1代表服务器的id号,zookeeper01 设置 1,zookeeper02 设置 2 zookeeper03 设置 3
1
~
~
[root@VM-4-7-centos conf]# pwd
/opt/zookeeper01/apache-zookeeper-3.8.0-bin/conf
[root@VM-4-7-centos conf]# vim zoo.cfg
#clientPort 为端口号 zookeeper01 设置 2181,zookeeper02 设置 2182 zookeeper03 设置 2183
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
 
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpHost=0.0.0.0
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
#必须
server.1=zookeeper01:2287:3387
server.2=zookeeper02:2288:3388
server.3=zookeeper03:2289:3389
 
 
[root@VM-4-7-centos bin]# pwd
/opt/zookeeper01/apache-zookeeper-3.8.0-bin/bin
[root@VM-4-7-centos bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper01/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@VM-4-7-centos bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper01/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.
[root@VM-4-7-centos bin]#
 
[root@VM-4-7-centos bin]# pwd
/opt/zookeeper02/apache-zookeeper-3.8.0-bin/bin
[root@VM-4-7-centos bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper02/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@VM-4-7-centos bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper02/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Client port found: 2182. Client address: localhost. Client SSL: false.
Mode: leader
 
[root@VM-4-7-centos bin]# pwd
/opt/zookeeper03/apache-zookeeper-3.8.0-bin/bin
[root@VM-4-7-centos bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper03/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@VM-4-7-centos bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper03/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Client port found: 2183. Client address: localhost. Client SSL: false.
Mode: follower
1

评论区