ZooKeeper linux下安装与配置
1.配置java环境变量
这部分主要分为两个内容,一是卸载OpenJDK,二是安装Sun JDK。
1.1卸载OpenJDK
1.1.1 查看Linux自带的JDK是否已安装
安装好的CentOS会自带OpenJDK,用命令java -version,会有如下信息:
java version "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-b09)
OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode)
最好先卸载掉OpenJDK,然后在安装sun公司的JDK。
使用命令查看 rpm -qa | grep java,显示如下信息:
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
1.1.2 卸载
#rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
#rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
如果出现找不到OpenJDK source的话,那么还可以这样卸载:
#yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
#yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
1.2 安装JDK
1.2.1 安装
笔者安装的是JDK1.9,下载链接,jdk-9.0.1_linux-x64_bin.tar.gz。将jdk-9.0.1_linux-x64_bin.tar.gz解压到任意目录,下面是笔者的示例:
#tar -zxvf jdk-8u65-linux-i586.tar.gz -C /usr/local/
1.2.2 配置环境变量
# vi /etc/profile
在最后加入以下几行:
export JAVA_HOME=/usr/java/jdk1.6.0_10
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#reboot 重启机器配置生效,若不重启,则需每打开一个控制窗口,就需要调用 #source /etc/profile 命令,使配置生效,所以重启比较好。
用命令java -version,会有如下信息:
[root@CentOS6 zookeeper-3.4.10]# java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
至此Sun JDK安装完毕。
2.ZooKeeper的安装与配置
2.1 安装ZooKeeper
下载ZooKeeper,下载地址,zookeeper-3.4.10.tar.gz。
#tar -zxvf jdk-8u65-linux-i586.tar.gz -C /usr/local/
2.2 配置ZooKeeper
进入shell,变更目录(cd)到项根目录下,重命名配置文件:
#mv conf/zoo_sample.cfg conf/zoo.cfg
虽然是可选的,最好还是把data目录移出temp目录,以防止ZooKeeper填满了根分区(root partition)。可以在zoo.cfg文件中修改这个目录的位置。
dataDir=/users/me/zookeeper
3.测试
3.1 启动服务器
# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
这个命令会使得ZooKeeper服务器在后台中运行。如果在前台中运行以便查看服务器的输出,可以通过以下命令行:
# bin/zkServer.sh start-foreground
这个选项提供了大量详细信息的输出,以便允许查看服务器发生了什么。
3.2 启动客户端
# bin/zkCli.sh
.
<some omitted output>
.
2018-05-14 10:42:18,944 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@2473b9ce (1)
Welcome to ZooKeeper!
2018-05-14 10:42:19,038 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error) (2)
2018-05-14 10:42:19,045 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@876] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session (3)
JLine support is enabled
2018-05-14 10:42:19,134 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x1635c8669570000, negotiated timeout = 30000 (4)
WATCHER::
WatchedEvent state:SyncConnected type:None path:null (5)
(1)客户端启动程序来建立一个会话。
(2)客户端尝试连接到localhost/0:0:0:0:0:0:0:1:2181
(3)客户端连接成功,服务器开始初始化这个新会话。
(4)会话初始化完成。
(5) 服务器向客户端发送一个SyncConnected事件。
可能会产生的错误:
(1)bad interpreter: Text file busy,解决方法如下:
(2)java:command not found
解决方法:1.配置环境变量 2.重启机器 3.使用source /etc/profile 命令,使配置生效,每个shell都要调用一次。
3.3 练习
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] create /workers ""
Created /workers
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper, workers]
[zk: localhost:2181(CONNECTED) 3] delete /workers
[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 5] quit
Quitting...
2018-05-14 10:43:40,600 [myid:] - INFO [main:ZooKeeper@684] - Session: 0x1635c8669570000 closed
2018-05-14 10:43:40,606 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x1635c8669570000
[root@CentOS6 zookeeper-3.4.10]#