欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

ZooKeeper基础:快速部署

程序员文章站 2022-04-28 22:12:09
本文主要介绍ZooKeeper的快速部署安装,更多信息请参考 "ZooKeeper" 概述 ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括 ......

本文主要介绍zookeeper的快速部署安装,更多信息请参考zookeeper

概述

zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是google的chubby一个开源的实现,是hadoop和hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
它的设计易于编程,它使用一个遵循文件系统中常见的目录树结构的数据模型。它在java环境中运行,对java和c都有绑定。

zookeeper有三种安装模式:单机安装(standalone)、伪集群模式、集群模式:

  • standalone模式:只在一台机器上安装zookeeper,并只启动一个zookeeper实例。
  • 伪集群模式:在一台机器上开启多个zookeeper实例来模拟集群。通过加载不同配置文件,分配不同数据目录来实现这种模式。因为在同一机器上运行,所以机器宕机,整个zookeeper就挂了。基本上不会布置这样的zookeeper集群。
  • 集群模式:在至少3台机器上安装zookeeper构成集群,只要故障节点数量在一定范围内就能保证zookeeper服务的可用性。

部署前置条件

zookeeper运行在java环境下,所以需要先安装jdk,且要求版本高于1.6。

安装过程:略

单机安装

获取安装包

cd /usr/local
mkdir -p zookeeper/data
cd zookeeper
# 选择最新稳定版本
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar zxvf zookeeper-3.4.14.tar.gz

创建环境变量

echo 'zookeeper_home=/usr/local/zookeeper/zookeeper-3.4.14' >/etc/profile.d/zk.sh
echo 'path=$zookeeper_home/bin:$path' >> /etc/profile.d/zk.sh
chmod +x /etc/profile.d/zk.sh
source /etc/profile.d/zk.sh

相关目录文件介绍

bin目录

[root@zk-1 zookeeper-3.4.14]# ls bin/
readme.txt    zkcli.cmd  zkenv.cmd  zkserver.cmd  zktxnlogtoolkit.cmd
zkcleanup.sh  zkcli.sh   zkenv.sh   zkserver.sh   zktxnlogtoolkit.sh
  • zkserver:用于启动、停止zookeeper,且能查看zookeeper状态。
zkserver.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
  • zkenv:设置zookeeper启动、关闭时的环境变量。在其余的每个脚本中都引用了这个脚本。
  • zkcleanup:清除zookeeper的事务日志和快照。
  • zkcli:zookeeper的一个命令行客户端。

conf目录

  • configuration.xsl:不用管这个文件- -!。
  • log4f.properties:是zookeeper的日志配置文件。
  • zoo_sample.cfg:是zookeeper的示例配置文件。

zkserver.sh默认的配置文件名为zoo.cfg。所以,在conf目录下创建一个zoo.cfg。写入几个保证zookeeper能正常运行的配置项:

ticktime=2000
datadir=/usr/local/zookeeper/data
clientport=2181

其中:

  • ticktime:zookeeper中很多配置项(如心跳时间、连接超时时间等)都要用到的时间单位,这里配置为2000毫秒,即2秒。
  • datadir:zookeeper实例的数据目录。
  • clientport:zookeeper向外提供

启停

启动

使用zkserver.sh来启动zookeeper:

cd bin/
zkserver.sh start

也可以手动指定启动时读取的配置文件:

zkserver.sh start /usr/local/zookeeper/zookeeper-3.4.14/conf/zoo.cfg

查看启动状态:

[root@zk-1 bin]# zkserver.sh status
zookeeper jmx enabled by default
using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
mode: standalone

可以看到运行模式是"standalone"。

停止

zkserver.sh stop

连接

zookeeper启动后,就可以向外提供zookeeper服务了。这里用zookeeper提供的命令行客户端去连接一下zookeeper做个简单的测试。

[root@zk-1 bin]# zkcli.sh -server localhost:2181
connecting to localhost:2181
……
using sasl (unknown error)
welcome to zookeeper!
jline support is enabled
2019-06-30 09:42:49,112 [myid:] - info  [main-sendthread(localhost:2181):clientcnxn$sendthread@879] - socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
2019-06-30 09:42:49,168 [myid:] - info  [main-sendthread(localhost:2181):clientcnxn$sendthread@1303] - session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x100002654ed0000, negotiated timeout = 30000
 
watcher::
 
watchedevent state:syncconnected type:none path:null
[zk: localhost:2181(connected) 0]

集群部署

cd /usr/local
mkdir -p zookeeper/data
cd zookeeper
# 选择最新稳定版本
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar zxvf zookeeper-3.4.14.tar.gz

创建环境变量

echo 'zookeeper_home=/usr/local/zookeeper/zookeeper-3.4.14' >/etc/profile.d/zk.sh
echo 'path=$zookeeper_home/bin:$path' >> /etc/profile.d/zk.sh
chmod +x /etc/profile.d/zk.sh
source /etc/profile.d/zk.sh

zoo.cfg配置

三个节点配置文件(/usr/local/zookeeper/zookeeper-3.4.14/conf/zoo.cfg)内容如下:

ticktime=2000
datadir=/usr/local/zookeeper/data
clientport=2181
initlimit=5
synclimit=2
server.1=10.0.10.12:2888:3888
server.2=10.0.10.13:2888:3888
server.3=10.0.10.14:2888:3888

在三个节点上写入myid文件:

# 节点1上执行
echo 1 >/usr/local/zookeeper/data/myid
 
# 节点2上执行
echo 2 >/usr/local/zookeeper/data/myid
 
# 节点3上执行
echo 3 >/usr/local/zookeeper/data/myid

启动

cd /usr/local/zookeeper/zookeeper-3.4.14/bin
./zkserver.sh status

验证:

# 节点1
[root@zk-1 bin]# ./zkserver.sh status
zookeeper jmx enabled by default
using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
mode: follower
 
# 节点2
[root@zk-2 bin]# ./zkserver.sh status
zookeeper jmx enabled by default
using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
mode: leader
 
 
# 节点3
[root@zk-3 bin]# ./zkserver.sh status
zookeeper jmx enabled by default
using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
mode: follower