zoukankan      html  css  js  c++  java
  • Linux系统运维之Zookeeper集群配置

    一、简介

      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
      

    本文来自博客园,作者:白日梦想家Zz,转载请注明原文链接:https://www.cnblogs.com/zzlain/p/6628221.html

  • 相关阅读:
    nginx日志格式字段
    set_include_path和get_include_path用法详解
    nginx try_files 详解
    ul ol li的序号编号样式
    PHP中报500错误时如何查看错误信息
    nginx的access.log文件详解
    一些常用服务命令和配置目录
    PHP 使用 Redis
    HTML5-indexedDB使用常见错误总结
    浏览器数据库 IndexedDB 入门
  • 原文地址:https://www.cnblogs.com/zzlain/p/6628221.html
Copyright © 2011-2022 走看看