一、简介

  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. 【前端黑魔法】浏览器打开任意可执行exe文件方法

    思路:通过注册表注册自定义URL协议执行bat脚本,将文件路径作为参数传入 环境:win10 前置问题与条件 问题1:可以从浏览器直接打开可执行文件吗? 答:不能.其实可以通过 ActiveXObje ...

  2. [Linux/Git]比较两份文件的差异

    Command vim -d fileA fileB 或 git diff <oldCommitId> <newCommitId> X Recommend Files Matc ...

  3. day06 循环和数据类型的内置方法

    循环加数据类型的内置方法 while 循环 for循环 range关键字 数据类型的内置方法 字符串的内置方法 while循环 while + continue #打印0-10的数字不打印6 n=0 ...

  4. 带你揭开神秘的javascript AST面纱之AST 基础与功能

    作者:京东科技 周明亮 AST 基础与功能 在前端里面有一个很重要的概念,也是最原子化的内容,就是 AST ,几乎所有的框架,都是基于 AST 进行改造运行,比如:React / Vue /Taro ...

  5. springboot自动装配大概原理

    自动装配: pom.xml spring-boot-dependence:核心都依赖在父类工程中! 我们在写入或者引入springboot依赖的时候,不需要指定版,因为有这些仓库的版本 启动器:--- ...

  6. 安装Nodejs,执行npm命令异常

    异常现象: 在安装完成Nodejs之后,使用npm install时提示异常: 使用cmd查看npm版本,也报同样的错误. "operation not permitted, mkdir ' ...

  7. [Tensorflow]模型持久化的原理,将CKPT转为pb文件,使用pb模型预测

    文章目录 [Tensorflow]模型持久化的原理,将CKPT转为pb文件,使用pb模型预测 一.模型持久化 1.持久化代码实现 convert_variables_to_constants固化模型结 ...

  8. C++ Primer 5th 阅读笔记:前言

    机器效率和编程效率 Its focus, and that of its programming community, has widened from looking mostly at machi ...

  9. 使用require.context实现优雅的预加载

    前言 在前端开发中,对页面花里胡哨度[注1]要求越高的页面,用到的图片.音频什么的就越多,比如什么结婚请柬.展会请柬.发布会宣传页.数据大屏.虽然现在浏览器不允许网页在没有用户交互的情况下播放音频,但 ...

  10. NC54585 小魂和他的数列

    题目链接 题目 题目描述 一天,小魂正和一个数列玩得不亦乐乎. 小魂的数列一共有n个元素,第i个数为Ai. 他发现,这个数列的一些子序列中的元素是严格递增的. 他想知道,这个数列一共有多少个长度为K的 ...