美文网首页
【zookeeper】zookeeper3.4.14 真·分布式

【zookeeper】zookeeper3.4.14 真·分布式

作者: Catke | 来源:发表于2020-03-13 10:42 被阅读0次

    ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。

    目录

    • 一、安装环境
    • 二、环境准备
    • 三、zookeeper分布式搭建步骤
    • 四、zookeeper基本使用
    • 五、图形界面管理
    • 六、参考并致谢

    一、安装环境

    操作系统: CentOS 7
    服务器规划:

    • 192.168.111.249 master
    • 192.168.111.247 node1
    • 192.168.111.248 node2

    zookeeper版本: zookeeper 3.4.14

    二、环境准备

    1、Java环境搭建配置

    yum安装java

    [root@bogon ~]# yum install java-1.8.0-openjdk* -y
    
    java环境变量配置

    which java定位到的是java程序的执行路径,而不是安装路径,经过两次-lrt最后的输出才是安装路径

    /etc/profile文件中追加三行
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64  
    export HADOOP_HOME=/home/hadoop-3.2.1  
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    刷新环境变量
    [root@bogon ~]# source /etc/profile
    
    2、修改主机名
    依次在/etc/hostname文件中,主节点写入master,从节点写入node1或node2

    依次在/etc/hosts文件中,将本机和所有节点的主机名写入
    使用ping相互测试,并保证能ping通


    3、配置节点之间免密登录

    效果就是在master上输入ssh node1即可登陆node1,否则开启集群服务时,master与node无法连接,会报出connection refused

    检查openssh-server是否已安装
    [root@bogon ~]# rpm -qa | grep ssh
    
    确保安装了openssh-server后,每台机器执行ssh-keygen -t rsa,然后回车(三次回车)
    生成的公钥私钥都保存在~/.ssh下,在master上将公钥放入authorized_keys,命令如下
    [root@bogon ~]# cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
    
    将master上的authorized_keys放到其它机器上
    [root@bogon ~]# scp ~/.ssh/authorized_keys root@node1:~/.ssh/
    [root@bogon ~]# scp ~/.ssh/authorized_keys root@node2:~/.ssh
    

    在master端使用 ssh node1测试,node2使用同样的方法测试

    三、zookeeper分布式搭建步骤

    1、下载zookeeper

    zookeeper各个版本下载地址:https://mirror.bit.edu.cn/apache/zookeeper/

    [root@master home]# wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    
    2、解压
    [root@master home]# tar zxvf zookeeper-3.4.14.tar.gz
    
    3、配置环境变量
    # 进入到配置文件,并在文件末尾追加zookeeper的环境变量
    [root@master home]# vim /etc/profle
    

    配置的环境变量如下,可以根据需要作出更改

    export ZOOKEEPER_HOME=/home/zookeeper-3.4.14
    PATH=$PATH:$ZOOKEEPER_HOME/bin:$PATH
    
    4、进入到解压出来的zookeeper目录,然后创建data目录
    [root@master home]# cd zookeeper-3.4.14  
    [root@master zookeeper-3.4.14]# mkdir data 
    
    5、备份默认的配置文件
    [root@master zookeeper-3.4.14]# cd conf  
    [root@master conf]# cp zoo_sample.cfg zoo.cfg
    

    配置文件和所在目录如下:

    6、编辑配置文件
    修改数据文件存放路径,将其设置为我们刚刚创建的data目录
    配置文件末尾追加节点的信息
    进入到刚刚创建的data目录,新建一个名为myid的文件,并在文件中写入1
    远程复制zookeeper

    将整个zookeeper目录远程使用scp命令复制到node1和node2节点上,并对node1和node2节点中的myid文件作出相应的修改(如node1节点是2,node2节点是3,其中1,2,3要对应配置文件中的server.1,server.2,server.3),同时环境变量也要记得改

    # 1、复制zookeeper目录到各个节点上
    [root@master home]# scp /home/zookeeper-3.4.14 node1:/home/
    [root@master home]# scp /home/zookeeper-3.4.14 node2:/home/  
    
    以下步骤就不一一将命令写出来了,方法跟刚刚配置的是一样的
    # 2、修改节点上的myid文件中的值(记得要跟配置文件中的server.X中的X的值要一样)
    
    # 3、将节点中的zookeeper各自加入到环境变量
    
    7、分别从各个节点启动

    启动前需要注意的一点是,zookeeper的日志文件zookeeper.out会随着输入启动命令时的目录不同而不同,例如我是在/home目录下启动zookeeper,那么启动之后它就会在/home目录创建一个zookeeper.out的日志文件,因此可以根据不同的需求去规划日志文件的存放目录

    # 以下命令各个节点都要执行(即各个节点都要启动)
    # 个人习惯是在data目录上存放日志文件,因此进入到data目录
    [root@master home]# cd /home/zookeeper-3.4.14/data  
    # 启动
    [root@master data]# zkServer.sh start 
    # 查看服务状态(主节点为leader,从节点为follower)
    [root@master data]# zkServer.sh status 
    # 查看进程状态
    [root@master data]# jps
    



    jps中显示的进程可能跟你们的不一致,因为我是在之前搭建了Hadoop的机子上直接搭建zookeeper,因此会有Hadoop的进程

    至此zookeeper的真·分布式搭建步骤已完毕

    四、zookeeper基本使用

    # 启动
    zkServer.sh start
    
    # 关闭  
    zkServer.sh stop
    
    # 查看服务状态  
    zkServer.sh status
    
    # 查看进程
    jps
    
    # 进入到zookeeper的交互界面
    zkCli.sh  
    
    # 以下命令基本都是在交互界面中
    
    # 列出全部命令  
    help  
    
    # 查看目录下的节点列表  
    ls /  
    
    # 创建一个节点/zk_test,并设置值为data1  
    create /zk_test data1 
    
    节点就像目录,可以一级一级建下去
    create /zk_test/test2 data2
        Created /zk_test/test2
    create /zk_test/test3 data3
        Created /zk_test/test3
    ls /zk_test
        [test2, test3]
    
    
    
    # 获取节点数据和更新信息 (以hbase节点为例) 
    get /hbase
    输出信息如下:
        cZxid = 0x800000002 --创建节点的id
        ctime = Thu Mar 12 16:07:37 CST 2020 --节点的创建时间
        mZxid = 0x800000002 --修改节点的ID
        mtime = Thu Mar 12 16:07:37 CST 2020 --修改节点的时间
        pZxid = 0x80000000c --子节点ID
        cversion = 8 --子节点的版本
        dataVersion = 0 --当前节点的版本
        aclVersion = 0 --权限的版本
        ephemeralOwner = 0x0 --判断是否为临时节点
        dataLength = 0 --数据长度
        numChildren = 6 子节点数量
    
    
    # 设置已存在节点的值
    set /zk_test/test2 data22  
    
    # 删除节点
    delete /zk_test/test2
    

    五、图形界面管理

    图形界面这里使用的是zkui
    相关的项目地址如下:
    某大神编译好的版本地址:https://github.com/zifangsky/zkui/releases
    源码地址:https://github.com/DeemOpen/zkui
    烂泥大神提供的源码地址:https://gitee.com/ilanni/zkui

    1、使用编译好的版本
    下载
    [root@master home]# wget https://github.com/zifangsky/zkui/releases/download/v2.0/zkui-2.0.zip
    
    安装解压工具
    [root@master home]# yum install -y unzip
    
    解压文件
    [root@master home]# unzip zkui-2.0.zip
    
    修改配置文件

    主要需要修改的地方有三处:
    • 修改监听的端口(也可以保持默认)
    • 修改zookeeper集群的主机(其中端口号可以从zookeeper的配置文件中查看)
    • 修改图形界面的用户登录密码(可以保持默认)
    赋予脚本执行的权限并启动
    [root@master zkui-2.0]# chmod 777 start.sh
    [root@master zkui-2.0]# start.sh --这是linux下的启动命令,Windows下是双击start.bat
    
    网页打开访问地址(zkui部署的服务器ip:监听端口号)
    使用账号密码登录即可
    2、使用源码版本
    安装maven(步骤省略)
    安装git(步骤省略)
    使用git将项目文件下载
    git clone https://github.com/DeemOpen/zkui.git
    
    进入到项目目录,并编译安装
    cd zkui/ 
    mvn clean install
    
    修改配置文件

    主要需要修改的地方有三处:
    • 修改监听的端口(也可以保持默认)
    • 修改zookeeper集群的主机(其中端口号可以从zookeeper的配置文件中查看)
    • 修改图形界面的用户登录密码(可以保持默认)
    赋予脚本执行的权限并启动
    [root@master zkui-2.0]# chmod 777 start.sh
    [root@master zkui-2.0]# start.sh --这是linux下的启动命令,Windows下是双击start.bat
    
    网页打开访问地址(zkui部署的服务器ip:监听端口号)
    使用账号密码登录即可
    zkui部署过程中遇到的问题
    问题:

    登录zkui ,选择导航“Host” 出现错误提示:KeeperErrorCode = NoNode for /appconfig/hosts 如下所示:


    原因:

    没有/appconfig/hosts这个节点导致

    解决方案:

    1、进入到leader的zookeeper交互界面

    [root@master /home]# zkCli.sh
    

    2、手动创建节点

    create /appconfig "my appconfig"
    create /appconfig/hosts 123456
    

    3、重新刷新以下web页面

    六、参考并致谢

    https://mirror.bit.edu.cn/apache/zookeeper/
    https://blog.csdn.net/raoxiaoya/article/details/99198348
    https://www.cnblogs.com/smail-bao/p/7794636.html
    https://www.cnblogs.com/caoshousong/p/10709371.html

    相关文章

      网友评论

          本文标题:【zookeeper】zookeeper3.4.14 真·分布式

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