首页 > 其他分享 >kafka集群搭建

kafka集群搭建

时间:2023-06-25 15:47:13浏览次数:47  
标签:opt zookeeper broker 192.168 kafka 集群 properties 搭建

  https://blog.csdn.net/wudidahuanggua/article/details/127086186

1 安装准备

  请确保zookeeper集群的正常启动

  可参考:大数据学前准备--zookeeper详解与集群搭建(保姆级教程)

 

2 下载kafka

Apache Kafka

上传kafka至node001节点

 

3 安装

3.1 解压

tar -zxvf kafka_2.12-3.2.3.tgz 

 

3.2 改名

mv /opt/kafka_2.12-3.2.3/ /opt/kafka

 

3.3 修改配置文件

  修改前先备份一份

  使用如下配置覆盖原先的配置

vim /opt/kafka/config/server.properties

 

# 当前机器在集群中的唯一标识,和zookeeper的myid性质一样
broker.id=1
# 套接字服务器监听的地址。如果没有配置,主机名将等于的值
listeners=PLAINTEXT://192.168.1.101:9092
# 当前kafka对外提供服务的端口默认是9092
port=9092
# 这个是borker进行网络处理的线程数
num.network.threads=3
# 这个是borker进行I/O处理的线程数
num.io.threads=8
# 发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.send.buffer.bytes=102400
# kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.receive.buffer.bytes=102400
# 这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
socket.request.max.bytes=104857600
# 消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个
log.dirs=/opt/kafka/log/kafka-logs
# 默认的分区数,一个topic默认1个分区数
num.partitions=1
# 每个数据目录用来日志恢复的线程数目
num.recovery.threads.per.data.dir=1
# 默认消息的最大持久化时间,168小时,7天
log.retention.hours=168
# 这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.segment.bytes=1073741824
# 每隔300000毫秒去检查上面配置的log失效时间
log.retention.check.interval.ms=300000
# 是否启用log压缩,一般不用启用,启用的话可以提高性能
log.cleaner.enable=false
# 设置zookeeper的连接端口
zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
# 设置zookeeper的连接超时时间
zookeeper.connection.timeout.ms=6000

 

3.4 创建server.properties配置文件中的日志存放目录

mkdir -p /opt/kafka/log

 

3.5 配置文件producer.properties

vim /opt/kafka/config/producer.properties

  末行加入

metadata.broker.list=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181

 

3.6 配置文件consumer.properties

vim /opt/kafka/config/consumer.properties

  末行加入

zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181

 

3.7 环境变量配置

vim /etc/profile

  末行加入

export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin

  刷新配置

source /etc/profile

 

4 分发文件至node002与node003节点

4.1 分发(拷贝)kafka

scp -r /opt/kafka/ node002:/opt/     # 分发至node002节点

scp -r /opt/kafka/ node003:/opt/     # 分发至node003节点

 

4.2 配置环境变量

  同node1的配置,对node2和node3进行环境变量配置

 

5 修改node2和node3配置文件

  修改node002与node003的server.properties配置文件

  将node002中server.properties的broker.id修改为2

  将node003中server.properties的broker.id修改为3

  将node002中server.properties的listeners修改为192.168.1.102:9092

  将node003中server.properties的listeners修改为192.168.1.103:9092

 

6 启动

6.1 先启动zookeeper集群

  三台节点都输入:zkServer.sh start

  再通过zkServer.sh status查看启动情况

 

6.2 启动Kafka

  三台节点执行

kafka-server-start.sh /opt/kafka/config/server.properties

 

7 Kafka在zookeeper中存储结构图

 

7.1 topic注册信息

/brokers/topics/[topicName] :
存储某个topic的partitions所有分配信息

  我们输入zkCli.sh进入zookeeper客户端

  使用:get /brokers/topics/topic-test

 

7.2 partition状态信息

/brokers/topics/[topicName]/partitions/[0...N] 其中[0..N]表示partition索引号
/brokers/topics/[topicName]/partitions/[partitionId]/state

 

"controller_epoch": 表示kafka集群中的中央控制器选举次数,
"leader": 表示该partition选举leader的brokerId,
"version": 版本编号默认为1,
"leader_epoch": 该partition leader选举次数,
"isr": [同步副本组brokerId列表]

 

7.3 Broker注册信息

/brokers/ids/[0...N]                 
每个broker的配置文件中都需要指定一个数字类型的id(全局不可重复),此节点为临时znode(EPHEMERAL)

"jmx_port": jmx端口号,
"timestamp": kafka broker初始启动时的时间戳,
"host": 主机名或ip地址,
"version": 版本编号默认为1,
"port": kafka broker的服务端端口号,由server.properties中参数port确定

 

7.4 Controller epoch

/controller_epoch --> int (epoch)
此值为一个数字,kafka集群中第一个broker第一次启动时为1,以后只要集群中center controller中央控制器所在broker变更或挂掉,就会重新选举新的center controller,每次center controller变更controller_epoch值就会 + 1;

 

7.5 Controller注册信息

/controller -> int (broker id of the controller)  存储center controller中央控制器所在kafka broker的信息

"version": 版本编号默认为1,
"brokerid": kafka集群中broker唯一编号,
"timestamp": kafka broker中央控制器变更时的时间戳

 



 

标签:opt,zookeeper,broker,192.168,kafka,集群,properties,搭建
From: https://www.cnblogs.com/jthr/p/17503029.html

相关文章

  • kafka基础
    kafka基础知识kafka简介kafka是一个高性能、分布式的流数据平台,是一个分布式的发布-订阅系统和一个强大的队列特点:高性能使用顺序读写磁盘的方式来存储和读取消息可扩展采取分布式设计(支持Server间的消息分区和分布式消费,同时保证每个partition内的消息顺序传输)......
  • kafka02 kafka术语和架构简介
    1Kafka中的术语解释概述在深入理解Kafka之前,先介绍一下Kafka中的术语。 1.1图示上图中一个topic配置了3个partition。Partition1有两个offset:0和1。Partition2有4个offset。Partition3有1个offset。副本的id和副本所在的机器的id恰好相同。如果一个topi......
  • MySQL 5.7 基于GTID搭建主从复制
    MySQL5.7基于GTID搭建主从复制 1.搭建过程1.1准备两个MySQL实例mysqld--initialize-insecure--user=mysql--basedir=/usr/local/mysql--datadir=/mysql/3307/data/mysqld--initialize-insecure--user=mysql--basedir=/usr/local/mysql--datadir=/mysql/3308/data/mys......
  • 最简单的11g Active DataGuard(ADG)搭建配置过程(项目步
    最简单的11gActiveDataGuard(ADG)搭建配置过程(项目步骤) 一、环境介绍:  我在db01和db02两台Linux虚拟机上首先分别安装了一套数据库软件,在db01主机上创建了名为woo的数据库;我们这次的实验是要搭建了一套Oracle11gActiveDataGuard;目的是为了实现数据库同步的功能,并且了解O......
  • Keepalived+Nginx 高可用集群架构
                                  Keepalived+Nginx高可用集群(主从模式)                                             ......
  • kafka01 kafka及消息队列简介
     1Kafka是什么Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统)。 2消息系统简介一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和......
  • linux常见软件的环境搭建
    1、python环境搭建python:wegethttps://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xztar-JxvfPython-3.7.0.tar.xzyum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-dev......
  • 在Linux下搭建Git服务器
    众所周知,版本系统在开发环境中是必不可少的,但是我们可以把代码免费的托管到GitHub上,如果我们不原意公开项目的源代码,公司又不想付费使用,那么我们可以自己搭建一台Git服务器,可以用Gitosis来管理公钥,还是比较方便的。搭建环境:服务器 CentOS6.6+git(version1.8.3.1)客户......
  • OpenGL 环境搭建(VS2019)
    1.GLFW下载:https://sourceforge.net/projects/glfw/官网:https://www.glfw.org/download.html(可能登录不了)下载后解压glfw-3.3.8.bin.WIN32.zip将include和lib-vc2019配置到VS的工程内需要的lib:openGL32.lib ---不要忘了glfw3.lib测试代码:#include<GLFW/glfw3.......
  • 使用阿里云服务器搭建我的世界服务器并启动游戏
    一、选择服务器镜像我使用的是Ubuntu20.04 二、使用shell终端连接器连接服务器 三、安装必要的软件包来构建mcrcon工具:sudoaptupdatesudoaptinstallgitbuild-essential安装Java运行环境aptinstallopenjdk-17-jre注意:高版本jdk兼容低版本mc 注意:下载完......