zoukankan      html  css  js  c++  java
  • Zookeeper 分布式机器部署

      ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    一、Zookeeper的选举机制

      Zookeeper集群能保证自身的高可用,保证自身高可用的原理是,Zookeeper集群中的各个机器分为Leader和Follower两个角色,写入数据时,要先写入Leader,Leader同意写入后,再通知Follower写入。客户端读取数时,因为数据都是一样的,可以从任意一台机器上读取数据。

    这里Leader角色就存在单点故障的隐患,高可用就是解决单点故障隐患的。Zookeeper从机制上解决了Leader的单点故障问题,Leader是哪一台机器是不固定的,Leader是选举出来的。选举流程是,集群中任何一台机器发现集群中没有Leader时,就推荐自己为Leader,其他机器来同意,当超过一半数的机器同意它为Leader时,选举结束,所以Zookeeper集群中的机器数据必须是奇数。这样就算当Leader机器宕机后,会很快选举出新的Leader,保证了Zookeeper集群本身的高可用。

    二、写入高可用

    集群中的写入操作都是先通知Leader,Leader再通知Follower写入,实际上当超过一半的机器写入成功后,就认为写入成功了,所以就算有些机器宕机,写入也是成功的。

    三、读取高可用

    zookeeperk客户端读取数据时,可以读取集群中的任何一个机器。所以部分机器的宕机并不影响读取。

    zookeeper服务器必须是奇数台,因为zookeeper有选举制度,角色有:领导者、跟随者、观察者,选举的目的是保证集群中数据的一致性。

    四、安装zookeeper

    1. 解压安装包

    tar -zxvf  zookeeper-3.4.12.tar.gz -C /opt/software

    2. 修改配置

    拷贝conf下的zoo_sample.cfg副本,改名为zoo.cfg。zoo.cfg是zookeeper的配置文件:

    cp  zoo_sample.cfg zoo.cfg

    dataDir属性设置zookeeper的数据文件存放的目录:

    dataDir=/data/zookeeper

    指定zookeeper集群中各个机器的信息:

    server.1=master:2888:3888
    server.2=slave1:2888:3888
    server.3=slave2:2888:3888

     server后面的数字范围是1到255,所以一个zookeeper集群最多可以有255个机器。

    3. 创建myid文件

    在dataDir所指定的目录下创一个名为myid的文件,文件内容为server点后面的数字。

    [root@master software]#echo 1 >> data/myid

    4.分发 zookeeper 到其他机器

    [root@master software]# scp -r zookeeper-3.4.12 slave1:/opt/software/
    [root@master software]# scp -r zookeeper-3.4.12 slave2:/opt/software/

    5. 修改其他机器上的myid文件

    [root@slave1 data]# echo 2 > data/myid
    
    [root@slave2 data]# echo 3 > data/myid

    6. 启动zookeeper

    需要在各个机器上分别启动zookeeper。

    [root@master bin]# ./zkServer.sh start
    [root@slave1 bin]# ./zkServer.sh start
    [root@slave2 bin]# ./zkServer.sh start

     五、zookeeper命令

    进入zookeeper Shell

    在zookeeper根目录下执行 bin/zkCli.sh进入zk shell模式。

    zookeeper很像一个小型的文件系统,/是根目录,下面的所有节点都叫zNode。

    进入zk shell 后输入任意字符,可以列出所有的zookeeper命令

    查询zNode上的数据:get /zookeeper

    列出所有子zNode:ls /

    创建一个zNode: create /znode "demonode"

    删除znode : rmr  /znode

    退出shell模式:quit

  • 相关阅读:
    在jupyter notebook 添加 conda 环境的操作详解
    MySQL plugin 'caching_sha2_password' cannot be loaded
    mathtype公式转latex代码
    博客园如何插入latex公式
    pip使用国内源安装
    python读取XML格式文件并转为json格式
    7.用生成函数求解下列递归方程 f(n)=2f(n/2)+cn n>1 f(1)=0 n=1
    用生成函数求解下列递归方程 f(n)=2f(n-1)+1 n>1 f(1)=2 n=1
    《将博客搬至CSDN》
    111111111111111111
  • 原文地址:https://www.cnblogs.com/mymelody/p/9443480.html
Copyright © 2011-2022 走看看