前言
dubbo作为现在使用的比较多的分布式框架,它推荐zookeeper作为注册中心,并且zookeeper也是hbase、hadoop的一部分,我们有必要了解一下zookeeper,最起码也得知道zookeeper的一些简单使用。
本文主要介绍在linux环境下zookeeper的安装、配置。不过貌似公司也不会在windows环境下使用zookeeper吧。zookeeper的使用包括单机版与集群版,接下来就开始zookeeper的安装。
文章目录
- 前言
- 一、zookeeper单机版的配置
- 二、zookeeper集群版的配置
一、zookeeper单机版的配置
安装前的准备:
因为是介绍linux环境下zookeeper的安装与使用,那么肯定离不开linux环境咯,这里我用的是vmware虚拟机,centOS7。
zookeeper安装包。
此外,zookeeper的使用是要有Java环境的,因此JDK也是不可缺少的。这些准备完之后就可以开始了。
首先创建zookeeper的用户名与密码:
useradd zookeeper
passwd zookeeper
配置Java环境:
解压JDK压缩包:
tar -xzvf jdk-8u131-linux-x64.tar.gz
可以看到,jdk已经解压完毕,cd进入jdk文件夹,pwd打印当前文件夹所在的位置,这个很重要,配置jdk是需要jdk的路径位置的。
vi .bash_profile 编辑文件
按照图中信息进行配置,注意:JAVA_HOME=****是配置的你的jdk文件所在的路径的。
. .bash_profile 让刚才的置生效。注意,是两个点
查看jdk是否安装好:
如果出现了这样的情况,说明Java环境已经是有了,可以安装zookeeper了。
解压zookeeper:
tar -xzvf zookeeper-3.4.10.tar.gz
解压完zookeeper之后,进入zookeeper的/conf文件夹下:
复制一份zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg
返回zookeeper的根目录创建一个data,这个data是以后存放zookeeper的一些数据的内存快照、日志之类的信息。
我们要知道这个data的路径,这个在接下来的zookeeper的配置中是要使用到的:
保留这个路径地址,回到conf中,编辑zoo.cfg:
在这个dataDir后面配置刚刚的data目录的位置。注意:是你linux环境下的位置,不是我的。
如果之前的操作没啥问题,那么zookeeper就可以使用了,我们去到bin目录下,
./zkServer.sh start
启动服务端,怎么看服务端启动好了呢?
./zkServer.sh status
出现这样的情况就是服务端启动成功:
在bin下有个zkCli.sh,通过使用他,我们就可以登录客户端使用zookeeper了:
出现这样的情况就说明客户端启动完成,可以开始使用了。
PS:按照步骤一步一步来的话,正常情况下是没啥问题的,不过计算机与计算机的体质是不一样的,有的计算机可以在极端情况下直接死机,如果出现了啥问题,可以查看日志来找下问题:
vi zookeeper.out就可以查看日志了。
二、zookeeper集群版的配置
zookeeper集群中服务器的数量为奇数个,至于为什么是奇数个,以后的文章会介绍到为啥是奇数个。
我们是在一个虚拟机上模拟zookeeper集群的搭建,所以将之前的zookeeper文件复制三份:
一定要注意啊,这个是你的linux上zookeeper文件的地址,不要直接使用我的文件地址。文件地址查看:pwd。
建议开启三个窗口连接虚拟机。
既然是三个服务器,设置了三个不同的端口,因此我们需要对每个服务器进行设置:首先是第一个,我们进入zookeeper2181文件(注意是复制后的zookeeper2181,不是之前的那个zookeeper文件了),进入到conf文件夹,修改zoo.cfg
这三个地方是需要注意的,dataDir是你的data文件的位置。
clientPort是端口号,我们这次设置三个服务端,分别是2181、2182、2183,这是第一个服务器,我们设置为2181。
server.是对应的第几个服务器的配置,如果是五个服务器,那么你就应该改成五行配置了。
server.=A:B:C(A是你的虚拟机的IP地址,B是zookeeper服务器之间的通信端口,C是Leader选举的端口)
配置完之后,保存退出。来到data文件夹中,使用下面的命令:
echo “1” >myid
这个是在data文件夹中生成一个myid的文件,并写入值:1。
这个myid是很重要的,关乎到zookeeper的leader选举。这样第一个服务器就配置好了。
记得将文件夹中的
version-2
zookeeper_server.pid
都删除掉。
在其余的两个服务器中配置相应的信息,因为是一个虚拟机,所以我建议创建三个会话去连接虚拟机,就像我的这样:
完全是木有啥问题的。
第二个与第三个的配置其实都差不多,
像第二个服务器,这个修改为2即可,第三个修改为3就OK。还有myid:第二个设置为2,第三个设置为3。
这样zookeeper集群就搭建好了,启动服务端:
./zkServer.sh start
看到这里,说明服务端已经启动了(服务端启动需要花费点时间,如果出现了错误,可能是正在启动)。
每个服务器节点可能是跟随者,也可能是领导者或者是观察者,这点会在接下来的文章讲一下关于zookeeper的领导者选举ZAB算法。三个服务器节点启动之后,我们如何登录客户端呢?
三个客户端分别连接三个服务端,连接成功的标志就是:
这个时候zookeeper集群就已经创建完成并且可以使用了,接下来就可以快乐地使用zookeeper了。