Untitled

[root@hadoop ~]# tree -L 2 apache-zookeeper-3.5.6-bin
apache-zookeeper-3.5.6-bin
├── bin
   ├── README.txt
   ├── zkCleanup.sh
   ├── zkCli.cmd
   ├── zkCli.sh
   ├── zkEnv.cmd
   ├── zkEnv.sh
   ├── zkServer.cmd
   ├── zkServer-initialize.sh
   ├── zkServer.sh
   ├── zkTxnLogToolkit.cmd
   └── zkTxnLogToolkit.sh
├── conf
   ├── configuration.xsl
   ├── log4j.properties
   └── zoo_sample.cfg

创建成功,进入到zookeeper的conf目录

cd zookeeper/conf/ 有三个文件,zookeeper的配置文件叫做zoo.cfg,这里边没有,我们把 zoo_sample.cfg 拷贝一份出来

zookeeper部署方式

  • 单机模式

  • 伪分布式集群

  • 完全分布式集群

原始配置

单机

JAVA JDK 安装

下载,上传,解压zookeeper,修改配置文件

进入到zookeeper的安装目录 执行bin/zkServer.sh start

如图所示,使用jps命令查看进程是否启动成功

出现 QuorumPeerMain这个进程的时候就说明zookeeper已经安装成功了

接下里进入zookeeper的客户端查看

进入zookeeper的安装目录执行bin/zkCli.sh

执行ls / 查看当前根目录下的节点 发现有一个zookeeper的节点

至此zookeeper的单机版安装成功!

所谓伪集群就是在单机模拟集群模式zookeeper的运行。

一个zookeeper,3份配置文件,配置各自的datadir,启动、查询时,指定配置文件

配置文件

下面是我配置的伪集群分布模式,分别通过zoo1.cfg、zoo2.cfg、zoo3.cfg来模拟三台机器的zookeeper集群:

zoo1.cfg内容如下:

配置完成上述三个文件后,还需在dataDir对应路径下添加myid文件,内容对应server.n的n值:

启动

在集群为分布式下,我们只有一台机器,但是要运行三个Zookeeper实例。此时,如果在使用单机模式的启动命令是行不通的。此时,只要通过下面三条命令就能运行前面所配置的Zookeeper服务。如下所示:

在运行完第一条指令之后,会出现一些错误异常,产生异常信息的原因是由于Zookeeper 服务的每个实例都拥有全局配置信息,他们在启动的时候会随时随地的进行Leader选举操作。此时,第一个启动的Zookeeper需要和另外两个 Zookeeper实例进行通信。但是,另外两个Zookeeper实例还没有启动起来,因此就产生了这的异样信息。我们直接将其忽略即可,待把图中“2 号”和“3号”Zookeeper实例启动起来之后,相应的异常信息自然会消失。此时,可以通过下面三条命令,来查询:

上边我们已经搭建出来一台zookeeper,集群其实就是多划分了几台机器,将zookeeper从单机变成一个集群版

zookeeper安装包

虚拟机3台,

配置动态IP或者静态IP

保证三台机器之间的通信是畅通的,可以在/etc/hosts编辑

例如 我的三台机器的ip地址是192.168.64.137,192.168.64.138,192.168.64.139

在hosts文件中配置的就是

192.168.64.137 zk01

192.168.64.138 zk02

192.168.64.139 zk03

使用ping 命令分别测试机器是否可以连通

OK 可以ping通

修改zookeeper的配置文件在原来的基础上更改一点就可以的

server.id 的编号是根据机器的顺序来写的,当然也可以随便写,为了规范我们用顺序的数字来表示机器

更改后保存退出,

分发到其他机器 使用scp命令 我第二台机器的域名是zk02 存放zookeeper的位置是/export/servers/

scp -r zookeeper zk02:/export/servers/

scp -r zookeeper zk03:/export/servers/

分别在zk02 和zk03上的zookeeper配置文件中指定的数据目录中新建文件myid,每台机器的myid文件的内容要和在第一台机器中的zoo.cfg 配置的一样

更改完毕后准备启动集群

先配置环境变量

分别在每台机器上之执行命令zkServer.sh start,使用jps分别在每台机器上查看进程

再执行zkServer.sh status

zk01

一台领导者,两台跟随者

集群安装完成!

最后更新于

这有帮助吗?