前提:zookeeper 可視化WEB工具zkui依賴java環境,所以須要安裝jdk,同時zkui源碼要Maven編譯,須要安裝apache-maven.html
JDK下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmljava
Apache-maven下載地址:https://maven.apache.org/download.cgimysql
1.設置環境變量linux
[root@localhost App]# vim /etc/profile 在文件末尾添加以下: #set for java export JAVA_HOME=/App/java/jdk1.8.0_102 export PATH=$JAVA_HOME/bin:$PATH export PATH=$M2_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib #set for APR export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib #set for apache-maven export MAVEN_HOME=/App/apache-maven export PATH=${PATH}:${MAVEN_HOME}/bin
查看環境變量:git
[root@localhost App]# java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) [root@localhost App]# mvn -v Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00) Maven home: /App/apache-maven Java version: 1.8.0_102, vendor: Oracle Corporation, runtime: /App/java/jdk1.8.0_102/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
2.下載zkui 程序包github
[root@localhost /]# cd /App/ [root@localhost App]# yum -y install git [root@localhost App]# git clone https://github.com/DeemOpen/zkui.git Cloning into 'zkui'... remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 527 (delta 0), reused 0 (delta 0), pack-reused 526 Receiving objects: 100% (527/527), 480.75 KiB | 24.00 KiB/s, done. Resolving deltas: 100% (217/217), done. [root@localhost App]# ll zkui/ total 44 -rw-r--r--. 1 root root 2357 Apr 15 09:54 config.cfg drwxr-xr-x. 2 root root 61 Apr 15 09:54 docker drwxr-xr-x. 2 root root 114 Apr 15 09:54 images -rw-r--r--. 1 root root 11358 Apr 15 09:54 LICENSE-2.0.txt -rw-r--r--. 1 root root 416 Apr 15 09:54 Makefile -rw-r--r--. 1 root root 1746 Apr 15 09:54 nbactions.xml -rw-r--r--. 1 root root 5294 Apr 15 09:54 pom.xml -rw-r--r--. 1 root root 6216 Apr 15 09:54 README.md -rw-r--r--. 1 root root 43 Apr 15 09:54 run.sh drwxr-xr-x. 4 root root 30 Apr 15 09:54 src
3.編譯zkui,生成jar包,zkui源碼須要Maven編譯sql
[root@localhost App]# cd zkui/ [root@localhost zkui]# mvn clean install .................................編譯過程省略.......................................... [INFO] --- maven-install-plugin:2.4:install (default-install) @ zkui --- [INFO] Installing /App/zkui/target/zkui-2.0-SNAPSHOT.jar to /root/.m2/repository/com/deem/zkui/2.0-SNAPSHOT/zkui-2.0-SNAPSHOT.jar [INFO] Installing /App/zkui/pom.xml to /root/.m2/repository/com/deem/zkui/2.0-SNAPSHOT/zkui-2.0-SNAPSHOT.pom [INFO] Installing /App/zkui/target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar to /root/.m2/repository/com/deem/zkui/2.0-SNAPSHOT/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 17.670 s [INFO] Finished at: 2019-04-15T09:57:44+08:00 [INFO] ------------------------------------------------------------------------
編譯成功,此時生成兩個jar包,zkui-2.0-SNAPSHOT.jar和zkui-2.0-SNAPSHOT-jar-with-dependencies.jar,使用的是第二個jar包docker
[root@localhost zkui]# ll target/ total 8416 drwxr-xr-x. 2 root root 6 Apr 15 09:57 archive-tmp drwxr-xr-x. 5 root root 101 Apr 15 09:57 classes drwxr-xr-x. 4 root root 49 Apr 15 09:57 generated-sources drwxr-xr-x. 2 root root 28 Apr 15 09:57 maven-archiver drwxr-xr-x. 2 root root 89 Apr 15 09:57 surefire-reports drwxr-xr-x. 3 root root 17 Apr 15 09:57 test-classes -rw-r--r--. 1 root root 277170 Apr 15 09:57 zkui-2.0-SNAPSHOT.jar -rw-r--r--. 1 root root 8336864 Apr 15 09:57 zkui-2.0-SNAPSHOT-jar-with-dependencies.jar
4.修改配置文件apache
zkui運行生成的jar包,能夠直接運行,在運行該文件以前,咱們還須要修改zkui的配置文件config.cfg,config.cfg 文件中配置了zkui須要鏈接的zookeeper集羣的IP地址和端口,訪問UI的用戶名和密碼,以及zkui監聽的端口號vim
[root@localhost zkui]# vim config.cfg #Server Port serverPort=9090 #Comma seperated list of all the zookeeper servers zkServer=localhost:2181,localhost:2181 #Http path of the repository. Ignore if you dont intent to upload files from repository. scmRepo=192.168.31.43:2181 #Path appended to the repo url. Ignore if you dont intent to upload files from repository. scmRepoPath=//appconfig.txt #if set to true then userSet is used for authentication, else ldap authentication is used. ldapAuth=false ldapDomain=mycompany,mydomain #ldap authentication url. Ignore if using file based authentication. ldapUrl=ldap://<ldap_host>:<ldap_port>/dc=mycom,dc=com #Specific roles for ldap authenticated users. Ignore if using file based authentication. ldapRoleSet={"users": [{ "username":"domain\\user1" , "role": "ADMIN" }]} userSet = {"users": [{ "username":"admin" , "password":"manager","role": "ADMIN" },{ "username":"appconfig" , "password":"appconfig","role": "USER" }]} #Set to prod in production and dev in local. Setting to dev will clear history each time. env=prod jdbcClass=org.h2.Driver jdbcUrl=jdbc:h2:zkui jdbcUser=root jdbcPwd=manager #If you want to use mysql db to store history then comment the h2 db section. #jdbcClass=com.mysql.jdbc.Driver #jdbcUrl=jdbc:mysql://localhost:3306/zkui #jdbcUser=root #jdbcPwd=manager loginMessage=Please login using admin/manager or appconfig/appconfig. #session timeout 5 mins/300 secs. sessionTimeout=300 #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. #A bigger zkSessionTimeout means the connection will be held longer and resource consumption will be high. zkSessionTimeout=5 #Block PWD exposure over rest call. blockPwdOverRest=false #ignore rest of the props below if https=false. https=false keystoreFile=/home/user/keystore.jks keystorePwd=password keystoreManagerPwd=password
關於配置文件的說明:
(1)scmRepo=192.168.31.43:2181,192.168.31.44:2181,192.168.31.45:2181 注意若是是zk集羣,此處需填寫集羣各個成員服務器(即Zookeeper節點)的IP地址加端口號2181,我這裏的zookeeper 模式是standalone,所以只填寫本機IP地址便可。
若報KeeperErrorCode = ConnectionLoss for / 錯誤,增大zkSessionTimeout超時時間,設置zkSessionTimeout=20
(2)默認用戶信息
用戶名:Admin(Admin權限,支持CRUD操做)
密碼:manager
用戶名:appconfig(Readonly權限,支持讀取操做)
密碼:appconfig
(3)LDAP的配置
若是你想使用 LDAP 身份驗證,則提供 LDAP url。
這將優先於 roleSet property 文件認證。
ldapUrl=ldap://<ldap_host>:<ldap_port>/dc=mycom,dc=com
若是不提供此功能,則將使用默認 roleSet 文件認證。
5.啓動zkui
[root@localhost zkui]# nohup java -jar target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar & [1] 2560 [root@localhost zkui]# nohup: ignoring input and appending output to ‘nohup.out’ [root@localhost zkui]# netstat -tunpl |grep :9090 tcp6 0 0 :::9090 :::* LISTEN 2560/java [root@localhost zkui]#
6.瀏覽器訪問 http://192.168.31.43:9090/login 帳號admin 密碼manager
如下是我的的一些補充:
7.登陸zkui ,選擇導航「Host」 出現錯誤提示:KeeperErrorCode = NoNode for /appconfig/hosts 以下所示:
日誌錯誤信息以下:
查詢了該項目的Github https://github.com/DeemOpen/zkui/issues/61 並未找到解決方法;根據提示:根目錄下無節點/appconfig/hosts,既然根目錄下無/appconfig/hosts節點,那就手動建立;
[root@localhost App]# sh /App/zookeeper/bin/zkCli.sh -server 192.168.31.43:2181 Connecting to 192.168.31.43:2181 2019-04-15 11:04:27,148 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT 2019-04-15 11:04:27,151 [myid:] - INFO [main:Environment@100] - Client environment:host.name=localhost 2019-04-15 11:04:27,151 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_102 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/App/java/jdk1.8.0_102/jre 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/App/zookeeper/bin/../zookeeper-server/target/classes:/App/zookeeper/bin/../build/classes:/App/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/App/zookeeper/bin/../build/lib/*.jar:/App/zookeeper/bin/../lib/slf4j-log4j12-1.7.25.jar:/App/zookeeper/bin/../lib/slf4j-api-1.7.25.jar:/App/zookeeper/bin/../lib/netty-3.10.6.Final.jar:/App/zookeeper/bin/../lib/log4j-1.2.17.jar:/App/zookeeper/bin/../lib/jline-0.9.94.jar:/App/zookeeper/bin/../lib/audience-annotations-0.5.0.jar:/App/zookeeper/bin/../zookeeper-3.4.14.jar:/App/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/App/zookeeper/bin/../conf:.:/App/java/jdk1.8.0_102/lib/dt.jar:/App/java/jdk1.8.0_102/lib/tools.jar 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=:/usr/local/apr/lib:/usr/local/apr/lib:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA> 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-693.el7.x86_64 2019-04-15 11:04:27,153 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root 2019-04-15 11:04:27,154 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root 2019-04-15 11:04:27,154 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/App 2019-04-15 11:04:27,159 [myid:] - INFO [main:ZooKeeper@442] - Initiating client connection, connectString=192.168.31.43:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@67424e82 Welcome to ZooKeeper! JLine support is enabled 2019-04-15 11:04:27,220 [myid:] - INFO [main-SendThread(192.168.31.43:2181):ClientCnxn$SendThread@1025] - Opening socket connection to server 192.168.31.43/192.168.31.43:2181. Will not attempt to authenticate using SASL (unknown error) 2019-04-15 11:04:27,300 [myid:] - INFO [main-SendThread(192.168.31.43:2181):ClientCnxn$SendThread@879] - Socket connection established to 192.168.31.43/192.168.31.43:2181, initiating session 2019-04-15 11:04:27,314 [myid:] - INFO [main-SendThread(192.168.31.43:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 192.168.31.43/192.168.31.43:2181, sessionid = 0x1000001f2a00008, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: 192.168.31.43:2181(CONNECTED) 0] ls / [zookeeper] [zk: 192.168.31.43:2181(CONNECTED) 1] create /appconfig "my appconfig" Created /appconfig [zk: 192.168.31.43:2181(CONNECTED) 2] create /appconfig/hosts 192.168.31.43 Created /appconfig/hosts [zk: 192.168.31.43:2181(CONNECTED) 3] ls / [appconfig, zookeeper]
再次刷新、登陸發現正常:
接下來,就體驗一下經過zkui 來管理zookeeper集羣吧!