您的位置:首页 > 其它

(五)zookeeper windows单机模式和伪集群模式

2015-10-10 10:58 309 查看
        首先在官网上下载zookeeper稳定版本,下载地址:http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/ 下载zookeeper-3.4.6.tar.gz,我下载的是3.4.6,不算太新也不算太旧。

        zookeeper是一个分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用,协调及其管理的难度,提高性能的分布式服务。

        zookeeper本身是可以以Standalone模式安装运行,不过它在分布式Zookeeper集群中(一个Leader,多个Follower),基于选举算法来保证 
      zookeeper集群的稳定性和可用性,从而保证了分布式的可靠性。

一、单机模式安装

        1、解压到自己任意磁盘下,我的位置是D:\zookeeper-3.4.6

        2、复制zoo_sample.cfg 重命名为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=D:\\data\\zookeeper
# log config
dataLogDir=D:\\log\\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

        其中

        dataDir为zookeeper数据存放位置,zookeeper将写数据的日志文件保存在这个目录里。

        dataLogDir是日志文件。

        clientPort=2181是zookeeper端口,我们连接zookeeper的端口,zookeeper会监听这个端口,接收客户端访问请求。

        tickTime:zookeeper服务器之间,或者zookeeper客户端与服务器之间维持的心跳的时间间隔,每隔tickTime时间,会执行一次。(心跳证明活着,心跳时间就是超时设置时间,可以理解为客户端和服务器端的session)

     

        3 、转到D盘的zookeeper bin目录下,执行zkServer.cmd,这样就启动了zookeeper服务了。

        4、查看zookeeper运行情况:D:\zookeeper-3.4.6\bin>zkCli.cmd-server 127.0.0.1:2181。

        这样就完成了zookeeper windows单机模式安装。

二、伪集群模式安装



        在一台PC上启动多个Zookeeper实例,同一个不同的端口,来实现微集群。

        简单原理:

        选举算法,有兴趣的同学可以看看,后续篇章中会详述。

        1、修改加载的配置文件。在D:\zookeeper-3.4.6\conf 下复制zoo.cfg重命名为zoo1.cfg
,zoo2.cfg,zoo3.cfg



        修改以下如下:

dataDir=D:\\data\\zookeeper\\1
# log config
#dataLogDir=D:\\log\\zookeeper
# the port at which the clients will connect
clientPort=2181
#添加集群配置
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889


zoo1.cfg 文件修改dataDir目录为D:\\data\\zookeeper\\1,修改clientPort为2181 ,同时添加server.1=localhost:2887:3887

server.2=localhost:2888:3888  server.3=localhost:2889:3889

        server.num=ip/domain:Port1:Port2

        其中num:表示数字表示第几号服务器;ip/domain :是服务器域名或者ip地址。Port1:表示这个服务器和集群中的Leader服务器交换信息的端口;Port2:表示万一集群中的Leader服务器挂了,需要一个端口重新进行选举,选出一个新的Leader,这个端口就是用来执行选举时服务器相互通信的端口。

        由于我们是伪集群,所以ip或者域名是一样的,所以要分配不同的端口号。

        zoo2.cfg也是如此修改,copy zoo1.cfg 只要修改上述红色标记的即可,\\2 clientPort=2182
,类推,zoo2.cfg修改clientPort为2183 。

2、修改命令,加载不同的配置。复制zkServer.cmd并且重命名为,zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd 分别修改这三个cmd如下所示。

setlocal
call "%~dp0zkEnv.cmd"

set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set ZOOCFG=D:\zookeeper-3.4.6\conf\zoo1.cfg
echo on
java "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*

endlocal


        不同的zkServer- 1 2 3  .cmd分别添加一行set ZOOCFG=..\zoo1.cfg zoo2.cfg zoo3.cfg

3、分别启动zkServer-1 .cmd、zkServer-2.cmd zkServer-3.cmd

        启动可能会报如下错误

2015-10-09 11:20:08,162 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:218
1:QuorumCnxManager@382] - Cannot open channel to 3 at election address localhost
/192.168.132.16:3889
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketI
mpl.java:85)
        这是因为,zookeeper集群采用的是选举算法,当集群中的其他节点还没有启动的时候,选举算法就会出现异常,因为至少三台能选举出一个leader,2n+1台机器,可以选举n个leader,当全部启动起来后,就不会报异常,所以上述的报错是可以忽略的,尽管启动这三个节点即可。

        这样在一台机器上搭建了zookeeper伪集群,并且启动成功。

        接下来是zookeeper的可视化界面zkui的使用。

        欢迎指教~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: