美文网首页
zookeeper集群部署方式(leader+follower+

zookeeper集群部署方式(leader+follower+

作者: DoubleBin | 来源:发表于2019-12-09 00:12 被阅读0次

    一、简介

            zookeeper是一种分布式过程协同技术。zookeeper服务器集群存在三种节点类型:leader(群首)、follower(追随者)、观察者(observer)。其中,leader和follower构成zookeeper集群的“法定人数”(参与leader的选举、响应leader提议),而observer为用于提高读取吞吐量的特殊服务器(不参与leader选举、不需要确认提议消息、不需要发送ack消息给leader服务器以及持久化事务到硬盘)。

            本文介绍zookeeper的集群部署方式,采用3台“法定”主机(1个leader、2个follower)+1台非“法定”主机(1个observer)来实现。

    二、环境准备

    2.1 机器准备

    host ip os myid 备注
    zk.master 192.168.90.171 Ubuntu 18.04.2 LTS 10
    zk.slave1 192.168.90.172 Ubuntu 18.04.2 LTS 1
    zk.slave2 192.168.90.173 Ubuntu 18.04.2 LTS 2
    zk.observer 192.168.90.174 Ubuntu 18.04.2 LTS 9 观察者机器

    其中,前三台为“法定”人选用于leader和follower,最后一台用于observer。表格中myid为zookeeper的节点标记,需要在zookeeper的data目录下的myid文件中配置。

    4台机器均需要安装好jdk,本文安装的是jdk1.8,安装方法不再赘述。

    2.2 关闭防火墙

    本文采用ubuntu18 server版作为集群机器,Ubuntu 18.04.2 LTS附带UFW默认为禁用状态,相关操作命令:

    # 查看状态
    root@zk.master:~# ufw status verbose
    # 激活
    root@zk.master:~# ufw enable
    # 关闭
    root@zk.master:~# ufw disable
    
    

    将2.1中4台机器的防火墙都进行关闭。

    2.2 修改主机名

    Ubuntu 18.04.2 LTS中不能通过/etc/hostname直接修改主机名(重启后会恢复到安装时的设置),需要先修改/etc/cloud/cloud.cfg文件:

    sudo vim /etc/cloud/cloud.cfg
    

    找到preserve_hostname将该属性值由false修改为true:

    # The top level settings are used as module                                
    # and system configuration.                                                
                                                                               
    # A set of users which may be applied and/or used by various modules       
    # when a 'default' entry is found it will reference the 'default_user'     
    # from the distro configuration specified below                            
    users:                                                                     
       - default                                                               
                                                                               
    # If this is set, 'root' will not be able to ssh in and they               
    # will get a message to login instead as the default $user                 
    disable_root: true                                                         
                                                                               
    # This will cause the set+update hostname module to not operate (if true)  
    preserve_hostname: true                                                    
                            
    

    修改/etc/hostname文件,设置主机名:

    sudo vim /etc/hostname 
    

    编辑文件内容为主机名后,进行重启:

    sudo reboot
    

    可以用hostnamectl set-hostname ${hostname}命令临时设置主机名

    将2.1中的4台机器的主机名都进行修改。

    2.3 在每台机器上配置主机名解析

    编辑/etc/hosts:

    sudo vim /etc/hosts
    

    加入如下内容:

    192.168.90.171    zk.master                                                
    192.168.90.172    zk.slave1                                                
    192.168.90.173    zk.slave2                                                
    192.168.90.174    zk.observer 
    

    2.4 上传zookeeper安装包到各个机器

    2.4.1 下载zookeeper

    本文下载从官网下载zookeeper,版本为3.5.5 ,地址: https://apache.org/dist/zookeeper/zookeeper-3.5.5/

    2.4.2 上传到各台机器

    将下载的apache-zookeeper-3.5.5-bi
    n.tar.gz包上传到各台机器的/opt目录,并执行解压:

    tar -zxvf apache-zookeeper-3.5.5-bi
    n.tar.gz
    

    2.5 创建hadoop用户组和用户

    ps: 每台机器均执行

    2.5.1 创建用户组
    sudo groupadd hadoop
    
    2.5.2 创建用户
    #创建hadoop用户
    sudo useradd -m hadoop -g hadoop -s /bin/bash
    #设置hadoop用户密码
    sudo passwd hadoop 
    #把root加入hadoop分组
    sudo usermod -a -G hadoop root
    
    2.5.3 更改zk目录所属用户及分组
    chown -R hadoop:hadoop /opt/apache-zookeeper-3.5.5-bin/
    

    2.6 创建zookeeper的data和logs目录

    # 切换到hadoop用户运行
    su hadoop
    # 切换到zookeeper目录
    cd /opt/apache-zookeeper-3.5.5-bin
    # 创建data目录和logs目录
    mkdir data
    mkdir logs
    

    三、zookeeper配置

    3.1 配置zoo.cfg

    ps:每台机器都执行

    cd /opt/apache-zookeeper-3.5.5-bin/conf
    cp zoo_sample.cfg zoo.cfg
    vi /opt/zookeeper/zoo.cfg
    

    内容如下:

     # tickTime表示服务器之间或客户端与服务器之间心跳的时间间隔,单位为毫秒
     tickTime=2000
     # follower与leader的初始连接心跳数
     initLimit=10
     # follower与leader请求和应答的最大心跳数
     syncLimit=5
     # 快照数据保存目录
     dataDir=/opt/apache-zookeeper-3.5.5-bin/data
     # 日志保存目录
     dataLogDir=/opt/apache-zookeeper-3.5.5-bin/logs
     # 客户端连接端口
     clientPort=2181
     # 客户端最大连接数,默认为60个
     maxClientCnxns=60
     # 默认为false,设置成true,zk将监听所有可用ip地址的连接
     quorumListenOnAllIPs=false
     # 服务器节点配置,格式为:
     # server.${myid}=${host}:${leader和follower通信端口}:${选举端口}(observer节点最后加上:observer )
     server.10=zk.master:2888:3888
     server.1=zk.slave1:2888:3888
     server.2=zk.slave2:2888:3888
     server.9=zk.observer:2888:3888:observer 
    
    

    上述配置在每台机器都进行设置,可在zk.master机器配置完成后执行scp命令复制到其它机器,以复制到zk.slave1机器为例:

    scp -R /opt/apache-zookeeper-3.5.5-bin/conf/zoo.cfg  zk.slave1:/opt/apache-zookeeper-3.5.5-bin/conf/
    

    3.2 observer机器配置

    3.1中的配置是集群每台机器都进行配置,针对observer角色配置,在zk.observer机器的zoo.cfg上单独添加:

    peerType=observer 
    

    以此配置观察者角色。(实测在zookeeper3.5.5版本中不配置这行,观察者角色也能启动成功,读者可以验证下)

    3.3 配置myid

    分别配置各个机器的myid:10、1、2、9,以zk.master机器为例:

    cd /opt/apache-zookeeper-3.5.5-bin/data
    echo 10 > myid
    

    其它类推。

    四、zookeeper命令

    4.1 配置环境变量

    编辑/etc/profile文件:

    sudo vim /etc/profile
    

    在文件最后加入如下配置:

    export ZOOKEEPER_HOME=/opt/apache-zookeeper-3.5.5-bin  
    export PATH=$ZOOKEEPER_HOME/bin:$PATH   
    

    这样可以在终端直接执行zookeeper命令.

    4.2 zookeeper启动

    在所有节点配置完上述配置后,继续在所有节点以hadoop用户启动zookeeper:

    zkServer.sh start 
    

    可通过zkServer.sh status命令查看zookeeper状态, 例如:

    hadoop@hadoop-4:~$ zkServer.sh status                                      
    ZooKeeper JMX enabled by default
    Using config: /opt/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost.
    Mode: leader
    

    上面结果表示该节点启动成功且节点类型为leader。

    通过jps命令可以查看zookeeper的java进程为QuorumPeerMain:

    hadoop@hadoop-4:~$ jps
    42807 Jps
    42682 QuorumPeerMain
    

    4.2 zkServer.sh其它命令

    执行zkServer.sh -h命令可以看到zkServer.sh命令可选项:

    hadoop@hadoop-4:~$ zkServer.sh -h                                          
    ZooKeeper JMX enabled by default
    Using config: /opt/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
    Usage: /opt/apache-zookeeper-3.5.5-bin/bin/zkServer.sh [--config <conf-dir>
    ] {start|start-foreground|stop|restart|status|print-cmd}
    

    4.3 zookeeper客户端命令

    在zookeeper客户端机器上,通过执行zkCli.sh -server ${host}:${port}命令连接到服务端。例如:

    zkCli.sh -server zk.slave1:2181
    

    执行完后进入zookeeper的cli终端,最后显示:

    [zk: zk.slave1:2181(CONNECTED) 0] 
    

    执行ls /可显示根目录。

    相关文章

      网友评论

          本文标题:zookeeper集群部署方式(leader+follower+

          本文链接:https://www.haomeiwen.com/subject/hgamgctx.html