一、简介

  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

1. ZooKeeper的基本运转流程

  1、选举Leader,选举机制大于1/2。
  2、同步数据。
  3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
  4、Leader要具有最高的执行ID,类似root权限。
  5、集群中大多数的机器得到响应并Follow选出的Leader。

2. Leader工作流程

  Leader主要有三个功能:  

  1.恢复数据;  
  2.维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型;
  3.Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不同的消息类型,进行不同的处理。PING消息是指Learner的心跳信息;REQUEST消息是Follower发送的提议信息,包括写请求及同步请求;ACK消息是Follower的对提议的回复,超过半数的Follower通过,则commit该提议;REVALIDATE消息是用来延长SESSION有效时间。

3. Follower工作流程

  Follower主要有四个功能:

  1. 向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息)

  2.接收Leader消息并进行处理;
  3.接收Client的请求,如果为写请求,发送给Leader进行投票;
  4.返回Client结果。

   Follower的消息循环处理如下几种来自Leader的消息:

  1.PING消息:心跳消息  

  2.PROPOSAL消息:Leader发起的提案,要求Follower投票
  3.COMMIT消息:服务器端最新一次提案的信息
  4.UPTODATE消息:表明同步完成
  5.REVALIDATE消息:根据Leader的REVALIDATE结果,关闭待revalidate的session还是允许其接受消息
  6.SYNC消息:返回SYNC结果到客户端,这个消息最初由客户端发起,用来强制得到最新的更新。
  

二、安装配置

1. 环境信息

IP:192.168.10.10 Hostname:LFTo-Zookeeper01
IP:192.168.10.11 Hostname:LFTo-Zookeeper02
IP:192.168.10.12 Hostname:LFTo-Zookeeper03

2. 安装配置

  安装JDK基础环境

[worker@LFTo-Zookeeper01 ~]$ cd  /home/worker/soft/
[worker@LFTo-Zookeeper01 soft]$ wget http://10.12.3.24/soft/jdk/jdk1.8.0_65.tar.gz
[worker@LFTo-Zookeeper01 soft]$ mkdir -p /home/worker/usr/local/
[worker@LFTo-Zookeeper01 soft]$ tar xf jdk1.8.0_65.tar.gz -C /home/worker/usr/local/
[worker@LFTo-Zookeeper01 soft]$ ln -s /home/worker/usr/local/jdk1.8.0_65 /home/worker/usr/local/jdk
[worker@LFTo-Zookeeper01 soft]$ vim ~/.bash_profile
#########JDK ENV#########
export JAVA_HOME=/home/worker/usr/local/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 生效环境变量
[worker@LFTo-Zookeeper01 soft]$ source ~/.bash_profile

  安装zookeeper,配置单点

[worker@LFTo-Zookeeper01 soft]$ wget http://10.12.3.24/upload/zhaobin/zookeeper/zookeeper-3.4.6.tar.gz
[worker@LFTo-Zookeeper01 soft]$ tar xf zookeeper-3.4.6.tar.gz -C ~/opt/
[worker@LFTo-Zookeeper01 soft]$ cd ~/opt/zookeeper-3.4.6/conf
[worker@LFTo-Zookeeper01 conf]$ cp zoo_sample.cfg zoo.cfg #修改配置文件
[worker@LFTo-Zookeeper01 conf]$ vim zoo.cfg
dataDir=/home/worker/opt/zookeeper_data/ #创建数据目录
[worker@LFTo-Zookeeper01 conf]$ mkdir -p /home/worker/opt/zookeeper_data/

  关闭、启动、重启服务等

[worker@LFTo-Zookeeper01 conf]$ /home/worker/opt/zookeeper-3.4.6/bin/zkServer.sh --help
JMX enabled by default
Using config: /home/worker/opt/zookeeper-3.4.6/bin/../conf/zoo.cfg
Usage: /home/worker/opt/zookeeper-3.4.6/bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

3. 集群配置

  在集群的每台服务器host中添加以下配置

[root@LFTo-Zookeeper01 ~]# vim /etc/hosts
192.168.10.10 LFTo-Zookeeper01
192.168.10.11 LFTo-Zookeeper02
192.168.10.12 LFTo-Zookeeper03

  修改配置文件,配置集群

[worker@LFTo-Zookeeper01 conf]$ vim zoo.cfg
server.1=LFTo-Zookeeper01:2888:3888
server.2=LFTo-Zookeeper02:2888:3888
server.3=LFTo-Zookeeper03:2888:3888
[worker@LFTo-Zookeeper01 conf]$ echo '1' >> /home/worker/opt/zookeeper_data/myid
.
.
.
.
[worker@LFTo-Zookeeper02 conf]$ echo '2' >> /home/worker/opt/zookeeper_data/myid
[worker@LFTo-Zookeeper03 conf]$ echo '3' >> /home/worker/opt/zookeeper_data/myid

  重启zookeeper服务

[worker@LFTo-Zookeeper01 conf]$ ~/opt/zookeeper-3.4.6/bin/zkServer.sh restart
  

Linux系统运维之Zookeeper集群配置的更多相关文章

  1. 《跟老男孩学Linux运维:Web集群实战》读书笔记

    Linux 介绍 Linux 安装 Linux 调优 Web 基础 Nginx 应用 LNMP 应用 PHP 缓存加速 Nginx 调优 MySQL 应用 NFS 网络文件共享 Nginx 反向代理与 ...

  2. 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器

    说明:大数据时代,传统运维向大数据运维升级换代很常见,也是个不错的机会.如果想系统学习大数据运维,个人比较推荐通信巨头运维大咖的分享课:https://url.cn/5HIqOOr,主要是实战强.含金 ...

  3. Linux系统运维笔记(五),CentOS 6.4安装java程序

    Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选  ru ...

  4. Linux系统运维笔记(四),CentOS 6.4安装 MongoDB

    Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  5. Linux系统运维笔记(四),CentOS 6.4安装Nginx

    Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...

  6. Linux系统运维笔记(三),设置IP和DNS

    Linux系统运维笔记(三),设置IP和DNS 手工配置静态的IP地址 也就是手工配置IP地址.子网掩码.网关和DNS. vi /etc/sysconfig/network-scripts/ifcfg ...

  7. Linux系统运维笔记(二),Linux文件编辑命令

    Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...

  8. Linux系统运维笔记(一),查看系统版本和设置系统时间

    Linux系统运维笔记 查看系统版本和设置系统时间 查看系统版本 lsb_release -a (适用于所有的linux,包括Redhat.SuSE.Debian等发行版,但是在debian下要安装l ...

  9. Linux系统运维笔记(6),CentOS 7.6双网卡路由配置

    Linux系统运维笔记(6),CentOS 7.6双网卡路由配置. 一,先确认系统版本: [root@localhost ~]# cat /etc/redhat-releaseCentOS Linux ...

  10. Linux系统运维相关的面试题 (问答题)

    这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题.   一.Linux操作系统知识 1.常见的Linux发行版本都有 ...

随机推荐

  1. Exchangis搭建安装

    项目简介 Exchangis是一个轻量级的.高扩展性的数据交换平台,支持对结构化及无结构化的异构数据源之间的数据传输,在应用层上具有数据权限管控.节点服务高可用和多租户资源隔离等业务特性,而在数据层上 ...

  2. MySQL数据库与Nacos搭建监控服务

    目录 Nacos部署 项目环境 快速开始 nacos2.2.0版本配置说明 MySQL部署 安装方式 Linux平台(CentOS-Stream-9)部署MySQL 调试防火墙管理工具 MySQL用户 ...

  3. [SpringBoot/JavaEE]SpringBoot启动与停用的4种方式

    SpringBoot版本: 2.1.6.RELEASE 1 启动 方式1 – IntelliJ IDEA - Windows 右键启动类SpringBootSampleApplication.java ...

  4. 在 Rainbond 上使用在线知识库系统zyplayer-doc

    zyplayer-doc 是一款适合企业和个人使用的WIKI知识库管理工具,提供在线化的知识库管理功能,专为私有化部署而设计,最大程度上保证企业或个人的数据安全,可以完全以内网的方式来部署使用它. 当 ...

  5. Java Stream常见用法汇总,开发效率大幅提升

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  6. Django终端打印执行的SQL语句

    1.queries查询 >>>obj = models.User.objects.filter(name='Mcoco')[0] >>>obj.group.name ...

  7. awk判断整除(包含小数和负数)

    awk判断整除常用的方法是用内置的int或者求余数的算符% 被整数整除 输出0-100之间能被9整除的整数 使用 num/9==int(num/9) 的判断方法可以很好实现. awk 'BEGIN{ ...

  8. [人脸活体检测] 论文: Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision

    Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision 论文简介 与人脸生理相关的rppG信号被研究者 ...

  9. Python 遍历整个列表

    操作列表 遍历整个列表,无论列表有多长,循环让列表中的每一个元素都采取一个或一系列相同的措施,从而高效地处理任何长度的列表,包含数以千至数百万个元素的列表. 遍历整个列表 通过for循环解决遍历 从列 ...

  10. [OpenCV-Python] 14 几何变换

    文章目录 OpenCV-Python:IV OpenCV中的图像处理 14 几何变换 14.1 扩展缩放 14.2 平移 14.3 旋转 14.4 仿射变换 14.5 透视变换 OpenCV-Pyth ...