Kafka环境部署

1.Zookeeper简介

ZooKeeper是一个开源的分布式组件,能够提供少量数据的存储,并保证这些数据的一致性,另外还提供诸如 临时节点自动删除、顺序节点自增长、发布/订阅 等特性,从而能为分布式程序提供协调服务。基于它,可以实现分布式锁、统一命名服务、配置中心、分布式同步等功能。
它是Google的Chubby一个开源的实现。它本身以集群的形式存在,这个zk集群用来对应用程序集群进行管理,监视应用程序集群中各个节点的状态,并根据应用程序集群中各个节点提交的反馈信息决定下一步的合理操作。

在这里插入图片描述

2.Zookeeper下载和安装

ZooKeeper的下载很简单,安装就是解压一下,也很简单。
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

3. 准备工作

创建zk用户

安装jdk1.8

上传zooKeeper、kafka安装包
解压缩
tar -zxvf kafka_2.11-2.2.1.tgz
tar -zxvf zookeeper-3.4.13.tar.gz

创建数据目录,在每台机器执行
cd /home/zk
mkdir -p data/zookeeper/
mkdir -p data/kafka

4 安装ZooKeeper

4.1 配置ZooKeeper

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
syncLimit=5
# example sakes.
dataDir=/home/zk/data/zookeeper
# the port at which the clients will connect
clientPort=2181
server.1=192.168.90.131:8880:7770
server.2=192.168.90.132:8880:7770
server.3=192.168.90.133:8880:7770

4.2 配置日志目录:

mkdir -p /home/zk/zookeeper-3.4.13/logs
vi zkEnv.sh
添加如下行:
ZOO_LOG_DIR=/home/zk/zookeeper-3.4.13/logs

分发文件
cd /home/zk/ 回到home目录
scp -r zookeeper-3.4.13 192.168.90.132:pwd
scp -r zookeeper-3.4.13 192.168.90.133:pwd

4.3配置myid

每台机器进入如下目录
cd /home/zk/data/zookeeper/

每台机器分别执行:
echo “1” > myid
echo “2” > myid
echo “3” > myid

4.4 启动ZooKeeper集群

在每台机器执行:
cd /home/zk/zookeeper-3.4.13
bin/zkServer.sh start

4.5 测试

执行 bin/zkServer.sh status
若为一个leader,两个follower,则集群正常

将其中一个leader干掉,会自动选举出新的leader

4.6 接入ZooKeeper客户端

./zkCli.sh -server zkserver1:2181

5 ZooKeeper配置文件中的配置项的含义

配置文件中配置项的含义:

  • tickTime: zookeeper中使用的基本时间单位,毫秒值,比如可以设为1000,那么基本时间单位就是1000ms,也就是1s。
  • initLimit: Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。如果该参数设置为5,就说明时间限制为5倍tickTime,即5*1000=5000ms=5s。
  • syncLimit: 在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。如果该参数设置为2,说明时间限制为2倍tickTime,即2000ms。
  • dataDir: 数据目录. 可以是任意目录,一般是节点安装目录下data目录。
  • clientPort: 监听client连接的端口号。
  • dataLogDir: log目录, 同样可以是任意目录,一般是节点安装目录下的logs目录。如果没有设置该参数,将使用和dataDir相同的设置。
  • server.X=hostname:B:C 其中X是一个数字, 表示这是第几号server,它的值和myid文件中的值对应。B是配置该server和集群中的leader交换消息所使用的端口。C配置选举leader时所使用的端口。

6.Zookeeper常用命令

6.1Zookeeper服务命令

在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作

  1. 启动ZK服务: bin/zkServer.sh start
  2. 查看ZK服务状态: bin/zkServer.sh status
  3. 停止ZK服务: bin/zkServer.sh stop
  4. 重启ZK服务: bin/zkServer.sh restart
  5. 连接服务器: zkCli.sh -server 127.0.0.1:2181

6.2 连接Zookeeper

启动ZooKeeper服务之后,我们可以使用如下命令连接到 ZooKeeper 服务:
zkCli.cmd -server 127.0.0.1:2181

Linux环境下:
zkCli.sh -server 127.0.0.1:2181

连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息,如下:

在这里插入图片描述

6.3 Zookeeper客户端命令

我们可以使用 help命令来查看帮助:
在这里插入图片描述
在这里插入图片描述

6.3.1 创建节点

使用create命令,可以创建一个Zookeeper节点, 如
create [-s] [-e] path data acl
其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点;acl用来进行权限控制。

持久(非顺序)节点、 craete
持久顺序节点 create –s
临时(非顺序)节点 create -e
临时顺序节点 create
在这里插入图片描述

  • 创建顺序节点
    使用 create -s /zk-test 123 命令创建zk-test顺序节点

可以看到创建的zk-test节点后面添加了一串数字以示区别。

  • 创建顺临时节点
    使用 create -e /zk-temp 123 命令创建zk-temp临时节点

临时节点在客户端会话结束后,就会自动删除,下面使用quit命令退出客户端

再次使用客户端连接服务端,并使用ls / 命令查看根目录下的节点

可以看到根目录下已经不存在zk-temp临时节点了。

  • 创建永久节点
    使用 create /zk-permanent 123 命令创建zk-permanent永久节点

可以看到永久节点不同于顺序节点,不会自动在后面添加一串数字。

6.3.2 读取节点

与读取相关的命令有ls 命令和get 命令,ls命令可以列出Zookeeper指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;get命令可以获取ZK指定节点的数据内容和属性信息。其用法分别如下

ls path [watch]
get path [watch]
ls2 path [watch]

若获取根节点下面的所有子节点,使用ls / 命令即可

在这里插入图片描述
若想获取根节点数据内容和属性信息,使用get / 命令即可
在这里插入图片描述

也可以使用ls2 / 命令查看
在这里插入图片描述
可以看到其子节点数量为8。
若想获取/zk-permanent的数据内容和属性,可使用如下命令:
get /zk-permanent
在这里插入图片描述
可以看到其数据内容为123,还有其他的属性。

6.3.3更新节点

使用set命令,可以更新指定节点的数据内容,用法如下
在这里插入图片描述
set path data [version]
version 可以用来做锁
其中,data就是要更新的新内容,version表示数据版本,如将/zk-permanent节点的数据更新为456,可以使用如下命令:set /zk-permanent 456

现在dataVersion已经变为1了,表示进行了更新。

6.3.4删除节点

使用delete命令可以删除Zookeeper上的指定节点,用法如下
在这里插入图片描述
delete path [version]

其中version也是表示数据版本,使用delete /zk-permanent 命令即可删除/zk-permanent节点

可以看到,已经成功删除/zk-permanent节点。值得注意的是,若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。

7. ZooKeeper Watcher机制

在这里插入图片描述

8. 安装Kafka

8.1 分发kafka安装包

scp -r kafka_2.11-2.2.1 192.168.90.132:pwd
scp -r kafka_2.11-2.2.1 192.168.90.133:pwd

8.2配置kafka

修改每台机器/home/zk/kafka_2.11-2.2.1/config/server.properties 文件

每台机器的log.dir值都为
log.dir=/home/zk/data/kafka

修改每台机器broker.id属性,值分别为:
broker.id=0、broker.id=1、broker.id=2

给每台机器添加listeners属性,值分别为:
listeners=PLAINTEXT://zkserver1:9092
listeners=PLAINTEXT://zkserver2:9092
listeners=PLAINTEXT://zkserver3:9092

8.3 启动kafka

在每台机器执行
cd /home/zk/kafka_2.11-2.2.1
bin/kafka-server-start.sh config/server.properties &

8.4 测试kafka

关闭所有shell,在每台机器执行
exit

重新打开两个shell
进入kafka根目录 cd /home/zk/kafka_2.11-2.2.1

创建测试Topic
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic test --partitions 3 --replication-factor 2

启动consumer
bin/kafka-console-consumer.sh --bootstrap-server 192.168.90.131:9092,192.168.90.132:9092,192.168.90.133:9092 --topic test

启动producer
bin/kafka-console-producer.sh --broker-list 192.168.90.131:9092,192.168.90.132:9092,192.168.90.133:9092 --topic test

向pruducer命令行输入几条消息,
在这里插入图片描述

若consumer可以成功接受,说明kafka集群正常
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值