zookeeper集群的配置及使用

Posted 正义飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper集群的配置及使用相关的知识,希望对你有一定的参考价值。

hadoop,spark,kafka交流群:224209501

本节所讲内容:

1) Zookeeper集群几个配置项
2) 如何启动Zookeeper各个节点和查看节点状态
3) Zookeeper 客户端命令行连接及基本命令使用(create、ls、get、rmr等命令)

zookeeper的基础介绍

Zookeeper从设计模式角度来看,是一个基于观察着模式设计的分布式服务管理框架,他负责存储和管理大家所关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,zookeeper就将负责通知已经在zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式。

应用场景

统一命名服务(Name Service).
配置管理(Configuration Management)
集群管理(Group Membership)
共享(Locks)/同步锁

1,Zookeeper单机模式安装

  1. 安装JDK、配置环境变量、验证java -version。
  2. 下载、赋执行权限、解压。

(1).下载地址:
zookeeper-3.4.5下载

(2).赋执行权限:

chmod u+x zookeeper-3.4.5.tar.gz

(3).解压:

tar -zxvf zookeeper-3.4.5.tar.gz -C /opt/modules/
  1. 配置
    复制配置文件:
cp conf/zoo_sample.cfg conf/zoo.cfg

配置数据存储目录:

dataDir=/opt/modules/zookeeper-3.4.5/data

创建数据存储目录:

mkdir /opt/modules/zookpeer-3.4.5/data
  1. 启动
    bin/zkServer.sh start
  1. 检测
    查看状态:bin/zkServer.sh status
Client Shell:bin/zkCli.sh


2,zookeeper配置参数详解

1,tickTime

这个时间是作为Zookeeper服务器之间或者客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一下心跳。

2,dataDir

Zookeeper保存数据的目录,默认情况下,Zookeeper将数据的日志文件也保存在这里。

3,clientPort

这个端口就是客户端连接Zookeeper服务器的端口。Zookeeper会监听这个端口,接受客户端的访问请求。

4,initLimit

这个配置项是用来配置zookeeper接受客户端的(这里所说的客户端不是用户连接Zookeeper服务器的客户端而是Zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后Zookeeper服务器还没有接到客户端的返回信息,那么表明这个客户端连接失败。总时间长度就是5*2000=10秒。

5,syncLimit

这个配置项标示Leader与Follower之间发送消息、请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是2*2000=4秒。

6,server.A=B:C:D

其中A是一个数字,标示这是第几号服务器;B是这个服务器的ip地址;C标示的是这个服务器与集群中的Leader服务器交换信息的端口;D标示的是万一集群中Leader服务器挂了,需要一个端口来进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于B都是一样,所以不同的Zookeeper实例通信端口号不能一样,所以要给他们分配不同的端口号。

7,myid(文件):

集群模式下配置一个文件myid,这个文件在daraDir目录下,这个文件里面就有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

8,ZooKeeper角色:

9,Zookeeper Client命令

命令:bin/zkCli.sh -server localhost:2181
ls ,get ,create,delete ,set .

3,时间同步

3.1 时间同步操作

查看时间服务器

sudo rpm -qa|grep ntpd


查看时间服务器运行状态

sudo service ntpd status

启动时间服务器

sudo service ntpd start

配置时间服务器开机启动

指令测试

3.2 时间服务器配置

执行指令:
sudo vi /etc/ntp.conf
打开配置文件配置如下内容:
(1). 修改网段为我们主机所在网段

    restrict 192.168.154.0  mask 255.255.255.0 nomodify notrap

(2). 增加下面注释内容

    #server 0.centos.pool.ntp.org
    #server 1.centos.pool.ntp.org
    #server 2.centos.pool.ntp.org

(3). 去掉以下注释

server  127.127.1.0     # local clock 
fudge 127.127.1.0 stratum 10

3.3 重启时间服务器

3.4 设定定时任务定时同步时间

  1. 设置系统时间与Bios时间同步
    sudo vi /etc/sysconfig/ntpd
首行增加内容如下:
    SYNC_HWCLOCK=yes
  1. 设置定时任务,定时同步时间
    切入root用户键入:
    crontab  -e

在编辑框内输入以下内容:

    0-9/10 * * * * /usr/sbin/ntpdate miaodonghua.host

也可以直接使用命令手动同步时间:

    /usr/sbin/ntpdate miaodonghua.host


3. 设置开机启动crontab。

  sudo  chkconfig --level 35 crond on
  1. 启动crontab
 sudo    service crond start  

执行后就与主机miaodonghua.host时间保持一致了。


4,Zooper分布式安装

4.1 解压zookeeper-3.4.5.tar.gz

    $tar -zxvf zookeeper-3.4.5.tar.gz /opt/app/

4.2 修改配置文件的名字。

    $mv conf/zoo_sample.cfg conf/zoo.cfg

4.3 配置。

1,创建数据存储目录。

mkdir -p /opt/app/zookeeper-3.4.5/data/zkData/

2,配置数据存储目录。(vi zoo.cfg)

dataDir=/opt/app/zookeeper-3.4.5/data/zkData

3,添加配置Zookeeper服务器的地址及编号

    server.1=miaodonghua.host:2888:3888
    server.2=miaodonghua.host1:2888:3888
    server.3=miaodonghua.host2:2888:3888

4,在虚拟机中创建对应的编号。
在命令行里输入:

vi data/zkData/myid

添加数字内容:1(根据第三步的配置填写这个数字)。

5,分发到另外两台机器。

 $scp -r zookeeper-3.4.5/ hadoop@miaodonghua1.host:/opt/app/
 $scp -r zookeeper-3.4.5/ hadoop@miaodonghua2.host:/opt/app/

5,zookeeper分布式集群测试

5.1 启动zookeeper

$bin/zkServer.sh start

5.2 查看zookeeper的状态

$bin/zkServer.sh status



5.3 登录进入zookeeper Client Shell

$bin/zkCli.sh -server miaodonghua.host

5.4 ls列出目录下文件

5.5 create创建文件


5.6 get获取文件或目录内容

5.7 rmr删除文件


5.8 quit退出ClientShell

以上是关于zookeeper集群的配置及使用的主要内容,如果未能解决你的问题,请参考以下文章

大数据之zookeeper集群配置

zookeeper简介及安装

Zookeeper 安装及集群配置注意点

走进大数据 | zookeeper-zookeeper的单节点及集群安装配置

zookeeper集群搭建及选举模式

Zookeeper集群及配置