阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下Kafka集群环境搭建

404次阅读
没有评论

共计 6042 个字符,预计需要花费 16 分钟才能阅读完成。

Kafka 集群环境搭建

本文只讲述 Kafka 集群环境的搭建步骤, 后续会对 kafka 的其他相关知识进行整理.

1、准备工作

Linux 服务器 3 台(本文将在一台 linux 服务器上建立三个文件夹来模拟三台 linux 服务器, 搭建伪集群)
JDK1.8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Zookeeper http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/
Kafka https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz

 


 

2、开始搭建

安装 JDK(网上有很多详细安装步骤, 本文不在赘述).

配置 & 安装 Zookeeper

# 我的目录统一放在 /opt 下面
#首先创建 Zookeeper 项目目录
mkdir zookeeper 

# 再进入新建好的 zookeeper 目录下创建模拟的三个服务器的项目目录(server1,server2,server3)
mkdir server1
mkdir server2
mkdir server3

# 将下载好的 zookeeper-3.4.10.tar.gz 解压到三个 server 中.
tar -zxvf zookeeper-3.4.10.tar.gz

# 在 server1,server2,server3 中分别创建下面两个文件夹
mkdir data  #存放快照日志
mkdir datalog #存放事物日志

 修改配置文件

进入到解压后的 zookeeper-3.4.10 的 conf 目录.

# 进入 conf 目录
/opt/zookeeper/server1/zookeeper-3.4.10/conf
/opt/zookeeper/server2/zookeeper-3.4.10/conf
/opt/zookeeper/server2/zookeeper-3.4.10/conf

conf 目录中的 zoo_sample.cfg  这个文件是官方给我们的 zookeeper 的样板文件,我们复制一份命名为 zoo.cfg 保存在和样板文件同目录下(server1,server2,server3 操作步骤一样),zoo.cfg 是官方指定的文件命名规则。

修改 /opt/zookeeper/server1/zookeeper-3.4.10/conf/zoo.cfg 文件如下 :( 代码中红色字体是需要我们更改的内容.)

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/server1/data
dataLogDir=/opt/zookeeper/server1/datalog
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

server2,server3 中的 /zookeeper-3.4.10/conf/zoo.cfg 文件 和 server1 中的更改内容大致相同,需要注意的是 dataDir,dataLogDir 属性的值要改为 server2,server3 相应的 data 和 datalog 目录. clientPort=2181 端口号要在 server2 和 server3 中分别改为  clientPort=2182 clientPort=2183

配置文件解释:

#tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。#initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
#syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5 *2000=10 秒
#dataDir:快照日志的存储路径
#dataLogDir:事物日志的存储路径,如果不配置这个那么事物日志会默认存储到 dataDir 制定的目录,这样会严重影响 zk 的性能,当 zk 吞吐量较大的时候,产生的事物日志、快照日志太多
#clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点

创建 myid 文件:

# 在 server 中的 data 文件夹下创建 myid 文件

#server1
/opt/zookeeper/server1/data/myid
文件中内容为 1

#server2
/opt/zookeeper/server2/data/myid
文件中内容为 2

#server3
/opt/zookeeper/server3/data/myid
文件中内容为 3

启动服务并查看

1,启动服务

# 进入到 Zookeeper 的 bin 目录下
#server1
cd /opt/zookeeper/server1/zookeeper-3.4.10/bin

#启动服务
./zkServer.sh start

#server2
cd /opt/zookeeper/server2/zookeeper-3.4.10/bin

#启动服务
./zkServer.sh start

#server3
cd /opt/zookeeper/server3/zookeeper-3.4.10/bin

#启动服务
./zkServer.sh start

# 启动成功后的信息(server1 为例):
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/server1/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

2,检查服务状态

# 检查服务器状态
./zkServer.sh status
 
# 下面的状态为启动成功。ZooKeeper JMX enabled by default
Using config: /home/user/zookeeper/server3/zookeeper3.4.10/bin/../conf/zoo.cfg
Mode: follower      
#Mode 有两种类型:leader 和 follower,leader 代表领导(主节点),follower 代表下属(备节点)
#zk 集群一般只有一个 leader,多个 follower,主一般是相应客户端的读写请求,而从主同步数据,当主挂掉之后就会从 follower 里投票选举一个 leader 出来。

 至此,zookeeper 集群就成功搭建完成了,接下来我们开始搭建 kafka。

配置 & 安装 Kafka

# 创建目录
cd /opt/
mkdir kafka # 创建项目目录
cd kafka
mkdir kafkalogs # 创建 kafka 消息目录,主要存放 kafka 消息 - 对应 server1 服务器
mkdir kafkalogs1 # 创建 kafka 消息目录,主要存放 kafka 消息 - 对应 server2 服务器
mkdir kafkalogs2 # 创建 kafka 消息目录,主要存放 kafka 消息 - 对应 server3 服务器
# 解压 kafka_2.11-1.0.0.tgz 到 kafka 目录下

tar -zxvf
kafka_2.11-1.0.0.tgz
# 如果是三台真实的 linux 服务器, 只需要将 kafka_2.11-1.0.0.tgz 解压到三台服务器的 /opt/kafka 目录下, 再新建 kafkalogs 即可。

修改 kafka 配置文件

# 进入到 config 目录
cd /opt/kafka/kafka_2.11-1.0.0/config/

我们可以看到目录下有 zookeeper 的一些文件, 这是 kafka 内置的 zookeeper 集群, 我们可以使用它来直接启动,但建议使用独立的 zookeeper 集群。

-rw-r--r--. 1 root root  906 Oct 27 08:56 connect-console-sink.properties
-rw-r--r--. 1 root root  909 Oct 27 08:56 connect-console-source.properties
-rw-r--r--. 1 root root 5807 Oct 27 08:56 connect-distributed.properties
-rw-r--r--. 1 root root  883 Oct 27 08:56 connect-file-sink.properties
-rw-r--r--. 1 root root  881 Oct 27 08:56 connect-file-source.properties
-rw-r--r--. 1 root root 1111 Oct 27 08:56 connect-log4j.properties
-rw-r--r--. 1 root root 2730 Oct 27 08:56 connect-standalone.properties
-rw-r--r--. 1 root root 1221 Oct 27 08:56 consumer.properties
-rw-r--r--. 1 root root 4727 Oct 27 08:56 log4j.properties
-rw-r--r--. 1 root root 1919 Oct 27 08:56 producer.properties
-rw-r--r--. 1 root root  173 Jan  7 05:54 server-1.properties
-rw-r--r--. 1 root root  173 Jan  7 05:56 server-2.properties
-rw-r--r--. 1 root root  172 Jan  7 05:55 server.properties
-rw-r--r--. 1 root root 1032 Oct 27 08:56 tools-log4j.properties
-rw-r--r--. 1 root root 1023 Oct 27 08:56 zookeeper.properties

我们主要修改 server.properties 这个文件即可. 用以下代码覆盖 server.properties 里的内容进行保存.(这些是主要参数, 以后需要自定义其他参数再做调整)

broker.id=0
listeners=PLAINTEXT://127.0.0.1:9092
port=9092
host.name=127.0.0.1
log.dirs=/opt/kafka/kafkalogs
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

因为我是在一台服务器搭建,可以将 server.properties 复制 两份 ,分别命名为server1.properties,server2.properties, 来模拟三台服务器。如果是在三台不同服务器,则不需要复制多份,只需要在三台服务器分别对 server.properties 进行配置即可.

# 在 config 目录下复制两份 server.properties,并命名 server-1.propertis,server-2.propertis

cp server.properties server-1.propertis

cp server.properties server-2.propertis

修改 server1.properties 如下:

broker.id=1
listeners=PLAINTEXT://127.0.0.1:9093
port=9093
host.name=127.0.0.1
log.dirs=/opt/kafka/kafkalogs1
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

修改 server2.properties 如下:

broker.id=2
listeners=PLAINTEXT://127.0.0.1:9094
port=9094
host.name=127.0.0.1
log.dirs=/opt/kafka/kafkalogs2
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

启动 Kafka 集群并测试

1、启动服务

# 从后台启动 Kafka 集群(3 台都需要启动)#进入到 kafka 的根目录 
cd /opt/kafka/kafka_2.11-1.0.0

#模拟启动三个配置文件, 代表三台服务器.
./bin/kafka-server-start.sh -daemon config/server.properties
./bin/kafka-server-start.sh -daemon config/server1.properties
./bin/kafka-server-start.sh -daemon config/server2.properties

# 启动命令中的 -daemon 表示以守护进程的方式启动.

 2、测试 kafka

创建主题:

# 创建一个 test 主题,分区数为 3, 备份数为 3
#在 kafka 根目录执行下面命令
bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 3 --partitions 3 --topic test

启动生产者:

#kafka 根目录执行,启动一个生产者
bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test

不要关闭生产者窗口,再打开一个新窗口,进入到 kafka 根目录,启动消费者:

# 启动消费者命令
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test --from-beginning

在生产者发送一条消息,查看消费者是否有接收成功。接收成功后 kafka 集成环境搭建完成。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-01/150562.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6042字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7976528
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...