美文网首页
Centos下安装Zookeeper

Centos下安装Zookeeper

作者: JohnShen | 来源:发表于2016-05-07 16:29 被阅读3947次

    下载Zookeeper

    从官网或者镜像下载对应的发行包:

    http://www.apache.org/dyn/closer.cgi/zookeeper/

    我这里直接使用wget命令下载3.4.8版本:

    wget http://mirror.tcpdiag.net/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
    

    解压Zookeeper

    下载后的发行包是tar.gz格式的zookeeper-3.4.8.tar.gz
    使用tar命令解压:

    tar zxvf zookeeper-3.4.8.tar.gz
    

    配置Zookeeper

    zookeeper支持两种运行模式:独立模式(standalone)复制模式(replicated)

    真正用于生产环境的Zookeeper肯定都是使用复制模式的,这样做可以避免单点问题。想要使用复制模式,但由于没有富余的机器能够使用,所以可以在单台机器上通过配置来使用复制模式,从而模拟真实的集群环境。

    由于Zookeeper集群是通过多数选举的方式产生leader的,因此,集群需要奇数个Zookeeper实例组成,也就是说至少需要3台(1台不能算"群" :-] )。

    配置zoo.conf文件

    首先,将zookeeper-3.4.8这个目录copy三份,分别为zookeeper-3.4.8-01、zookeeper-3.4.8-02、zookeeper-3.4.8-03,代表着3个实例。

    然后,分别创建zoo.conf配置文件,放在对应实例下的conf/目录下,文件内容如下:

    # 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=/var/lib/zookeeper-01
    # the port at which the clients will connect
    clientPort=2181
    
    # servers
    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.1:2889:3889
    server.3=127.0.0.1:2890:3890
    # 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这个是指定实例数据的存放路径,不同的实例要区分开。并且,注释中提醒不要设置为/tmp目录。比如可以分别设为:
    /var/lib/zookeeper-01
    /var/lib/zookeeper-02
    /var/lib/zookeeper-03
    
    • clientPort这个是供客户端连接本实例的端口号,不同的实例也要区分。比如,可以分别指定为:2181、2182、2183。
    • server.{X}这个X可以取数字,用来标识集群中唯一的一个实例。配置了多少个server.{X}就表示集群中有多少个实例。后面值的格式为:{host}:{port1}:{port2}
      其中,{host}为实例所在的主机IP,这里由于都在一台机器上,所以都指定为本机地址;{port1}是集群中实例之间用于数据通信的端口;{port2}是集群中实例进行leader选举时使用的通信端口。对于同一实例{port1}和{port2}是不可相同的。对于同一台机器部署多个实例的情况,不同实例的同一种端口也是需要区分的。

    配置myid文件

    前面提到的server.{X}配置项中的{X}就是一个实例的myid,它需要被写在对应实例的{dataDir}/myid文件中。

    下面需要在每一个实例指定的{dateDir}目录下创建一个名为myid的文件,文件的内容就是一个数字,对应server.{X}中的X。

    比如,这里是这样配置的:
    在/var/lib/zookeeper-01/myid文件中写入1;
    在/var/lib/zookeeper-02/myid文件中写入2;
    在/var/lib/zookeeper-03/myid文件中写入3。

    创建启动和停止的脚本

    对于多个实例,分别启动和停止比较麻烦,可以写一个脚本来自动完成这个工作。
    start-zk-servers.sh的内容:

    echo `/root/zookeeper-3.4.8-01/bin/zkServer.sh start`
    echo `/root/zookeeper-3.4.8-02/bin/zkServer.sh start`
    echo `/root/zookeeper-3.4.8-03/bin/zkServer.sh start`
    

    stop-zk-servers.sh的内容:

    echo `/root/zookeeper-3.4.8-01/bin/zkServer.sh stop`
    echo `/root/zookeeper-3.4.8-02/bin/zkServer.sh stop`
    echo `/root/zookeeper-3.4.8-03/bin/zkServer.sh stop`
    

    启动集群

    运行启动脚本:sh start-zk-servers.sh

    启动zookeeper服务

    默认地,在用户目录(~/)下面会生成Zookeeper的日志文件zookeeper.out。从日志中可以看出leader选举的过程和结果。

    停止集群

    运行停止脚本:sh stop-zk-servers.sh

    停止zookeeper服务

    连接Zookeeper

    开头提到了笔者用于实验的Zookeeper集群部署在远程的vps上,下面用本地的Zookeeper客户端连接一下试试。

    在本地同样下载Zookeeper的发行包,并解压,进入目录执行下面的命令:(将{host}替换成远程主机的IP,端口取集群中任意一个实例的clientPort)

    bin/zkCli.sh -server {host}:2181
    

    连上之后就可以对节点进行一些简单的操作:

    操作节点

    结语

    由于刚接触Zookeeper,对原理和配置的最佳实践还不甚了解,所以,这篇文章应当作笔者学习过程中的记录,不一定适合生产环境,切记!

    相关文章

      网友评论

          本文标题:Centos下安装Zookeeper

          本文链接:https://www.haomeiwen.com/subject/zbzjrttx.html