zookeeper(二) 安装

环境准备

安装JDK

jdk安装参考:https://www.jianshu.com/p/f000e05f3512

下载 zookeeper

官网地址:https://downloads.apache.org/zookeeper/

上传

使用 命令:scp -r apache-zookeeper-3.5.7-bin.tar.gz atguigu@hadoop102:/opt/software

上传压缩包到服务器
使用gitBash上传压缩包
上传zookeeper安装包

解压与安装

使用命令:tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/ 进行解压
tar -zxvf :解压 tar.gz 命令

-C 解压到指定目录
压缩包解压
查看/opt/module/目录
解压目录

重命名 apache-zookeeper-3.5.7-bin 为 zookeeper-3.5.7

 mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7

配置环境变量(可选项)
在/etc/profile.d/ 下面创建一个my_env.sh 文件

sudo vi /etc/profile.d/my_env.sh

my_env.sh内容如下

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

source /etc/profile.d/my_env.sh 使my_env.sh 生效


配置

  1. 重名 zoo_sample.cfg 为 zoo.cfg
cd  /opt/module/zookeeper-3.5.7/conf
mv zoo_sample.cfg zoo.cfg
  1. 使用 ls 命令查看重名情况
configuration.xsl  log4j.properties  zoo.cfg
  1. 修改 zoo.cfg 配置

vi zoo.cfg 将 dataDir=/tmp/zookeeper 更改成 dataDir=/opt/module/zookeeper-3.5.7/data

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/opt/module/zookeeper-3.5.7/data
# the port at which the clients will connect
clientPort=2181

启动测试

进入 zookeeper的bin 目录中

cd /opt/module/zookeeper-3.5.7/bin

[*****@hadoop102 bin]$ ll
总用量 56
-rwxr-xr-x. 1 ***** *****  232 5月   4 2018 README.txt
-rwxr-xr-x. 1 ***** *****  2067 2月   7 2020 zkCleanup.sh
-rwxr-xr-x. 1 ***** ***** 1158 2月  10 2020 zkCli.cmd
-rwxr-xr-x. 1 ***** ***** 1621 2月   7 2020 zkCli.sh
-rwxr-xr-x. 1 ***** *****  1766 2月   7 2020 zkEnv.cmd
-rwxr-xr-x. 1 ***** ***** 3690 1月  31 2020 zkEnv.sh
-rwxr-xr-x. 1 ***** ***** 1286 1月  31 2020 zkServer.cmd
-rwxr-xr-x. 1 ***** ***** 4573 2月   7 2020 zkServer-initialize.sh
-rwxr-xr-x. 1 ***** *****  9386 2月   7 2020 zkServer.sh
-rwxr-xr-x. 1 ***** ***** 996 10月  3 2019 zkTxnLogToolkit.cmd
-rwxr-xr-x. 1 ***** ***** 1385 2月   7 2020 zkTxnLogToolkit.sh

启动服务

zkServer.sh start

ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看服务状态

sh zkServer.sh status
Mode: standalone 标识单机模式

ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: standalone

集群配置

额外准备两台服务,按照上面搭建好zookeeper环境。

hadoop103
hadoop104

配置myid

在 data目录中创建一个 myid文件
位于:dataDir=/opt/module/zookeeper-3.5.7/data 目录下

mkdir myid
hadoop102 的myid 配置成2
hadoop103 的myid 配置成3
hadoop104 的myid 配置成4

更改zoo.cf 配置

# 进入 conf 配置目录中
cd  /opt/module/zookeeper-3.5.7/conf
# 编辑 zoo.cfg
vi zoo.cfg
# 在文件最后添加如下配置
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

配置参数解读
server.A=B:C:D。

A是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B是这个服务器的地址;
C是这个服务器Follower与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。


免密登录

这里就不讲解了,按照下面配置就行
https://www.cnblogs.com/luckforefforts/p/13797705.html

集群测试

编写集群启动脚本

创建 zkCluster 文件(放在哪里无所谓,根目录就行)

cd ~
vi zkCluster 

设置执行权限

chmod u+x zkCluster 

脚本内容

#!/bin/bash

# 保证必须其只能有一个参数
if [ $# -ne 1 ];then
    echo "args number is error!!! "
    exit
fi
#定义一个变量记录 zookeeper 的命令
args=""

case $1 in
    "start")
        args="start"
        ;;
    "start-foreground")
        args="start-foreground"
        ;;
    "stop")
        args="stop"
        ;;
    "restart")
        args="restart"
        ;;
    "status")
        args="status"
        ;;
    "print-cmd")
        args="print-cmd"
        ;;
        
    *)
        echo " {start|start-foreground|stop|restart|status|print-cmd}"
        exit
        ;;
esac

# 批量执行服务
for host in hadoop102 hadoop103 hadoop104
do
    echo "===================$args================"
    # 以及保证了 所有的集群环境环境配置都是一样的,所以就直接写的全路径
    ssh $host /opt/module/zookeeper-3.5.7/bin/zkServer.sh  $args
done

启动测试 sh zkCluster start

[****@hadoop102 bin]$ sh zkCluster start
start
===================start================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
===================start================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
===================start================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看服务的启动状态 sh zkCluster status

[***@hadoop102 bin]$ sh zkCluster status
status
===================status================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
===================status================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
===================status================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

启动zookeeper的客户端

sh zkCli.sh
使用 quit 退出客户端

zoo.cfg 参数配置详解

tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒

Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)

initLimit =10:LF初始通信时限

集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。

syncLimit =5:LF同步通信时限

集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

dataDir:数据文件目录+数据持久化路径

主要用于保存Zookeeper中的数据。

server.myid=服务ip:2888:3888

服务器集群配置,
myid:每个zookeeper,都必须配置一个唯一的myid
2888:服务器内部通信端口
3888:服务器选举通信端口

clientPort =2181:客户端连接端口

监听客户端连接的端口。

END...

你可能感兴趣的:(zookeeper(二) 安装)