ZooKeeper的本地安装和分布式安装

一、安装包下载地址

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

posted @ 2020-06-20 13:23  有心有梦  阅读(599)  评论(0编辑  收藏  举报