zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

一、Zookeeper的介绍

 官方:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

我的:

Yahoo开发开源、恭喜apache

动物管理员

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

二、Zookeeper搭建

一、单机模式

1、官网下载

wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz

  1. 解压tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz

3、修改conf  mv zoo_sample.cfg zoo.cfg

注意:

#zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,也会占用8080 端口

#在zoo.cfg中增加admin.serverPort=没有被占用的端口号,否则会启动失败

admin.serverPort=2182

 

启动报错:

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.

 

4、启动

sh zkServer.sh start

5、验证

sh zkServer.sh status

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

 

6、连接

sh zkCli.sh

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

 

7、如果你是搭建在阿里云服务器上则需要配置安全组,开放2181端口。开放后打开本机控制台执行telnet host port。

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

返回空白屏即可,到此为止单机版已经搭建成功。

 

 

 

二、集群模式

1、新建三台虚拟机(这一步可参看我往期的文章)

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

 

2、按照第一步在其中一台安装zookeeper,修改zoo.cfg文件,内容如下:

 

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/tmp/zookeeper

# the port at which the clients will connect

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.

#

# http://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

server.1=ip1:2188:2888

server.2=ip2:2188:2888

server.3=ip3:2188:2888

 

 

3、克隆安装好zookeeper的虚拟机:(这一步可参看我往期的文章)

4、在server.1=ip1:2188:2888的节点上执行echo "1" >/tmp/zookeeper/myid,报错则可能是没有文件夹文件则可以mkdir -p /tmp/zookeeper/   vim /tmp/zookeeper/myid   输入内容1

5、在server.2=ip2:2188:2888的节点上执行echo "1" >/tmp/zookeeper/myid,报错则可能是没有文件夹文件则可以mkdir -p /tmp/zookeeper/   vim /tmp/zookeeper/myid   输入内容2

6、在server.3=ip3:2188:2888的节点上执行echo "1" >/tmp/zookeeper/myid,报错则可能是没有文件夹文件则可以mkdir -p /tmp/zookeeper/   vim /tmp/zookeeper/myid   输入内容3

 

  1. 分别启动

sh zkServer.sh start

 

 

 

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

 

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

 

zookeeper第一章--zookeeper入门、zookeeper单机和集群的搭建

 

  1. 连接集群sh zkCli.sh -server host:ip,host:ip.....

 

集群角色介绍:

 

Leader

   Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO写操作都走leader,zk里面leader只有一个

Follower 
    Follower的逻辑就比较简单了。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。    另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。 帮助leader处理读请求,投票权

Observer 
    如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。 没有投票权利,可以处理读请求