1、单机部署java
下载源码apache
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz vim
解压ide
tar -xvzf zookeeper-3.4.9.tar.gz -C /usr/local/测试
软链接spa
cd /usr/local/日志
ln -s zookeeper-3.4.9 zookeeperorm
修改配置文件server
cd /usr/local/zookeeper/conf进程
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
暂时只须要修改数据和日志目录
dataDir=/data/zookeeper
启动程序
/usr/local/zookeeper/bin/zkServer.sh start
期间出现启动的问题,报错启动失败 nohup: 没法运行命令"java",可修改zkServer.sh第140行的
nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
--$JAVA将此变量修改成适合本身主机的便可,如修改成$JAVA_HOME/bin/java
启动成功后进行链接测试
/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
Connecting to 127.0.0.1:2181
...
[zk: 127.0.0.1:2181(CONNECTED) 0]
表明服务连接成功
2、集群(单机多进程伪集群)
建立目录
mkdir zookeeper-3181 zookeeper-3182 zookeeper-3183
#zookeeper-3181的配置为
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/path/zookeeper/log/zookeeper-3181 #其余两个目录自定义
clientPort=3181 #其余两个目录端口分别设置为3182和3183
autopurge.snapRetainCount=3
autopurge.purgeInterval=72
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
#启动zookeeper-3181
sh zookeeper-3181/bin/zkServer.sh start
启动过程当中,查看zookeeper.out ,报错以下:
e.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /path/zookeeper/zookeeper-3181/bin/../conf/zoo.cfg
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:144)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:101)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
Caused by: java.lang.IllegalArgumentException: /path/zookeeper/log/zookeeper-3181/myid file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:362)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:140)
/path/zookeeper/log/zookeeper-3181/myid file is missing 这个文件没有存在,解决以下:
echo 1 >/path/zookeeper/log/zookeeper-3181/myid
echo 2 >/path/zookeeper/log/zookeeper-3182/myid
echo 3 >/path/zookeeper/log/zookeeper-3183/myid
执行完成后,从新启动
sh zookeeper-3181/bin/zkServer.sh start
sh zookeeper-3182/bin/zkServer.sh start
sh zookeeper-3183/bin/zkServer.sh start
集群测试
登陆到3183端口
sh zookeeper-3183/bin/zkCli.sh -server 127.0.0.1:3183
#设置
[zk: 127.0.0.1:3183(CONNECTED) 0] create /testpro zookeeptest
Created /testpro
[zk: 127.0.0.1:3183(CONNECTED) 1] get /testpro
zookeeptest
cZxid = 0x100000002
ctime = Fri Mar 17 10:05:03 CST 2017
mZxid = 0x100000002
mtime = Fri Mar 17 10:05:03 CST 2017
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
[zk: 127.0.0.1:3183(CONNECTED) 2]
登陆到3182端口检查同步状况
sh zookeeper-3183/bin/zkCli.sh -server 127.0.0.1:3182
[zk: 127.0.0.1:3182(CONNECTED) 0] get /testpro
zookeeptest
cZxid = 0x100000002
ctime = Fri Mar 17 10:05:03 CST 2017
mZxid = 0x100000002
mtime = Fri Mar 17 10:05:03 CST 2017
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
[zk: 127.0.0.1:3182(CONNECTED) 1]
3、节点接管测试
目前状况为3182端口为主节点,测试此端口挂掉后,其余从节点是否正常升级为主节点
--检查
sh zookeeper-3182/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/gdiex/zookeeper/zookeeper-3182/bin/../conf/zoo.cfg
Mode: leader
--中止
sh zookeeper-3182/bin/zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /home/gdiex/zookeeper/zookeeper-3182/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
#检查,发现3183升级为主节点
sh zookeeper-3183/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/gdiex/zookeeper/zookeeper-3183/bin/../conf/zoo.cfg
Mode: leader
#-----------华丽OVER线-----------#