实战Kafka的部署

目录

一、环境准备

二、安装配置jdk8

(1)Kafka、Zookeeper(简称:ZK)运行依赖jdk8

三、安装配置ZK

(1)安装

(2)配置

四、配置Kafka

(1)配置

五、启动、验证ZK集群

(1)启动

(2)验证

六、启动、验证Kafka

(1)启动

(2)验证

[7、监控 Kafka Manager](#7、监控 Kafka Manager)


一、环境准备

  • 服务器
安装软件 主机名 IP地址 系统版本 配置
zookeeper/kafka Kafka1 10.12.153.200 centos7.5.1804 1核2G
zookeeper/kafka Kafka2 10.12.153.201 centos7.5.1804 1核2G
zookeeper/kafka Kafka3 10.12.153.202 centos7.5.1804 1核2G
  • 软件版本:jdk-8u121-linux-x64.tar.gz、 kafka_2.11-2.0.0.tgz

  • 示例节点:10.12.153.200

  • 配置域名解析

  • 关闭防火墙selinux

二、安装配置jdk8

(1)Kafka、Zookeeper(简称:ZK)运行依赖jdk8

上传并解压jdk8的包至/usr/local/目录下

复制代码
tar zxvf /usr/local/package/jdk-8u121-linux-x64.tar.gz -C /usr/local/

改名为jdk8

复制代码
mv  jdk1.8.0_211  jdk8

配置环境变量

复制代码
vim /etc/profile
最后面加入以下内容
export RATH=/usr/local/jkd8/bin:$PATH
保存退出后重新加载
source /etc/profile

三、安装配置ZK

Kafka运行依赖ZK,Kafka官网提供的tar包中,已经包含了ZK,这里不再额下载ZK程序。

官网地址Apache Kafka

(1)安装
复制代码
tar zxvf /usr/local/package/kafka_2.11-2.0.0.tgz -C /usr/local/
(2)配置
复制代码
vim /usr/local/kafka_2.11-2.0.0/config/zookeeper.properties
#删除全部内容粘贴以下内容
dataDir=/opt/data/zookeeper/data 
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181 
tickTime=2000 
initLimit=20 
syncLimit=10 
server.1=10.12.153.200:2888:3888             //kafka集群IP:Port .1为id 3处要对应
server.2=10.12.153.201:2888:3888
server.3=10.12.153.202:2888:3888

配置项含义:

复制代码
dataDir ZK数据存放目录。
dataLogDir  ZK日志存放目录。
clientPort  客户端连接ZK服务的端口。
tickTime        ZK服务器之间或客户端与服务器之间维持心跳的时间间隔。
initLimit       允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
syncLimit   Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
server.1=172.16.244.31:2888:3888    2888是follower与leader交换信息的端口,3888是当leader挂了时用来执行选举时服务器相互通信的端口。

创建data、log目录

复制代码
mkdir -p /opt/data/zookeeper/{data,logs}

创建myid文件

复制代码
​​​​​​​kafka1服务器

echo 1 > /opt/data/zookeeper/data/myid

kafka2服务器

echo 2 > /opt/data/zookeeper/data/myid

kafka3服务器

echo 3> /opt/data/zookeeper/data/myid

四、配置Kafka

(1)配置
复制代码
vim /usr/local/kafka_2.11-2.0.0/config/server.properties
#覆盖为以下内容,注意broker.id号三台机器不能为一样的,必须对应上面的myid
broker.id=1
listeners=PLAINTEXT://10.12.153.200:9092  #本机ip
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=10.12.153.200:2181,10.12.153.201:2181,10.12.153.202:2181  #kafka集群ip地址
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

配置项含义:

复制代码
broker.id   每个server需要单独配置broker id,如果不配置系统会自动配置。
listeners       监听地址,格式PLAINTEXT://IP:端口。
num.network.threads 接收和发送网络信息的线程数。
num.io.threads          服务器用于处理请求的线程数,其中可能包括磁盘I/O。
socket.send.buffer.bytes    套接字服务器使用的发送缓冲区(SO_SNDBUF)
socket.receive.buffer.bytes 套接字服务器使用的接收缓冲区(SO_RCVBUF)
socket.request.max.bytes        套接字服务器将接受的请求的最大大小(防止OOM)
log.dirs        日志文件目录。
num.partitions  partition数量。
num.recovery.threads.per.data.dir       在启动时恢复日志、关闭时刷盘日志每个数据目录的线程的数量,默认1。
offsets.topic.replication.factor        偏移量话题的复制因子(设置更高保证可用),为了保证有效的复制,偏移话题的复制因子是可配置的,在偏移话题的第一次请求的时候可用的broker的数量至少为复制因子的大小,否则要么话题创建失败,要么复制因子取可用broker的数量和配置复制因子的最小值。
log.retention.hours 日志文件删除之前保留的时间(单位小时),默认168
log.segment.bytes   单个日志文件的大小,默认1073741824
log.retention.check.interval.ms 检查日志段以查看是否可以根据保留策略删除它们的时间间隔。
zookeeper.connect   ZK主机地址,如果zookeeper是集群则以逗号隔开。
zookeeper.connection.timeout.ms     连接到Zookeeper的超时时间。

创建log目录

复制代码
mkdir -p /opt/data/kafka/logs

五、启动、验证ZK集群

(1)启动

在三个节点依次执行:

复制代码
cd /usr/local/kafka_2.11-2.0.0/
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
(2)验证

查看ZK配置

下载nmap

复制代码
yum install nmap

echo conf | nc 127.0.0.1 2181
复制代码
显示如下为成功
clientPort=2181
dataDir=/opt/data/zookeeper/data/version-2
dataLogDir=/opt/data/zookeeper/logs/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=1
initLimit=20
syncLimit=10
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0

查看ZK状态

复制代码
 echo stat |nc 127.0.0.1 2181
复制代码
显示以下内容为成功
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 00:39 GMT
Clients:
 /127.0.0.1:51876[0](queued=0,recved=1,sent=0)
​
Latency min/avg/max: 0/0/0
Received: 2
Sent: 1
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: follower
Node count: 4

查看端口

复制代码
lsof -i:2181
复制代码
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    15002 root   98u  IPv4  43385      0t0  TCP *:eforward (LISTEN)

六、启动、验证Kafka

(1)启动

在三个节点依次执行:

复制代码
cd /usr/local/kafka_2.11-2.0.0/
​​​​​​​
nohup bin/kafka-server-start.sh config/server.properties &
(2)验证

在10.12.153.200上创建topic

复制代码
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testtopic

Created topic "testtopic".

查询10.12.153.200上的topic

复制代码
bin/kafka-topics.sh --zookeeper 10.12.153.200:2181 --list 
              
testtopic

查询10.12.153.201上的topic

复制代码
bin/kafka-topics.sh --zookeeper 10.3.145.42:2181 --list 
​​​​​​​
testtopic

查询10.12.153.202上的topic

复制代码
bin/kafka-topics.sh --zookeeper 10.3.145.43:2181 --list 
​​​​​​​
testtopic

模拟消息生产和消费 发送消息到10.12.153.200

复制代码
bin/kafka-console-producer.sh --broker-list 10.3.145.41:9092 --topic testtopic 
​​​​​​​ 
>Hello World!

从10.12.153.201接受消息

复制代码
bin/kafka-console-consumer.sh --bootstrap-server  10.3.145.41:9092 --topic testtopic --from-beginning 
​​​​​​​
Hello World!
扩展
7、监控 Kafka Manager

Kafka-manager 是 Yahoo 公司开源的集群管理工具。

可以在 Github 上下载安装:GitHub - yahoo/CMAK: CMAK is a tool for managing Apache Kafka clusters

如果遇到 Kafka 消费不及时的话,可以通过到具体 cluster 页面上,增加 partition。Kafka 通过 partition 分区来提高并发消费速度

希望能够帮助到大家!!!

相关推荐
mghio4 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室9 小时前
java日常开发笔记和开发问题记录
java
咖啡教室9 小时前
java练习项目记录笔记
java
鱼樱前端9 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea10 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea10 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
数据智能老司机11 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机11 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
李少兄12 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http