ZooKeeper的安装与部署

1、下载

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz 。

下载好的zookeeper目录如下:

.
├── bin
├── build.xml
├── conf
├── contrib
├── dist-maven
├── docs
├── ivysettings.xml
├── ivy.xml
├── lib
├── LICENSE.txt
├── NOTICE.txt
├── README_packaging.txt
├── README.txt
├── recipes
├── src
├── zookeeper-3.4.10.jar
├── zookeeper-3.4.10.jar.asc
├── zookeeper-3.4.10.jar.md5
└── zookeeper-3.4.10.jar.sha1


        ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安装Java运行环境。为了正常运行zk,我们需要JRE1.6或者以上的版本。 对于集群模式下的ZooKeeper部署,3个ZooKeeper服务进程是建议的最小进程数量,而且不同的服务进程建议部署在不同的物理机器上面,以减少机器宕机带来的风险,以实现ZooKeeper集群的高可用。 

2、zookeeper安装配置

下载zookeeper的安装包之后, 解压到合适目录. 进入zookeeper目录下的conf子目录, 运行 

cp zoo_sample.cfg zoo.cfg 

执行写操作

vim zoo.cfg

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=/tmp/zookeeper
# 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
--------------------------------------------------------------------------------------------------

参数说明:

tickTime: 时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。 
tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
dataDir: 数据目录. 可以是任意目录,用于配置存储快照文件的目录。
dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置。
clientPort:zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。

单机模式:

这是zookeeper默认的配置方式,如果只是单机模式,则无需别的配置直接运行即可

运行:
cd bin

./zkServer.sh start  

Server启动之后, 就可以启动client连接server了, 执行脚本:

./zkCli.sh -server localhost:2181

集群模式配置:

集群模式下, 各server部署在不同的机器上, 因此各server的conf/zoo.cfg文件可以完全一样。

注意 
在集群模式下,建议至少部署3个zk进程,或者部署奇数个zk进程。如果只部署2个zk进程,当其中一个zk进程挂掉后,剩下的一个进程并不能构成一个quorum的大多数。因此,部署2个进程甚至比单机模式更不可靠,因为2个进程其中一个不可用的可能性比一个进程不可用的可能性还大。

具体的zoo.cfg配置项如下:

tickTime=2000
dataDir=/tmp/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.56.101:2888:3888
server.2=192.168.56.102:2888:3888
server.3=192.168.56.103:2888:3888

另外还要在三台机器dataDir目录(/tmp/zookeeper 目录)下,分别生成一个myid文件,其内容分别为1,2,3。然后分别在这三台机器上启动zk进程,这样我们便将zk集群启动了起来。

连接:

./zkCli.sh -server 192.168.56.101:2181,192.168.56.102:2181,192.168.56.103:2181

伪集群模式配置:

伪集群是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例,将zookeeper的目录拷贝2份:

├── zookeeper1
├── zookeeper2
└── zookeeper3
具体的每个zoo.cfg配置如下:

tickTime=2000    
initLimit=5    
syncLimit=2    
dataDir=/tmp/zookeeper1
clientPort=2181  
server.1=192.168.56.101:2888:3888
server.2=192.168.56.101:2889:3889
server.3=192.168.56.101:2890:3890

需要注意的是clientPort这个端口如果你是在1台机器上部署多个zookeeper,那么每台机器都要不同的clientPort,比如我zookeeper1是2181,zookeeper2是2182,zookeeper3是2183,dataDir和dataLogDir也需要区分下。

dataDir对应目录为/tmp/zookeeper1、/tmp/zookeeper2、/tmp/zookeeper3。

在之前设置的dataDir中新建myid文件,写入一个数字,该数字表示这是第几号server。该数字必须和zoo.cfg文件中的server.id中的id一一对应。
/tmp/zookeeper1/myid文件中写入1, /tmp/zookeeper2/myid文件中写入2, /tmp/zookeeper3/myid文件中写入3。

接着分别进入/opt/zookeeper1/bin,/opt/zookeeper2/bin,/opt/zookeeper3/bin三个目录, 启动server。
任意选择一个server目录, 启动客户端:

[zk: 192.168.56.101:2182(CONNECTED) 0] [root@localhost bin]# /opt/zookeeper1/bin/zkCli.sh -server 192.168.56.101:2181
Connecting to 192.168.56.101:2181
2017-09-28 16:42:27,202 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2017-09-28 16:42:27,205 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=localhost
2017-09-28 16:42:27,205 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_144
2017-09-28 16:42:27,206 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2017-09-28 16:42:27,206 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/local/java/jdk1.8.0_144/jre
2017-09-28 16:42:27,206 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/opt/zookeeper1/bin/../build/classes:/opt/zookeeper1/bin/../build/lib/*.jar:/opt/zookeeper1/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper1/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper1/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper1/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper1/bin/../lib/jline-0.9.94.jar:/opt/zookeeper1/bin/../zookeeper-3.4.10.jar:/opt/zookeeper1/bin/../src/java/lib/*.jar:/opt/zookeeper1/bin/../conf:.:/usr/local/java/jdk1.8.0_144/lib:/usr/local/java/jdk1.8.0_144/jre/lib
2017-09-28 16:42:27,206 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-327.el7.x86_64
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2017-09-28 16:42:27,207 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/opt/zookeeper1/bin
2017-09-28 16:42:27,212 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.56.101:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5c29bfd
2017-09-28 16:42:27,240 [myid:] - INFO  [main-SendThread(192.168.56.101:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 192.168.56.101/192.168.56.101:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2017-09-28 16:42:27,347 [myid:] - INFO  [main-SendThread(192.168.56.101:2181):ClientCnxn$SendThread@876] - Socket connection established to 192.168.56.101/192.168.56.101:2181, initiating session
2017-09-28 16:42:27,381 [myid:] - INFO  [main-SendThread(192.168.56.101:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 192.168.56.101/192.168.56.101:2181, sessionid = 0x15ec7a508240001, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.56.101:2181(CONNECTED) 0] 

 

转载于:https://my.oschina.net/duanxianme/blog/1544884

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值