Zookeeper集群搭建

1.一共三个节点(zk服务器集群规模不小于3个节点),要求服务器之间系统时间保持一致。

2. 先去zookeeper官网下载zookeeper的安装包,并将zookeeper通过工具上传到服务器。上传zk

进行解压:

tar -zxvf  zookeeper-3.4.5.tar.gz

重命名:

mv zookeeper-3.4.5 zookeeper

使用vi /etc/profile命令配置zookeeper的环境变量,在profile文件最后加入下面两行:

vi /etc/profile

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$ZOOKEEPER_HOME/bin:$PATH

为了使环境变量生效,使用source /etc/profile命令刷新环境变量。

source /etc/profile

使用cd /usr/local/zookeeper/conf目录下修改zookeeper的配置文件。因为zookeeper默认使用的配置文件是zoo.cfg,所以使用mv zoo_sample.cfg zoo.cfg命令重命名zookeeper的配置文件。

使用vi zoo.cfg命令修改zoo.cfg文件

vi zoo.cfg

修改两处

(1)dataDir=/usr/local/zookeeper/data

(2)并在文件最后添加下面三行(因为我在学习zookeeper时使用了三台虚拟机):

server.1=192.168.198.130:2888:3888
server.2=192.168.198.129:2888:3888
server.3=192.168.198.128:2888:3888

退出并保存zoo.cfg文件。

服务器标识配置:

在/usr/local/zookeeper目录下使用mkdir data目录,并进入data目录,接着使用vi myid创建myid文件,该文件中的内容为0(另外两台虚拟机为1,2)。

启动zookeeper

进入/usr/local/zookeeper/bin目录,使用zkServer.sh start启动zookeeper(如果想看日志或者想看一下在启动过程中是否报错,可以使用zkServer.sh start-foreground命令启动zookeeper)。

使用zkServer.sh status来查看zookeeper的状态,我这里因为有三个节点,所以其一个为leader,另外两个为follower。

zkServer.sh stop 停止服务

zkServer.sh status查看状态的时候却出现错误,如下:

JMX enabled by default
Using config: /hadoop/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

jps查看进程,却发现进程已启动

7313  QuorumPeerMain

因为防火墙没有关闭。关闭防火墙:

  #查看防火墙状态

   service iptables status 

  #关闭防火墙
   service iptables stop
  #查看防火墙开机启动状态
   chkconfig iptables --list
  #关闭防火墙开机启动
   chkconfig iptables off

操作zookeeper (shell)

在ZOOKEEPER_HOME/bin目录下输入zkCli.sh可以进入zookeeper客户端。

查找:ls /

创建并赋值:create /hyy "mydata"

获取:get /hyy

设置值:set /hyy "hello"

deleteall /path删除递归节点(当前要删除的节点下还有子节点则要使用rmr命令)

delete /path/child删除指定的节点

创建节点有两种类型:短暂(ephemeral)、持久(persistent)

zookeeper配置文件详解:

tickTime:基本事件单元,以毫秒为单位。这个时间是作为zookeeper服务器与服务器之间或客户端与服务器之间维持心跳的事件间隔。也就是每隔tickTime发送一个心跳。

dataDir:存储内存中数据快照的位置,就是zookeeper保存数据的目录。默认情况下,zookeeper将写数据的日志文件也保存在这个位置。

clientPort:客户端连接zookeeper服务器的端口,zookeeper会监听该端口,接受客户端的访问请求。

initLimit:用来配置zookeeper接受客户端初始化连接时最长能忍受多少个心跳时间间隔,当超过10个心跳时间(也就是tickTime)长度后,zookeeper服务器还没有收到客户端的返回信息,则认为该客户端连接失败。总的时间长度就是10 * 2000=20秒(默认情况下)。

syncLimit:leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5 * 2000=10秒(默认情况下)。

server.A=B:C:D:A表示这个是第几号服务器,B表示该服务器的ip地址,C表示该服务器与集群中的leader服务器蒋欢信息的端口,D表示如果集群中的leader服务器挂了,则通过该端口进行选举,选出一个新的leader。

     

原文地址:https://www.cnblogs.com/alter888/p/8867949.html