博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zookeeper(1)——zookeeper服务器集群搭建配置
阅读量:5237 次
发布时间:2019-06-14

本文共 3446 字,大约阅读时间需要 11 分钟。

Zookeeper分布式集群管理系统

Authorxusy

参考教程:http://www.cnblogs.com/z-sm/p/5691752.html

1.zookeeper下载:

2.安装参照:

ZookeeperHadoop的开源子项目,在分布式系统架构中被大量运用,从而减少分布式架构的复杂度。典型应用的场景:数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、master选举、分布式锁、分布式队列。

分布式消息服务kafkaHbaseHadoop等分布式大数据处理都会用到zookeeperZookeeper是分布式服务框架,主要用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。

Zookeeper的核心是广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。

Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或领导者崩溃后,Zab就进入到了恢复模式,当领导者被选举出来,且大多数server完成了和leader的状态同步后,恢复模式就结束了。

状态同步保证了leaderserver具有相同的系统状态。为了保证事物状态的一致性,zookeeper采用了递增的事物id号(zxid)来标示事物。

所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标示leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标示当前属于那个leader的统治时期。低32位用于递增计数。

每个server在工作中都会有三种状态:

1、LOOKING:当前server不知道leader是谁,正在搜寻

2、LEADING:当前server即为选举出来的leader

3、FOLLOWINGleader已经选举出来,当前server与之同步

3.Zookeeper的安装模式

Zookeeper的安装分为三种模式:

A)、单机模式

B)、集群伪分布模式

C)、集群模式

4.开始安装

服务器集群为:192.168.56.100192.168.56.101192.168.56.102

 

建立文件上传及安装目录:mkdir /usr/local/zookeeper

 

每个服务器都上传zookeeper-3.3.6.tar.gz

执行:tar -zxvf zookeeper-3.3.6.tar.gz

改名:mv zookeeper-3.3.6 zookeeper

 

 

调整zoo.cnf文件

进入到cnf目录下,执行:cp zoo-simple.cnf zoo.cnf

 

 

打开zoo.cnf文件进行集群配置

 

# 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.

 

# dataDir=/tmp/zookeeper

 

dataDir=/home/zookeeper/data

 

dataLogDir=/home/zookeeper/logs

 

# the port at which the clients will connect

 

clientPort=10075

 

Server.100=192.168.56.100:2888:3888

 

Server.101=192.168.56.101:2888:3888

 

Server.102=192.168.56.102:2888:3888

 

 

 

由于dataDirdataLogDir 对应的目录为 /home/zookeeper/data;/home/zookeeper/logs

需要执行创建对应目录:mkdir -p /home/zookeeper/data;/home/zookeeper/logs

并且在/home/zookeeper/data目录下创建 myid 文件

三台服务器对应myid文件的中的数字分别为:100101102

创建myid文件命令:touch myid 或者 vi myid

 

 

执行 zkServer.sh start 开始zookeeper服务

 

 

执行 zkServer.sh status 查看zookeeper服务器状态,可以查看哪台服务为leader,哪些是follower

 

 

leader服务器中执行:zkCli.sh -server 192.168.56.100:2181,192.168.56.101:2181,192.168.56.102:2181

来连接zookeeper集群

 

 

连接成功后可以看到这样的日志输出:

 

 

从日志可以看出,客户端连接的是 102leader) 服务器(连接上哪台服务器的zookeeper进程是随机的)、客户端已经成功连接上了zookeeper集群

试验:当杀死leader服务器进程后,zookeeper自动进入了恢复模式,选择了 101 服务器作为了leader

 

 

问题待解决:启动zookeeper服务,没法生成zookeeper_server.pid文件

服务能够正常启动,但是没法创建zookeeper_server.pid 文件

网上各种方案尝试了,但是还是不行,希望后面能够找出好的解决方案。

 后来经过各种检查,终于发现了问题,那就是 zoo.cfg 不能出现空行,包括# 注释的行也不行,这也太不智能了,无奈只能讲所有的注释删掉。具体如下:

 

执行以上操作,我们完成了zookeeper的安装配置,即能够正常使用了

============================================================================================

参照:http://nileader.blog.51cto.com/1381108/932156

在使用zookeeper过程中,我们知道,会有dataDir dataLogDir 两个目录,分别用于snapshot和事务日志的输出。

正常运动过程中,ZK会不断的把快照数据及事物日志输出到这两个目录,并且如果没有认为操作的话,ZK自己是不会清理这些文件的,所以需要进行定时清理。我这边通过手写shell脚本来定时操作执行。

删除日志脚本,每天23:59分定时执行:

#!/bin/bash

 

#napshot file dir

dataDir=/home/zookeeper/data/version-2

#tran log dir

dataLogDir=/home/zookeeper/logs/version-2

#Leave 10 files

count=10

count=$[$count+1]

ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f

ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f

以上这个脚本定义了删除对应两个目录中的文件,保留最新的10个文件,可以将他写到crontab中,设置为每天23:59执行一次就可以了。

然后进入到该脚本文件目录 chmod +x zookeeperclean.sh 添加执行权限,否则会报错  Permission denied

 

开始设置定时

crontab -e

添加:59 23 * * * /home/zookeeper/zookeeperclean.sh

执行每天 23:59分准时执行

 

 

转载于:https://www.cnblogs.com/xushuyi/articles/7155471.html

你可能感兴趣的文章
poj 3164 最小树形图(朱刘算法)
查看>>
百度贴吧图片抓取工具
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
ajax post 传参
查看>>
2.1命令行和JSON的配置「深入浅出ASP.NET Core系列」
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
Android实现静默安装与卸载
查看>>
Http Header
查看>>
DataTable转换成IList
查看>>
数据结构(三十六)关键路径
查看>>
以太坊合约的自动化编译详解一
查看>>
末学者笔记--apache编译安装及LAMP架构上线
查看>>
Html列表标签
查看>>
Java8新特性。
查看>>
PAT——1035. 插入与归并
查看>>
JS 在元素后面添加新的元素
查看>>