一、安装包下载地址
http://archive.apache.org/dist/zookeeper/
二、选择其中的一个版本,这里我选择的是3.4.10
这些都是在Linux系统下的安装包 ,所以要么你事先要有安装了Linux系统的虚拟机,要么系统是Linux的,要么有个Linux服务器,然后将安装包拷贝到Linux系统下
三、本地安装
1、进入到安装包的存储目录下,将压缩包解压到指定的目录下
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
2、进行一些配置的修改
(1)进入到解压之后的zookeeper目录下,查看一下这个目录下都有哪些文件,进行配置的文件在conf这个文件夹下
(2)将conf这个文件夹下的zoo_sample.cfg修改为zoo.cfg
mv zoo_sample.cfg zoo.cfg
(3)然后回退到zookeeper目录下,创建一个存放数据的文件夹,进入到这个文件夹下,复制获取它的路径:/opt/module/zookeeper-3.4.10/zkData
mkdir zkData
(4)再次进入到conf文件夹,编辑zoo.cfg,修改dataDir这个字段的值为我们刚才复制的路径,然后保存退出。
3、服务端和客户端的本地启动
至此,zookeeper的本地安装和配置已经完成,下面就是启动zookeeper的服务端和客户端了
(1)启动zookeeper的服务端
bin/zkServer.sh start
可以看到,进程已经存在了:
(2)查看状态
bin/zkServer.sh status
(3)启动客户端
bin/zkCli.sh
注意,启动客户端的时候,是没有start这个关键字的。
(4)退出客户端
直接在命令行输入“quit”
(5)停止服务端
bin/zkServer.sh stop
三、分布式安装
首先需要几个服务器,这几个服务器都已经安装了Jdk,这里我安装了三个服务器,系统是centos的。其实安装的过程和本地安装几乎没什么区别,只不过我们需要给集群的每个节点进行编号,然后将编号和对应节点的IP地址和相关需要用到的端口号联系起来。
现在一个机器上,按照本地安装的方式进行安装配置,然后开始下一部分操作:为集群节点编号
进入到之前创建的zkData文件下,然后创建一个文件“myid”
touch myid
编辑这个文件,其实就是将当前的服务器设置序号,这个序号可以自己自定义,这里我设置我1
然后,到conf文件夹,继续编辑zoo.cfg文件,在其最下方添加以下内容:
#######################cluster########################## server.1=192.168.182.101:2888:3888 server.2=192.168.182.102:2888:3888 server.3=192.168.182.103:2888:3888
解读一下,上面三行内容的含义,它们的通用格式如下:
server.A=B:C:D
A是一个数字,表示这个是第几号服务器,它对应我们在每个服务器中设置的myid中的值。集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B是序号为A的服务器的ip地址,如果事先为ip设置了域名,可以用域名代替;
C是序号为A的服务器与集群中的Leader服务器交换信息的端口;
D也是一个端口号,万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
至此,我们将分布式部署的基本信息配置完毕了,但是还需要将它们发送到其他的服务器上面,可以手动拷贝,也可以编写一个shell发送文件的脚本,这里我们编写了一个发送文件到集群其他节点的脚本,直接在命令行进入到zookeeper的父目录下执行以下命令即可,xsync是自己编写的sh文件,并不是命令,至于怎么写,可以百度如何编写发送文件的脚本。
xsync zookeeper-3.4.10/
然后分别在三个机器上启动,三个机器的zookeeper的服务端:
$ bin/zkServer.sh start $ bin/zkServer.sh start $ bin/zkServer.sh start
启动第二个服务端的时候,查看状态,会看到已经选举出leader了:
而第一个服务端和第三个服务端都是follower