zookeeper单机部署及集群(单机伪集群)部署

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线-----------#