Zookeeper知识汇总(含分布式安装、配置)

------------ 本文来自 阿P官方博客

思考1:Zookeeper能解决大数据什么问题?

一、概述

Apache提供的开源的、分布式的用于服务协调的一套框架
    这里可以不用懂,随着深入学习,我们就知道Zookeeper到底有什么用。此处只是让大家有这个概念,后面会深入理解。
早期是根据Google关于Chubby Lock的论文来实现的。

二、Zookeeper分布式下的问题

什么是分布式?
    一个集群中,多个节点共同组成一个系统。或者说是本来需要一个节点去处理的问题,现在分成了很多个节点协同处理。
分布式下,若每个结点都发送自己的指令,造成逻辑混乱怎么办?
    故需提供对外接收请求提供统一的操作的管理节点。
若管理节点出现单点故障怎么办?
    为了避免管理节点出现单点故障,需要设置管理节点的集群
怎么确定管理节点?
    管理集群需要设置一个主节点,需要确定一套选举算法,选出一个主节点。
管理集群中,节点出现问题,怎么恢复、处理?
    管理集群需要进行崩溃恢复
    在从节点中重新选择主节点
管理集群消息不统一怎么办?
    管理集群之间各个节点需要进行实时共享

四、Zookeeper特点

zookeeper树状结构存储 - Znode树
根节点为 /
每一个子节点称之为znode节点
所有的节点路径,必须以根节点为起始
每一个持久节点下可以挂载节点
Znode存在磁盘和内存中
    Znode存在内存中的目的:查询速度更快
    Znode存在磁盘中的目的:崩溃恢复
Znode磁盘中的存储位置由dataDir路径决定
Zookeeper存在事务概念
    对每一次的写操作创建一个递增的事务ID(Zxid)

五、Zookeeper-Client命令

查看节点目录:ls 节点
创建:create /节点名
    -e:临时节点
    -s:创建顺序节点
删除:delete /节点【必须删除空节点】
递归删除:rmr /节点
查看:get /节点
    -s:查看节点详细信息
修改:set /节点 '内容'

六、节点信息详解

命令:get -s Znode
返回值:
    cZxid:创建事务ID
    ctime:创建时间
    mZxid:修改事务ID
    mtime:修改时间
    pZxid:子节点的增删事务ID,全局
    cversion:子节点的增删次数
    dataVersion:数据版本,修改次数
    aclVersion:权限修改次数
    ephemeralOwner:是否是临时节点。持久节点固定为0。临时节点为sessionid
    dataLength:数据字节个数
    numChildren:子节点个数

七、Zookeeper节点类型

节点持久性划分
    持久节点(默认节点)
    临时节点
    客户端退出,该结点删除。
节点顺序类型
    顺序节点
    非顺序节点

八、选举机制(以leader节点挂了为例)

第一个阶段:数据恢复阶段
    每个节点会找寻当前节点中的最大事务id
第二个阶段:选举阶段
    刚开始时,在集群中每个节点都会推荐自己做leader。
    将自己的信息发送给其他节点,最后胜出的为leader,失败的做follower。
        节点信息:
            最大事务ID:mzxid
            选举编号:myid
        逻辑时钟值:保证所有选举在同一轮次上
        比较原则
            事务ID谁大谁胜出
            事务ID一致时,myid谁大谁胜出
            选举的过半性:当某个结点胜过1半的节点(包括宕机的)时,就会成为leader
            当集群中已经选举出leader,后续添加的节点,不再考虑被选举成leader。【一个集群中,只需要启动一半节点,就会选举出leader】

九、节点状态

looking/voting:选举状态
follower:追随者
leader领导者
observer:观察者

十、脑裂

什么是脑裂?
    在集群中出现多leader时,这种情况称之为脑裂
产生脑裂的原因
    网络隔离导致多leader
    ledaer主机宕机后重启。
解决手段:
    过半存活性
        在zookeeper集群中,只有半数以上的节点存活,才会对外提供服务。
Tips:zookeeper节点一般是奇数个。

十一、安装方式

单机安装:只在一个节点上安装,只能提供部分功能。
伪分布式:只在一个节点上模拟集群环境
完全分布式:在集群环境中安装【本文列出三节点集群安装方式】

十二、单机安装(过程仅供有经验开发人员参考)

下载安装JDK1.8
下载并解压zookeeper
复制./conf/zoo_sample.cfg为zoo.cfg
修改zoo.cfg里的dataDir内容为你想要的存储路径
启动zookeeper:./bin/zkServer.sh start
注意:
    3.5.0(一说3.5.5)以后的官方版本,需要下载.bin.xxx的文件
    启动状态查询:./bin/zkServer.sh status

十三、三节点zookeeper完全分布式搭建流程【傻瓜式】

虚拟机安装配置
    利用vmware创建虚拟机(略)
        配置:centos7 + 1core + 1G内存 + 20G硬盘 + NAT模式
        centos7镜像地址(如果下载慢,可以使用NeatDownload Manager开启多线程下载):http://mirrors.aliyun.com/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
        注意:
            实际的内存、硬盘分配看你物理机的情况。
    配置镜像源
            参考:https://blog.csdn.net/qq_43054078/article/details/83275042
        配置静态IP
            mac版本配置参考:https://blog.csdn.net/p01114245/article/details/94382979
        计划三节点静态ip分别为
            节点1:172.16.172.197(目前操作的节点)
            节点2:172.16.172.196
            节点3:172.16.172.195
        配置主机名(需要重新登录,才会生效)
            hostnamectl set-hostname zk01
        配置hosts文件:
            vim /etc/hosts:加入以下内容
                172.16.172.197 zk01
                172.16.172.196 zk02
                172.16.172.195 zk03
        配置ssh免密登录
            生成秘钥:ssh-keygen
            拷贝秘钥到本机:ssh-copy-id root@zk01
        注意
            虚拟机安装时,很多可用命令未下载。例如:wget、ifconfig(net-tools)、vim等。此时可先配置静态ip,配完后用scp命令,将下载好的镜像源手动导入服务器。再利用yum安装必要的服务。
下载安装 JDK1.8
    yum install -y java-1.8.0-openjdk.x86_64
    yum install -y java-1.8.0-openjdk-devel.x86_64
    Tips:查看jdk安装目录命令:ls -lrt /etc/alternatives/java
Zookeeper安装、解压、配置
    下载:wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8.bin.tar.gz
    解压安装:
        tar -zxvf apache-zookeeper-3.5.8.bin.tar.gz -CP /usr/local
        mv /usr/local/apache-zookeeper-3.5.8 /usr/local/zookeeper
    配置命令:
        cd /usr/local/zookeeper/conf
        cp zoo_sample.cfg zoo.cfg
        vim zoo.cfg:加入或修改以下四行
            dataDir=/data/zookeeper/tmp
            server.1=zk01:2888:3888
            server.2=zk02:2888:3888
            server.3=zk03:2888:3888
        vim /data/zookeeper/tmp/myid:加入以下内容
            1
    测试:
        启动:../bin/zkServer.sh start
        jps 
            查看是否有QuorumPeerMain进程出现。
    注意:
        请记住这个url(https://www.apache.org/),如果你记不住这个地址,请不要再继续学了,赶紧回家种地吧。
        3.5.5及以后的版本,必须下载.bin.tar.gz才能使用。下载的.tar.gz只是源码。
克隆三台虚拟机
    zk01 关机。完全克隆
    修改节点2、3的网卡配置
    分别修改两节点 /etc/sysconfig/network-scripts/ifcfg-ens33 里的IPADDR 为我们刚刚计划的ip(略)
        重启网卡:systemctl restart network
    修改节点2、3的Zookeeper配置
    只需要修改 /data/zookeeper/tmp/myid文件下的对应编号为本机器编号
        分别启动节点2、3的zookeeper(略)
    修改节点2、3的主机名为zk02、zk03
        hostnamectl set-hostname 主机名
        exit:退出用户重新登录
    关闭三台机器的防火墙(有条件的,可以配置防火墙策略)
        systemctl stop firewalld
测试
    /usr/local/zookeeper/bin/zkServer.sh status 
        会看到三节点哪个是follower和leader
    在节点1上操作
        /usr/local/zookeeper/bin/zkCli.sh
        create /zoo_test
    在节点2或者节点3上操作
        /usr/local/zookeeper/bin/zkCli.sh
        ls /
            会看的节点2、3都有 zoo_test
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,271评论 6 524
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,533评论 3 405
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,580评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,203评论 1 303
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,204评论 6 401
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,664评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,014评论 3 431
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,991评论 0 280
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,536评论 1 326
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,558评论 3 347
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,678评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,267评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,997评论 3 341
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,429评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,580评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,259评论 3 382
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,744评论 2 366