目录

  • 一、单机版
  • 1.1、安装JDK
  • 1.2、安装ZooKeeper
  • 1.3、客户端连接ZooKeeper
  • 二、集群版
  • 2.1、角色概念
  • 2.2、集群搭建
  • 2.3、服务启停
  • 2.4、客户端连接


一、单机版

我们这里都是在Linux系统中搭建环境

1.1、安装JDK

JDK安装请参考一文搞定Linux常见用法中第八部分

1.2、安装ZooKeeper

1、上传安装包
使用rz命令,将从zk官网下载的压缩包上传至temp目录(这里使用的3.6版本)

[root@localhost temp]# rz

[root@localhost temp]# ll
-rw-r--r--. 1 root root  12392394 3月  31 06:49 apache-zookeeper-3.6.0-bin.tar.gz

2、解压

1)解压:使用命令tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /usr/local/,将zookeeper解压到/usr/local/目录下

2)重命名:mv apache-zookeeper-3.6.0-bin/ zookeeper

zookeeper dockler 单机版 zookeeper单机部署_客户端


3、配置文件处理

ZooKeeper 启动时默认的去 conf 目录下读取zoo.cfg配置文件,但是这个文件其实不存在,只有一个zoo_sample.cfg参考文件,所以我们先要使用 cp zoo_sample.cfg zoo.cfg复制一份实际配置

-rw-r--r--. 1 1000 mysql  535 2月  25 14:36 configuration.xsl
-rw-r--r--. 1 1000 mysql 3435 2月  25 14:36 log4j.properties
-rw-r--r--. 1 root root  1148 6月   7 02:19 zoo.cfg
-rw-r--r--. 1 1000 mysql 1148 2月  25 14:36 zoo_sample.cfg

4、创建数据缓存目录

为了方便缓存数据管理,我们在zookeeper目录下执行mkdir data,创建data文件夹

zookeeper dockler 单机版 zookeeper单机部署_zookeeper_02


并且将zoo.cfg中缓存数据目录修改为dataDir=/usr/local/zookeeper/data5、启动服务

进入到bin目录下,执行./zkServer.sh start命令

[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

使用./zkServer.sh status可查看服务状态,默认端口为2181Mode:standalone表示为单机模式

[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: standalone

停止服务使用./zkServer.sh stop

1.3、客户端连接ZooKeeper

在bin目录下,执行./zkCli.sh -server ip:port命令,ip和port分布为需要连接的zk服务的地址和端口。如果只是连接本机zk,且使用的默认端口2181,则使用./zkCli.sh即可。连接成功后会进入到客户端模式,Crtl + C可退出

省略....
WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.xx.xxx:2181(CONNECTED) 0]

二、集群版

2.1、角色概念

ZooKeeper 集群中的角色主要有三类:领导者(Leaner)、跟随者(Follower)和观察者(ObServer),后两者也叫学习者(Learner)

角色类型

角色描述

领导者(Leaner)

领导者负责进行投票的发起和决议,更新系统状态

跟随者(Follower)

跟随者负责接收客户端请求并返回结果,在选举过程中参与投票

观察者(ObServer)

观察者负责接收客户端连接,并将写请求转发给领导者节点。它不参与投票,只同步领导者的状态。其作用是为扩展系统,提高读的速度

zookeeper dockler 单机版 zookeeper单机部署_客户端_03

2.2、集群搭建

zk集群最小安装需要3个节点,我们这里搭建伪集群(伪集群简单理解就是在一个Linux环境中创建多个zk服务,实际生产环境中我们肯定使用真实集群)
1、新建目录
/usr/local目录下mkdir zookeepercluster创建一个目录,方便管理3个zk服务
2、创建3个zk服务
按照之前单机版的安装方式,在zookeepercluster目录下分别创建zookeeper01、zookeeper02、zookeeper03
解压:tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /usr/local/zookeepercluster/ 重命名:mv apache-zookeeper-3.6.0-bin/ zookeeper01 复制:cp -r zookeeper01/ zookeeper02cp -r zookeeper01/ zookeeper03

[root@localhost zookeepercluster]# ll
drwxr-xr-x. 8 root root 157 6月   7 04:19 zookeeper01
drwxr-xr-x. 8 root root 157 6月   7 04:19 zookeeper02
drwxr-xr-x. 8 root root 157 6月   7 04:19 zookeeper03

然后再分别复制zoo.cfg和创建data目录3、dataDir配置修改
改为指定路径,如zookeeper01

dataDir=/usr/local/zookeepercluster/zookeeper01/data

4、提供应用唯一标识
在 zk 集群中需要为每个节点创建一个唯一标识(自然数),就是在我们之前创建的data/目录中创建一个myid 文件,并写入一个1或2的自然数(只要数字不同就行),那我们在zookeepercluster目录下执行如下命令,分别为3个节点创建1、2、3三个唯一标识

[root@localhost zookeepercluster]# echo 1 >> zookeeper01/data/myid
[root@localhost zookeepercluster]# echo 2 >> zookeeper02/data/myid
[root@localhost zookeepercluster]# echo 3 >> zookeeper03/data/myid

5、增加集群配置
zk集群除了本身客户端监听端口外,还需要使用投票端口和选举端口,我们这里如下分配
客户端监听端口分别为:2181、2182、2183
投票端口分别为:2184、2185、2186
选举端口分别为:2187、2188、2189
然后在每个zk的zoo.cfg中修改对应clientPort,再加上如下配置即可(ip要改)

server.1=ip:2184:2187
server.2=ip:2185:2188
server.3=ip:2186:2189

server.后面的数字指myid

2.3、服务启停

方式一:
每个节点执行./zkServer.sh start即可
方式二:
创建startall.shstopall.sh启停脚本,内容分别如下

zookeeper01/bin/zkServer.sh start
zookeeper02/bin/zkServer.sh start
zookeeper03/bin/zkServer.sh start
zookeeper01/bin/zkServer.sh stop
zookeeper02/bin/zkServer.sh stop
zookeeper03/bin/zkServer.sh stop

对两个脚本授权:
chmod 777 st*(777 表示文件可读可写可执行)
启动服务(记得先停掉之前单机版2181端口服务,避免端口冲突)

[root@localhost zookeepercluster]# ./startall.sh 
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeepercluster/zookeeper01/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeepercluster/zookeeper02/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeepercluster/zookeeper03/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

2.4、客户端连接

在任意一个zk节点的bin目录下,执行./zkCli.sh -server ip:port命令即可