-
Notifications
You must be signed in to change notification settings - Fork 0
zookeeper单机伪集群
yangyp8110 edited this page Jan 17, 2018
·
1 revision
- 下载地址:zookeeper
本文下载稳定版:zookeeper-3.4.10.tar.gz
- 下载
[root@yyp softpackages]# wget http://apache.mirrors.lucidnetworks.net/zookeeper/stable/zookeeper-3.4.10.tar.gz
- 模拟集群
- 新建一个zookeeper文件夹
- 在zookeeper文件加下新建server1、server2、server3三个文件夹模拟3台服务器
- 每个server下新建文件夹data、dataLog、logs
[root@yyp install]# mkdir zookeeper
[root@yyp install]# cd zookeeper/
[root@yyp zookeeper]# mkdir server1 server2 server3
[root@yyp zookeeper]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 15 11:07 server1
drwxr-xr-x. 2 root root 6 Jul 15 11:07 server2
drwxr-xr-x. 2 root root 6 Jul 15 11:07 server3
[root@yyp zookeeper]#
- 按以下方式分别解压
zookeeper-3.4.10.tar.gz
到server1、server2、server3
[root@yyp softpackages]# tar zxvf zookeeper-3.4.10.tar.gz -C /usr/local/install/zookeeper/server1/
- 每个server文件夹结构如下:
[root@yyp server1]# ll
total 4
drwxr-xr-x. 2 root root 6 Jul 15 11:23 data
drwxr-xr-x. 2 root root 6 Jul 15 11:23 dataLog
drwxr-xr-x. 2 root root 6 Jul 15 11:23 logs
drwxr-xr-x. 10 esuser esuser 4096 Mar 23 07:28 zookeeper-3.4.10
[root@yyp server1]#
- 进入data目录,创建一个myid的文件,里面写入一个数字(
vi myid
)- server1,myid文件写入一个1
- server2,myid文件写入一个2
- server3,myid文件写入一个3
- 配置server1
进入
zookeeper-3.4.10/conf/
目录
[root@yyp server1]# cd zookeeper-3.4.10/conf/
[root@yyp conf]# ll
total 12
-rw-rw-r--. 1 esuser esuser 535 Mar 23 06:14 configuration.xsl
-rw-rw-r--. 1 esuser esuser 2161 Mar 23 06:14 log4j.properties
-rw-rw-r--. 1 esuser esuser 922 Mar 23 06:14 zoo_sample.cfg
[root@yyp conf]#
创建一个
zoo.cfg
的配置文件,并修改配置:
## 创建zoo.cfg
[root@yyp conf]# cp zoo_sample.cfg zoo.cfg
## 编辑
[root@yyp conf]# vi zoo.cfg
修改dataDir(增加dataLogDir)
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/install/zookeeper/server1/data
dataLogDir=/usr/local/install/zookeeper/server1/dataLog/
修改客户端端口
clientPort=2181
在末尾加入
server.1=192.168.74.129:2888:3888
server.2=192.168.74.129:2889:3889
server.3=192.168.74.129:2890:3890
- server.X 这个数字就是对应 data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配server.1,server.2,server.3就OK了。
- 因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。
- 最终
zoo.cfg
配置如下:
# 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.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/install/zookeeper/server1/data
dataLogDir=/usr/local/install/zookeeper/server1/dataLog
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=192.168.74.129:2888:3888
server.2=192.168.74.129:2889:3889
server.3=192.168.74.129:2890:3890
- 按上面方法配置server2、server3。因为在同一台服务器上模拟,所以
clientPort
要不一样- server2的配置参数:
- dataDir=/usr/local/install/zookeeper/server2/data
- dataLogDir=/usr/local/install/zookeeper/server2/dataLog
- clientPort=2182
- server3的配置参数:
- dataDir=/usr/local/install/zookeeper/server3/data
- dataLogDir=/usr/local/install/zookeeper/server3/dataLog
- clientPort=2183
- server2、server3底部都配置
- server.1=192.168.74.129:2888:3888
- server.2=192.168.74.129:2889:3889
- server.3=192.168.74.129:2890:3890
- server2的配置参数:
- 在根目录编辑快速启动脚本
start.sh
## 快速启动脚本
[root@yyp zookeeper]# vi start.sh
[root@yyp zookeeper]#
./server1/zookeeper-3.4.10/bin/zkServer.sh start
./server2/zookeeper-3.4.10/bin/zkServer.sh start
./server3/zookeeper-3.4.10/bin/zkServer.sh start
## 赋予当前用户可执行权限
[root@yyp zookeeper]# chmod u+x start.sh
[root@yyp zookeeper]# ll
total 4
drwxr-xr-x. 6 root root 65 Jul 15 11:23 server1
drwxr-xr-x. 6 root root 65 Jul 15 11:27 server2
drwxr-xr-x. 6 root root 65 Jul 15 11:30 server3
-rwxr--r--. 1 root root 148 Jul 15 12:03 start.sh
## 启动server1、server2、server3
[root@yyp zookeeper]# ./start.sh
ZooKeeper JMX enabled by default
Using config: /usr/local/install/zookeeper/server1/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /usr/local/install/zookeeper/server2/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /usr/local/install/zookeeper/server3/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@yyp zookeeper]#
- 在根目录编辑快速停止脚本
stop.sh
./server1/zookeeper-3.4.10/bin/zkServer.sh stop
./server2/zookeeper-3.4.10/bin/zkServer.sh stop
./server3/zookeeper-3.4.10/bin/zkServer.sh stop
- 检查启动状态
./server1/zookeeper-3.4.10/bin/zkServer.sh status
./server2/zookeeper-3.4.10/bin/zkServer.sh status
./server3/zookeeper-3.4.10/bin/zkServer.sh status
- 启动状态
[root@yyp zookeeper]# ./status.sh
ZooKeeper JMX enabled by default
Using config: /usr/local/install/zookeeper/server1/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
ZooKeeper JMX enabled by default
Using config: /usr/local/install/zookeeper/server2/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
ZooKeeper JMX enabled by default
Using config: /usr/local/install/zookeeper/server3/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader
[root@yyp zookeeper]#
- 最终zookeeper主目录文件夹结构
[root@yyp zookeeper]# ll
total 24
drwxr-xr-x. 6 root root 65 Jul 15 11:23 server1 ## 节点1
drwxr-xr-x. 6 root root 65 Jul 15 11:27 server2 ## 节点2
drwxr-xr-x. 6 root root 65 Jul 15 11:30 server3 ## 节点3
-rwxr--r--. 1 root root 148 Jul 15 12:03 start.sh ## 集群启动
-rwxr--r--. 1 root root 150 Jul 15 12:15 status.sh ## 集群状态
-rwxr--r--. 1 root root 144 Jul 15 12:14 stop.sh ## 集群停止
-rw-r--r--. 1 root root 11489 Jul 15 12:17 zookeeper.out ## 日志
[root@yyp zookeeper]#
- 进入任意server,比如进入server1
[root@yyp bin]# cd /usr/local/install/zookeeper/server1/zookeeper-3.4.10/bin
- 启动客户端(
./zkCli.sh -server 192.168.74.129:2181
) ## 2181是server1配置的clientPort
[root@yyp bin]# ./zkCli.sh -server 192.168.74.129:2181
Connecting to 192.168.74.129:2181
[root@yyp bin]# ./zkCli.sh -server 192.168.74.129:2181
Connecting to 192.168.74.129:2181
2017-07-15 12:27:13,564 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.10-
……
……
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.74.129:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
[zk: 192.168.74.129:2181(CONNECTED) 1]