zookeeper安装与配置

参加阿里的中间件比赛,需要使用jstorm系统,以前完全没有接触过相应的概念,现在处于前期学习阶段,搭建环境过程中遇到了很多麻烦,在此记录下搭建过程,本片主要介绍zookeeper集群的安装与配置过程。zookeeper有三种模式,为了一步到位,直接配置成集群模式,由于条件有限,我采用了三个机器,一台linux,一台windows,一台linux虚拟机。


一、确定jdk环境

        zookeeper需要以来java环境,所以一定要确保jdk安装正确。


二、下载并解压最新版本的zookeeper

        下载后解压到文件夹,最好在当前用户下,不然没有root权限访问一些文件会增加不必要的麻烦。解压后文件目录如下,目前为止主要接触到bin和conf文件夹,前者中存储着相应的命令文件,后者中存着配置文件。


三、编辑配置文件

        conf文件夹中,默认带有zoo_sample.cfg,存着默认的配置文件。zookeeper启动的时候会默认查找名为zoo.cfg的配置文件,所以如果在单机模式下,直接复制zoo_sample.cfg并重命名为zoo.cfg,就可以直接运行。在集群模式下,需要根据主机的环境作出相应的修改,我的根据我三台机器ip做如下配置:

tickTime=2000

dataDir=D:\\zookeeper-3.4.6\\data    #这是windows下的配置,linux下我的设置是/var/zookeeper/

clientPort=2181

initLimit=5

syncLimit=2

server.1=192.168.2.198:2888:3888

server.2=192.168.2.121:2888:3888

server.3=192.168.2.120:2888:3888

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

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

clientPort :这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。


initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒。


syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒 


server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。


三个配置文件出来因为系统不同而导致文件目录有稍微差别,其他地方应该完全一致


四、创建myid文件

除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就只有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。注意windows下这个文件夹是没有的,需要自己创建。

这里需要注意的就是windows下的myid文件不是txt格式的,应该没有任何格式,文件名就是myid,没有任何后缀,不然启动的时候会报错说myid file is missing。

五、启动

编辑好配置文件并创建好对应的myid文件后,就可以启动了。启动文件在bin目录下。

在windows系统下,运行bin下的zkServer.cmd,就可以直接启动。


linux系统下,在bin目录下打开终端,输入sudo ./zkServer.sh start即可启动。也可以输入sudo ./zkServer.sh start-foreground,在此状态下机会显示出详细的信息。



如果是sudo ./zkServer.sh start-foreground,如上图显示,开始会提示连接失败什么的,因为必须三台机器全部开启以后才会连接成功,稍微等一会就可以了。

如果是 sudo ./zkServer.sh start,在连接成功后会直接提示成功,如下图


三台都没有报错,说明启动成,或者如果失败,可以根据提示找到相应的问题。我在配置过程中除了开始jdk出了问题,后来启动过程并没有什么意外,当然也可能是前面失败了好几百次那几个命令已经很熟悉了。


六、查看状态

 同样在bin文件夹下输入sudo ./zkServer.sh status,可以查看当前的状态。


表明已经连接成功,一般第一个开始的会是leader,其他的都是follower。如果是单机模式,会是standalone。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值