一、Zookeeper集群简介
??Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换等服务。它不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC服务框架、分布式数据库同步系统,这些都是Zookeeper的应用场景。对 zookeeper 集群进行了这样三种角色划分:leader、follower、observer:
- 领导者(leader):负责进行投票的发起和决议,更新系统状态。
- 跟随者(follower):用于接收客户端请求并向客户端返回结果以及在选举过程中参与投票。
- 观察者(observer):也可以接收客户端连接,将写请求转发给leader节点,但是不参与投票过程,只同步leader的状态。通常对查询操作做负载。
??Zookeeper 的三个端口作用
- 2181 : 对 client 端提供服务
- 2888 : 集群内机器通信使用
- 3888 : 选举 leader 使用
二、搭建步骤
1、规划集群节点
2、安装JDK
安装步骤参考Linux之JDK安装与升级
3、创建zookeeper安装用户
集群各节点参照执行。 [root@s131 ~]# useradd zk [root@s131 ~]# passwd zk Changing password for user zk. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
4、下载zookeeper最新稳定版本
通过Apache官网下载最新稳定版本,https://zookeeper.apache.org/releases.html#download,博文发布时最新稳定版本为3.6.3,最新版本为3.7.0。实际下载链接为镜像网址,其他节点同步执行。 [root@s131 ~]# su - zk [zk@s131 ~]$ wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
5、解压zookeeper软件包
其他节点参照执行。 [zk@s131 ~]$ tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz [zk@s131 ~]$ ln -s apache-zookeeper-3.6.3-bin zookeeper
6、修改配置文件 zoo.cfg
其他节点参照执行。 [zk@s131 ~]$ mkdir data [zk@s131 ~]$ cd zookeeper/ [zk@s131 zookeeper]$ cd conf/ [zk@s131 conf]$ cp zoo_sample.cfg zoo.cfg 编辑zoo.cfg文件,配置如下: [zk@s131 conf]$ cat zoo.cfg |grep -Ev “#|$” tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/zk/data clientPort=2181 server.1=192.168.0.131:2888:3888 server.2=192.168.0.132:2888:3888 server.3=192.168.0.133:2888:3888
7、创建 myid 文件
[zk@s131 conf]$ cd /home/zk/data/ [zk@s131 data]$ echo “1” > myid [zk@s131 data]$ cat myid 1 [zk@s132 conf]$ cd /home/zk/data/ [zk@s132 data]$ echo “2” > myid [zk@s132 data]$ cat myid 2 [zk@s133 conf]$ cd /home/zk/data/ [zk@s133 data]$ echo “3” > myid [zk@s133 data]$ cat myid 3
8、启动zookeeper服务
其他节点参照执行。 [zk@s131 bin]$ cd ~/zookeeper/bin/ [zk@s131 bin]$ ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/zk/zookeeper/bin/…/conf/zoo.cfg Starting zookeeper … STARTED
9、检查zookeeper状态
使用命令./zkServer.sh status和netstat -tnpl检查,可以发现132节点被选举为领导着,领导者多一个监听端口2888。
三、zoo.cfg配置文件参数说明
- 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选举的端口。
|