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

Linux下Kafka集群环境搭建

122次阅读
没有评论

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