Zookeeper

Zookeeper相关概念

Zookeeper概述

Zookeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题。
Zookeeper本质上是一个分布式的小文件存储系统,主要的功能有统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等。

Zookeeper特性

  1. 全局数据一致
  2. 可靠性
  3. 顺序性
  4. 数据更新原子性
  5. 实时性

Zookeeper集群角色

  • Leader:Zookeeper 集群工作的核心
    事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;集群内部各个服务器的调度者。
    对于 create,setData,delete 等有写操作的请求,则需要统一转发给leader 处理,leader 需要决定编号、执行操作,这个过程称为一个事务。
  • Follower:跟随者
    处理客户端非事务(读操作)请求,转发事务请求给 Leader;参与集群 Leader 选举投票。
  • Observer:针对访问量比较大的 zookeeper 集群,还可新增观察者角色
    不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。

ZooKeeper数据模型


图中的每个节点称为一个 Znode。 Znode 兼具文件和目录两种特点;具有原子性操作;存储数据大小有限制,通常以 KB 为大小单位;通过路径引用,路径必须是绝对的,由斜杠字符来开头。

  • 每个 Znode 由 3 部分组成:
  1. stat:此为状态信息, 描述该 Znode 的版本, 权限等信息
  2. data:与该 Znode 关联的数据
  3. children:该 Znode 下的子节点
  • Znode 有两种,临时节点:会话结束,临时节点将被自动删除。临时节点不允许拥有子节点和永久节点
  • 存在四种类型的 Znode 节点
  1. PERSISTENT:永久节点
  2. EPHEMERAL:临时节点
  3. PERSISTENT_SEQUENTIAL:永久节点、序列化
  4. EPHEMERAL_SEQUENTIAL:临时节点、序列化

Zookeeper Watcher

客户端向服务端注册Watcher、服务端事件发生触发 Watcher、客户端回调 Watcher 得到触发事件情况

  • Watch机制特点
  1. 一次性触发
  2. 事件封装:WatchedEvent(通知状态(keeperState),事件类型(EventType)和节点路径(path))
  3. event 异步发送
  4. 先注册再触发

ZooKeeper 选举机制

  1. 全新集群选举
    投票数正好大于半数时,服务器 ID最大的服务器为leader
  2. 非全新集群选举
    逻辑时钟小的选举结果被忽略,重新投票;统一逻辑时钟后,数据 id 大的胜出;数据 id 相同的情况下,服务器 id 大的胜出

Zookeeper集群搭建

JDK 环境安装

#卸载openjdk
rpm -qa | grep java
rpm -e --nodeps  上一步查出来的软件
#上传 jdk 安装包
jdk-8u65-linux-x64.tar.gz
#解压安装包
tar zxvf jdk-8u65-linux-x64.tar.gz -C /root/apps
#配置环境变量
vim /etc/profile
export JAVA_HOME=/root/apps/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#刷新配置
source /etc/profile

Zookeeper集群搭建

#检查集群时间,下方窗口同时间发送
date
#同步时间
yum install -y ntp
ntpdate ntp6.aliyun.com#关闭防火墙
service iptables stop#注: 永久关闭防火墙[推荐使用]
chkconfig iptables off映射 cat /etc/hosts
IP地址 主机名
##下载安装包、解压tar -zxvf zookeeper-3.4.5.tar.gz
mv zookeeper-3.4.5 zookeeper
改一个名字##修改环境变量(注意:3台zookeeper都需要修改)
#注 : 1.写环境变量的时候最后不能带有 / 一定不能!!2. 一定要ssh 自己能通过
vim /etc/profile
export ZOOKEEPER_HOME=/root/apps/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile##修改Zookeeper配置文件cd /root/apps/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
#创建数据文件夹
mkdir -p /export/data/zkdata
vim zoo.cfg
添加内容:
//修改路径.改成自己的
dataDir=/export/data/zkdata
## (心跳端口、选举端口)
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888注: 最好这行配置后面不要加别的注释以及不要断开,防止启动不起来cd /export/data/zkdata
#注意这是刚才创建的data路径文件夹
在data文件夹下新建myid文件,myid的文件内容为(设置节点的id):echo 1 > myid##分发安装包到其他机器(这里是要把jdk 也要传过去,)scp -r /root/apps/zookeeper root@node2:/root/apps/    注:这里zookeeper 后面有没 / 把文件夹也传过去##修改其他机器的配置文件[记得创建数据文件夹]
修改myid文件
到node2上:修改myid为:2
到node3上:修改myid为:3
#设置三个机器的本机免密登录(三台机器配置一样):ssh-keygen -t rsa   ---一直回车即可
cd /root/.ssh/    ---生成了公钥和私钥
cat id_rsa.pub >> authorized_keys   ---将公钥追加到授权文件中
more authorized_keys   ---可以查看到里面追加的公钥
ssh node1#配置两两之间的免密登录:#将node1中的公钥复制到node2中
ssh-copy-id -i node2
#将node3中的公钥复制到node2中
ssh-copy-id -i node2
#把node2中的授权文件复制给node1和node3
scp /root/.ssh/authorized_keys node1:/root/.ssh/
scp /root/.ssh/authorized_keys node3:/root/.ssh/
一键启动:#!/bin/bashfor host in node1 node2 node3
do
{
echo $host start
ssh $host "source /etc/profile;/root/apps/zookeeper/bin/zkServer.sh start"
echo "$host zk is running"
}
done##查看集群状态
jps(查看进程)
zkServer.sh status(查看集群状态,主从信息)
如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查一键关闭:#!/bin/bash
for host in node1 node2 node3
do
{echo "$host zk is stopping"ssh $host "/root/apps/zookeeper/bin/zkServer.sh stop"
}
done

转载于:https://www.cnblogs.com/lifuwei/p/9364137.html

zookeeper相关知识与集群搭建相关推荐

  1. 技术实践|Redis基础知识及集群搭建(上)

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.本篇文章围绕Redis基础知识及集群搭建相关内容进行了分享,希 ...

  2. 大数据技术之_17_Storm学习_Storm 概述+Storm 基础知识+Storm 集群搭建+Storm 常用 API+Storm 分组策略和并发度

    大数据技术之_17_Storm学习 一 Storm 概述 1.1 离线计算是什么? 1.2 流式计算是什么? 1.3 Storm 是什么? 1.4 Storm 与 Hadoop 的区别 1.5 Sto ...

  3. 大数据学前准备--zookeeper详解与集群搭建(保姆级教程)

    前言 本人是才学完大数据的无业游民,我将会总结学习收获或发表自己的学习心得,期望给初学者也为自己今后复习提供一些帮助. 我将陆续发布大数据阶段所学,包括但不限于(hadoop,hive,hbase,p ...

  4. 一文带你了解Zookeeper基本概念、集群搭建、使用方法

    本文图文并茂的描述了:zookeeper是什么,演示了Zookeeper集群如何搭建.Zookeeper常用命令的使用.如何查看Zookeeper日志:详细描述了Zookeeper数据模型.watch ...

  5. zookeeper的使用与集群搭建以及原理应用

    1.zookeeper介绍     zookeeper是一个为分布式应用提供一致性服务的软件,它包含一个简单的原语集,分布式应用程序可以根据它实现同步服务,     配置维护和命名服务等.     基 ...

  6. Zookeeper之Linux分布式集群搭建及客户端shell命令操作

    一.准备至少三台Linux服务器及对应的jdk环境 1.服务器及jdk环境准备 服务器:至少三台Linux服务器 JDK环境:三台Linux服务器上都需要安装好jdk环境(jdk环境安装参考我的博客: ...

  7. 猿创征文|ZooKeeper(伪)集群搭建

    前言:zookeeper作为一款分布式协调中间件,其重要性不言而喻,因此需要保证其高可用性.所以一般都会搭建zookeeper集群,今天叶秋带领大家在一台服务器上搭建伪集群. 目录 1. 搭建要求 2 ...

  8. 基于ZooKeeper的Hadoop HA集群搭建

    集群的规划 Zookeeper集群: 192.168.142.12 (bigdata12) 192.168.142.13 (bigdata13) 192.168.142.14 (bigdata14) ...

  9. ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建

    在上一个小系列文章<ASP.NET Core on K8S学习初探>中,通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境,并初步尝试将ASP.NE ...

最新文章

  1. set在python中什么意思_python中set是什么意思
  2. J2me流媒体技术实现讨论[2]
  3. 小区物业费信息管理系统设计c++_没有入住需要交物业费吗?有没有办法不交物业费呢?法律专家解读...
  4. 线性表:链式队列算法实现
  5. android版本管理工具下载,apk应用管理app下载
  6. 一致性算法中的节点下限(转)
  7. JQuery-Ztree 树插件下载 与 快速入门
  8. 百度之星1004度度熊的午饭时光
  9. 黑苹果Win与Mac时间同步工具
  10. 牛腩新闻发布--触发器语句
  11. 2018TLC大会精彩回顾
  12. 基于AR虚拟现实技术的维基世界浏览器wikitude
  13. CVPR 2020 论文大盘点-图像修复Inpainting篇
  14. 新手如何运营好阿里国际站+产品标题组成
  15. Web安全 XXE漏洞的 测试和利用.(读取服务器的任何文件 和 收集服务器的内网信息.)
  16. slurm作业调度集群搭建及配置
  17. mysql创建数据库utf_MYSQL创建utf-8格式的数据库_MySQL
  18. STC15W4K32S4单片机ADC应用实现
  19. c#简易的金山打字游戏
  20. 阿里聚安全Webview安全攻防

热门文章

  1. e生保等待期什么意思_买了保险不知道赔什么?一文看懂【保险责任】
  2. c语言程序设计学习中的问题与对策,C语言程序设计学习中的问题与对策.pdf
  3. 网站点赞 评论 回复 数据库设计
  4. c++new时赋初值_如何把C++的源代码改写成C代码?
  5. ggplot2作图4
  6. stcc52单片机时钟电路_有备无患,单片机面试问题集
  7. 高中信息技术——进制与编码刷题点整理
  8. matlab 贝塞尔曲线,matlab实现贝塞尔曲线绘图pdf查看
  9. Spark数据倾斜是如何造成的
  10. 深度学习中拟合是什么意思?