Zookeeper和zkui介绍以及部署

来源:互联网 发布:汉仪综艺简体 mac版本 编辑:程序博客网 时间:2024/06/06 12:34

ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) 、 蜜蜂(Hive) 、 小猪(Pig)  的管理员, Apache Hbase和 Apache Solr 以及LinkedIn sensei  等项目中都采用到了 Zookeeper。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,ZooKeeper是以Fast Paxos算法为基础,实现同步服务,配置维护和命名服务等分布式应用。Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理。

1.  Zookeeper简介

Zookeeper集群主要角色有Leader,Learner(Follower,Observer(当服务器增加到一定程度,由于投票的压力增大从而使得吞吐量降低,所以增加了Observer。)以及client:

(1)Leader:领导者,负责投票的发起和决议,以及更新系统状态

(2)Follower:接受客户端的请求并返回结果给客户端,并参与投票

(3)Observer:接受客户端的请求,将写的请求转发给leader,不参与投票。Observer目的是扩展系统,提高读的速度。

(4)Client:客户端,想Zookeeper发起请求。

Zookeeper的基本框架图如下:

 

 

2.  Zookeeper的部署

首先创建一个storm用户:

 

切换到storm用户下:

创建zookeeper目录:

 

将已下载好的zookeeper安装包放到zookeeper目录下。从主机向虚拟机中上传文件的方式很多,在此就不一一介绍。

接下来进入zookeeper目录解压安装包:

 

修改conf中zoo.cfg配置文件中的dataDir、dataLogDir、server.1

 

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

dataDir=/home/shaka/dep/zookeeper-3.3.6/data  (改成自己的目录)

# the port at which the clients will connect

clientPort=2181

# set logs

dataLogDir=/home/shaka/dep/zookeeper-3.3.6/logs  (改成自己的目录)

# set server

server.1=hostname:4887:5887   (改成自己的hostname或IP)

#server.2=10.162.219.52:4887:5887

#server.3=10.163.15.119:4887:5887

# add by shaka

# set max client connects

maxClientCnxns=300

在启动zookeeper之前先修改bin下的执行权限:

 

修改完权限后,我们来启动zookeeper:

 

在启动完成后,查看zookeeper是否启动成功以及启动后的状态:

 

启动zookeeper客户端:

 

zk命令行工具的一些简单操作如下:

  1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容

 

    2.创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串

 

    3.获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串

 

    4.修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置

 

    5.删除文件: delete /zk 将刚才创建的 znode 删除

 

    6.退出客户端: quit

 

    7. 帮助命令: help

 

3.  zkui的安装

首先安装编译工具mvn:

使用命令:wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz

下载最新maven安装包

 

之后将下载好的包解压到/usr/local目录下:

 

接下来配置maven的环境变量:

 

配置完成后更新一下.bash_profile

 

测试一下maven是否安装成功

 

完成maven的安装后,新建一个目录zkui将下载好的zkui压缩包放到zkui目录下并解压。解压后进入zkui目录下进行下一步操作。

 

下载安装成功后,执行ln -s target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar  zkui-2.0-SNAPSHOT-jar-with-dependencies.jar命令。

 

接下来修改config.cfg

 

 

zkServer=127.0.0.1:2181(这里ip设置为你自己的ip地址)

设置完成后就可以启动zkui

 

启动完成后可以通过jps -l查看是否启动。

 

同时也可以用浏览器登录查看可视化界面:

 

 

 

 

 

 

 zookeeper节点的可视化界面有很多种,我使用的是zkui,比较直观,而且可以导入文件,他的Git地址:                     https://github.com/DeemOpen/zkui。

使用

        1、 从github上可以下载下来,maven clean install成jar,运行zkui-2.0-SNAPSHOT.jar 或者直接在编译器中运行main函数,启动jetty插件。

        2、配置文件config.cfg  zookeeper相关配置如下 

  1. #Server Port  
  2. serverPort=9090  
  3. #Comma seperated list of all the zookeeper servers  
  4. zkServer=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  
  5. #Http path of the repository. Ignore if you dont intent to upload files from repository.  
  6. scmRepo=http://myserver.com/@rev1=  
  7. #Path appended to the repo url. Ignore if you dont intent to upload files from repository.  
  8. scmRepoPath=//appconfig.txt  
  9. #if set to true then userSet is used for authentication, else ldap authentication is used.  
  10. ldapAuth=false  
  11. ldapDomain=mycompany,mydomain  
  12. #ldap authentication url. Ignore if using file based authentication.  
  13. ldapUrl=ldap://<ldap_host>:<ldap_port>/dc=mycom,dc=com  
  14. #Specific roles for ldap authenticated users. Ignore if using file based authentication.  
  15. ldapRoleSet={"users": [{ "username":"domain\\user1" , "role": "ADMIN" }]}  
  16. userSet = {"users": [{ "username":"admin" , "password":"123456","role": "ADMIN" },{ "username":"appconfig" , "password":"appconfig","role": "USER" }]}  
  17. #Set to prod in production and dev in local. Setting to dev will clear history each time.  
  18. env=prod  
  19. jdbcClass=org.h2.Driver  
  20. jdbcUrl=jdbc:h2:zkui  
  21. jdbcUser=root  
  22. jdbcPwd=manager  
  23. #If you want to use mysql db to store history then comment the h2 db section.  
  24. #jdbcClass=com.mysql.jdbc.Driver  
  25. #jdbcUrl=jdbc:mysql://localhost:3306/zkui  
  26. #jdbcUser=root  
  27. #jdbcPwd=manager  
  28. loginMessage=Please login using admin/manager or appconfig/appconfig.  
  29. #session timeout 5 mins/300 secs.  
  30. sessionTimeout=300  
  31. #Default 5 seconds to keep short lived zk sessions. If you have large data then the read will take more than 30 seconds so increase this accordingly.   
  32. #A bigger zkSessionTimeout means the connection will be held longer and resource consumption will be high.  
  33. zkSessionTimeout=5  
  34. #Block PWD exposure over rest call.  
  35. blockPwdOverRest=false  
  36. #ignore rest of the props below if https=false.  
  37. https=false  
  38. keystoreFile=/home/user/keystore.jks  
  39. keystorePwd=password  
  40. keystoreManagerPwd=password  
  41. # The default ACL to use for all creation of nodes. If left blank, then all nodes will be universally accessible  
  42. # Permissions are based on single character flags: c (Create), r (read), w (write), d (delete), a (admin), * (all)  
  43. # For example defaultAcl={"acls": [{"scheme":"ip", "id":"192.168.1.192", "perms":"*"}, {"scheme":"ip", id":"192.168.1.0/24", "perms":"r"}]  
  44. defaultAcl=  

        serverPort访问zk ui的端口号,默认是9090,zkServer zookeeper集群节点,userSet:用户名角色及其密码设置,在这里设置的admin密码为123456。


        3、在linxu中启动jar,或者是在自己本地的编译器中启动main函数,输入localhost:9090,zookeeer中相关配置的节点就可以在可视化界面中看到。界面如下



 

原创粉丝点击