Skip to content

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

启动

  • 在根目录编辑快速启动脚本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] 

Clone this wiki locally