ZooKeeper 搭建笔记

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

  实际工作中应用比较广泛,有必要自己搞一个玩玩,其安装也特别简单!按照说明书操作下就行了!!

  zookeeper下载地址参考: https://mirrors.cnnic.cn/apache/zookeeper/    , 建议不要直接下载源码,否则可能编译不成功,从而可能运行不起来。

ZooKeeper安装方式有三种,单机模式集群模式以及伪集群模式

  • 单机模式:ZooKeeper只运行在一台服务器上,适合测试环境;
  • 伪集群模式:就是在一台物理机上运行多个ZooKeeper 实例;
  • 集群模式:ZooKeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)

1. 配置文件:在conf目录下复制zoo_sample.cfg文件,创建一个配置文件zoo.cfg。

  cp zoo_sample.cfg zook.cfg

  

2. 更新配置文件选项(关键)

示例:

tickTime=2000
dataDir=/usr/local/zk/data
dataLogDir=/usr/local/zk/logs        
clientPort=2181

注意:以上路径的文件夹需要手动创建,且要赋予权限,并且不能放在/tmp文件夹。

关于zoo.cfg的配置,这里简单说明下:

  a.在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的,在配置文件中,可以按照这样的格式进行配置,每一行都代表一个机器配置:server.id=host:port:port,

其中,id被称为 Server ID,用来标识该机器在集群中的机器序列号。同时,在每台Zookeeper机器上,我们都需要在数据目录(即dataDir参数指定的那个目录)下创建一个myid文件,该文件只有一行内容,并且是一个数字,即对应于每台机器的Server ID 数字。

  b.在Zk的设计中,集群中所有机器上的zoo.cfg文件的内容都应该是一致的。因此最好使用svn或是git把此文件管理起来,确保每个机器都能共享到一份相同的配置。

  c.上面也提到了,myid文件中只有一个数字,即一个Server ID。例如,server.1的myid文件内容就是"1"。注意,清确保每个服务器的myid文件中的数字不同,并且和自己所在机器的zoo.cfg中server.id=houst:port:port的id一致。另外,id的范围是1~255。

  d.参数的意义:

    tickTime:默认值为3000,单位是毫秒(ms),可以不配置。参数tickTime用于配置Zookeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。例如,Zk中会话的最小超时时间默认是2*tickTime。

    dataDir:该参数无默认值,必须配置。参数dataDir用于配置Zookeeper服务器存储快照文件的目录。

    clientPort:参数clientPort用于配置当前服务器对外的服务端口,客户端会通过该端口和Zk服务器创建连接,一般设置为2181。

    initLimit:该参数默认值:10,表示是参数tickTime值的10倍,必须配置,且为正整数。该参数用于配置Leader服务器等待Follower启动,并完成数据同步的时间。Follower服务器在启动过程中,会与Leader建立连接并完成对数据的同步,从而确定自己对外提高服务的起始状态。leader服务器允许Follower在initLimit时间内完成这个工作。

    syncLimit:该参数默认值:5,表示是参数tickTime值的5倍,必须配置,且为正整数。该参数用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间。在Zk集群运行的过程中,Leader服务器会与所有的Follower进行心跳检测来确定该服务器是否存活。如果Leader服务器在syncLimit时间内无法获取到Follower的心跳检测响应,那么Leader就会认为该Follower已经脱离了和自己的同步。

    server.id:该参数无默认值,在单机模式下可以不配置。该参数用于配置组成Zk集群的机器列表,其中id即为Server ID,与每台服务器myid文件中的数字相对应。同时,在该参数中,会配置两个端口:第一个端口用于指定Follower服务器与Leader进行运行时通信和数据同步时所使用的端口,第二个端口测专门用于进行Leader选举过程中的投票通信。

    server.1=10.43.98.6:2888:3888  
    server.2=10.43.98.8:2888:3888
    server.3=10.43.98.18:2888:3888

 

3. 创建myid

  在dataDir(/usr/local/zk/data)目录创建myid文件

  Server0机器的内容为:0

  Server1机器的内容为:1

  Server2机器的内容为:2

echo "0">/usr/local/data/myid
echo "1">/usr/local/data/myid
echo "2">/usr/local/data/myid

4.启动服务器

  至此,所有Zk都已经基本配置完毕,可以使用 %ZK_HOME%/bin 目录下的zkServer.cmd脚本进行服务器的启动了,如:

zkServer.sh start
zkServer.sh start /opt/zookeeper/zoo1.cfg  # 指定配置文件启动

 

  如果没有报错,说明启动zk成功了。连接、检查状态:

zkCli.cmd -server 127.0.0.1:2181
zkServer.sh status

 

  搭建完成后,就可以配合其他项目运行了。真的很易用!!

posted @ 2018-08-28 09:47  阿牛20  阅读(304)  评论(0编辑  收藏  举报