ZooKeeper的安装和配置

  • ZooKeeper安装模式介绍
  • 1、版本的选择和下载
  • 2、zookeeper的安装和环境配置
  • 2.1、安装jdk
  • 2.1.1、jdk选择
  • 2.1.2、创建目录
  • 2.1.3、解压 JDK
  • 2.1.4、设置环境变量
  • 2.1.5、检测
  • 2. 2、安装zookeeper
  • 2. 2.1、解压软件zookeeper
  • 2. 2.3、配置环境变量
  • 2. 2.3、进入zookeeper的解压文件后执行如下操作
  • 2. 2.4、创建myid文件
  • 2. 2.5、启动测试zookeeper
  • 2. 2.6、连接集群


ZooKeeper安装模式介绍

ZooKeeper有三种安装模式:单机安装(standalone)、伪集群模式、集群模式:
(1)standalone模式:只在一台机器上安装ZooKeeper,并只启动一个ZooKeeper实例。
(2)伪集群:在一台机器上开启多个ZooKeeper实例来模拟集群。通过加载不同配置文件,分配不同数据目录来实现这种模式。因为在同一机器上运行,所以机器宕机,整个ZooKeeper就挂了。基本上不会布置这样的ZooKeeper集群。
(3)集群模式:在至少3台机器上安装ZooKeeper构成集群,只要故障节点数量在一定范围内就能保证ZooKeeper服务的可用性。
真正布置的基本上都是集群模式,standalone偶尔用来做些测试,它有单点故障,伪集群模式也有单点故障。
集群模式并非一定至少3台机器,但用2台机器比1台机器更危险,因为随便故障一台都无法满足"大多数"的要求,都会阻塞整个ZooKeeper服务。而2台机器的故障几率是1台机器的2倍。所以,也建议采用奇数台机器来部署ZooKeeper。

本次我们安装集群模式的。

1、版本的选择和下载

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,版本兼容不太严格。我选择zookeeper-3.4.14.tar.gz,
zookeeper下载地址:https://mirrors.bfsu.edu.cn/apache/zookeeper/

2、zookeeper的安装和环境配置

2.1、安装jdk

2.1.1、jdk选择

目前来看,jdk8版本的在网上的参考资料先对来说挺多的,而且java作为其他组件的依赖基础,选择8版本的挺好的。
因此我选择jdk-8u152-linux-x64.tar.gz

2.1.2、创建目录

我这里方便以后进行集群的搭建,统一/opt/software放组件的架包,/opt/module放解压文件。

mkdir -p /opt/module
mkdir -p /opt/software

2.1.3、解压 JDK

把下载的文件 jdk-8u152-linux-x64.tar.gz 放在/opt/software目录下然后进行解压。

tar -zxf /opt/software/jdk-8u152-linux-x64.tar.gz -C /opt/module/

2.1.4、设置环境变量

vi /etc/profile
在 profile 文件中添加如下内容并保存:

# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin

注意:其中 JAVA_HOME 请根据自己的实际安装路径及 JDK 版本配置进行配置。

让配置生效:

source /etc/profile

2.1.5、检测

输入java -version 显示 java 版本信息,则说明 JDK 安装成功。()

2. 2、安装zookeeper

2. 2.1、解压软件zookeeper

tar -zxf /opt/software/zookeeper-3.4.14.tar.gz -C /opt/module/

2. 2.3、配置环境变量

# ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin

2. 2.3、进入zookeeper的解压文件后执行如下操作

cp /opt/module/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/module/zookeeper-3.4.14/conf/zoo.cfg
sudo vi /opt/module/zookeeper-3.4.14/conf/zoo.cfg
tickTime=2000
clientPort=2181
initLimit=5
syncLimit=2
dataDir=/opt/module/zookeeper-3.4.14/data
dataLogDir=/opt/module/zookeeper-3.4.14/logs
server.0=192.168.229.100:2888:3888
server.1=192.168.229.101:2888:3888
server.2=192.168.229.102:2888:3888

• initLimit
ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。
• syncLimit
配置follower和leader之间发送消息,请求和应答的最大时间长度。
• tickTime
tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
• clientPort
clientPort这个端口就是客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求。
• server.A=B:C:D
A是一个数字,表示这个是第几号服务器;
B是这个服务器的IP地址(或者是与IP地址做了映射的主机名);
C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的Leader服务器交换信息的端口;
D是在leader挂掉时专门用来进行选举leader所用的端口。
注意:如果是伪集群的配置方式,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

2. 2.4、创建myid文件

在dataDir=/opt/module/zookeeper-3.4.14/data这个文件下创建myid文件。执行如下操作。

touch myid
echo 0 > myid

【注】每一个节点对应的数字依次增加即可。

2. 2.5、启动测试zookeeper

每个节点执行/opt/module/zookeeper-3.4.14/bin/zkServer.sh start

2. 2.6、连接集群

/opt/module/zookeeper-3.4.14/bin/zkCli.sh -server nn:2181,dn1:2181,dn2:2181