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单机模式安装
- 安装JDK、配置环境变量、验证java -version。
- 下载、赋执行权限、解压。
(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/
- 配置
复制配置文件:
cp conf/zoo_sample.cfg conf/zoo.cfg
配置数据存储目录:
dataDir=/opt/modules/zookeeper-3.4.5/data
创建数据存储目录:
mkdir /opt/modules/zookpeer-3.4.5/data
- 启动
bin/zkServer.sh start
- 检测
查看状态: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 设定定时任务定时同步时间
- 设置系统时间与Bios时间同步
sudo vi /etc/sysconfig/ntpd
首行增加内容如下:
SYNC_HWCLOCK=yes
- 设置定时任务,定时同步时间
切入root用户键入:
crontab -e
在编辑框内输入以下内容:
0-9/10 * * * * /usr/sbin/ntpdate miaodonghua.host
也可以直接使用命令手动同步时间:
/usr/sbin/ntpdate miaodonghua.host
3. 设置开机启动crontab。
sudo chkconfig --level 35 crond on
- 启动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集群的配置及使用的主要内容,如果未能解决你的问题,请参考以下文章