首页 > 系统相关 >Linux系统下kafka集群安装部署

Linux系统下kafka集群安装部署

时间:2023-12-19 15:47:56浏览次数:45  
标签:-- 6667 server topic sh 集群 Linux kafka

Linux系统下kafka集群安装部署   Linux系统下kafka集群安装部署 | 系统运维 (osyunwei.com) 2023年05月01日 ⁄ kafka ⁄ 暂无评论 ⁄ 被围观 1,254次+

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。

操作系统:CentOS-7.x

kafka版本:kafka_2.12-3.4.0

三台服务器ip地址:

192.168.21.100,192.168.21.101,192.168.21.128

1、关闭selinux

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

setenforce 0

2、关闭防火墙

kafka默认使用tcp9092端口号,建议在内网环境下部署kafka集群,关闭服务器防火墙。

CentOS-7.x默认使用的是firewall作为防火墙,关闭

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

systemctl mask firewalld

systemctl stop firewalld

yum remove firewalld

3、安装jdk

kafka依赖Java,需要安装java环境,我们使用Java 1.8版本

Linux系统下安装Java JDK:https://www.osyunwei.com/archives/12872.html

4、安装配置zookeeper

kafka依赖zookeeper,需要先安装部署,并且优先于kafka启动

也可以使用kafka自带的zookeeper,这里我们使用自定义安装的zookeeper

Linux系统下部署ZooKeeper集群:https://www.osyunwei.com/archives/13465.html

5、添加hosts解析

vi /etc/hosts #编辑配置文件

192.168.21.100 kafka01

192.168.21.101 kafka02

192.168.21.128 kafka03

:wq! #保存退出

6、安装kafka

6.1、下载地址

https://kafka.apache.org/downloads

https://downloads.apache.org/kafka/3.4.0/kafka_2.12-3.4.0.tgz

上传到/usr/local/src目录

6.1创建kafka安装目录

mkdir -p /data/server/kafka

mkdir -p /data/server/kafka/kafka-logs

cd /usr/local/src

#解压到安装目录

tar zxvf kafka_2.12-3.4.0.tgz -C /data/server/kafka --strip-components 1

6.2配置环境变量

vi /etc/profile

#set kafka environment

export KAFKA_HOME=/data/server/kafka

export PATH=$PATH:$KAFKA_HOME/bin

:wq! #保存退出

source /etc/profile #使配置立即生效

6.3配置kafka

cp /data/server/kafka/config/server.properties /data/server/kafka/config/server.properties.bak

vi /data/server/kafka/config/server.properties #kafka配置文件

broker.id=1 # 唯一标识在集群中的ID,每个节点的broker.id值唯一,1,2,3(192.168.21.100是1,192.168.21.101是2,192.168.21.128是3),最小是0,最大1000

listeners=PLAINTEXT://0.0.0.0:6667 #broker 服务器要监听的地址及端口,默认监听端口9092,这里改为6667,是kafka真正bind的地址

num.network.threads=32 #处理网络请求的最大线程数

num.io.threads=32 #处理I/O请求的线程数

advertised.listeners=PLAINTEXT://192.168.21.100:6667 #各自填写每个节点ip地址,暴露对外访问的地址,这个是对外提供的地址 , 当client请求到kafka时, 会分发这个地址,如果没有设置,会用listeners地址

log.dirs=/data/server/kafka/kafka-logs

zookeeper.connect=192.168.21.100:2181,192.168.21.100:2181,192.168.21.128:2181

offsets.topic.replication.factor=3 #默认主题__consumer_offsets的副本数量,默认值是1,集群环境下修改为节点数量3,否则挂掉一个节点整个集群就不可用了

num.partitions=3 #全局默认分区,集群环境下修改为节点数量3

default.replication.factor=3 #全局默认副本,集群环境下修改为节点数量3

delete.topic.enable=true #允许通过kafka命令行就可以直接删除topic

auto.create.topics.enable=false #关闭自动创建topic

log.retention.hours=7 #默认日志保留时间7天(168小时)

buffer.memory=2684354560

batch.size=524288

max.request.size=5242880

linger.ms=50

:wq! #保存退出

6.4启动kafka

zookeeper集群一定要在Kafka启动之前启动,因为kafka的节点需要向zookeeper注册,三台机器分别启动kafka

cd /data/server/kafka/bin

./kafka-server-start.sh -daemon ../config/server.properties #以后台方式启动

验证 ,有Kafka了证明启动没有问题

jps

jps | grep Kafka

ps -ef |grep kafka

6.5创建topics

只在1台主节点操作

./kafka-topics.sh --create --topic hostScreen --bootstrap-server localhost:6667 --replication-factor 3 --partitions 3

./kafka-topics.sh --create --topic inspection --bootstrap-server localhost:6667 --replication-factor 3 --partitions 3

./kafka-topics.sh --create --topic inspection.hardware.host --bootstrap-server localhost:6667 --replication-factor 3 --partitions 3

./kafka-topics.sh --create --topic inspection.hardware.log --bootstrap-server localhost:6667 --replication-factor 3 --partitions 3

./kafka-topics.sh --create --topic network --bootstrap-server localhost:6667 --replication-factor 3 --partitions 3

6.6查看主题

cd /data/server/kafka/bin

./kafka-topics.sh --list --bootstrap-server localhost:6667

6.7生产测试

cd /data/server/kafka/bin

./kafka-console-producer.sh --broker-list localhost:6667 --topic hostScreen

>>>

>test

>kafka-tets

6.8消费测试

cd /data/server/kafka/bin

./kafka-console-consumer.sh --bootstrap-server localhost:6667 --topic hostScreen --from-beginning

test

kafka-tets

#查看所有消费者组

cd /data/server/kafka/bin

./kafka-consumer-groups.sh --bootstrap-server localhost:6667 --list

6.9查看topics信息

./kafka-topics.sh --bootstrap-server kafka01:6667,kafka02:6667,kafka:6667 --topic inspection --describe

./kafka-topics.sh --bootstrap-server kafka01:6667,kafka02:6667,kafka:6667 --topic inspection.hardware.log --describe

7、设置kafka开机启动

vi /etc/rc.d/rc.local

/bin/sh /data/server/kafka/bin/kafka-server-start.sh -daemon /data/server/kafka/config/server.properties

:wq! #保存退出

#设置普通用户启动,需要设置kafka目录所有者为myuser

su - myuser -c "/bin/sh /data/server/kafka/bin/kafka-server-start.sh -daemon /data/server/kafka/config/server.properties"

#默认/etc/rc.local没有执行权限,需要手动添加执行权限

chmod +x /etc/rc.d/rc.local

sh /data/server/kafka/bin/kafka-server-start.sh -daemon /data/server/kafka/config/server.properties #启动kafka

#关闭kafka

cd /data/server/kafka/bin

./kafka-server-stop.sh

ps -ef |grep kafka

#扩容分区

cd /data/server/kafka/bin

1、topic分区扩容,分区数只能增加不能减少

#扩容inspection.hardware.host这个topic

./kafka-topics.sh --bootstrap-server kafka01:6667kafka02:6667,kafka03:6667 --topic inspection.hardware.host -alter --partitions 3

2、根据topic的分区情况自行修改 partitions-topic.json 文件配置

#partitions-topic.json文件要放在执行副本搬迁命令的目录下

vi partitions-topic.json

{

"partitions":

[

{

"topic": "inspection.hardware.host",

"partition": 0,

"replicas": [2,3,1]

},

{

"topic": "inspection.hardware.host",

"partition": 1,

"replicas": [3,2,1]

},

{

"topic": "inspection.hardware.host",

"partition": 2,

"replicas": [1,2,3]

}

],

"version":1

}

:wq! #保存退出

3、执行副本搬迁

#partitions-topic.json文件要放在执行副本搬迁命令的目录下

./kafka-reassign-partitions.sh --bootstrap-server kafka01:6667,kafka02:6667,kafka03:6667 --reassignment-json-file partitions-topic.json --execute

4、查看迁移情况

../bin/kafka-reassign-partitions.sh --zookeeper 127.0.0.1:2181 --reassignment-json-file partitions-topic.json --verify

说明:

kafka-reassign-partitions.sh工具来重新分布分区。该工具有三种使用模式:

generate模式,给定需要重新分配的Topic,自动生成reassign plan(并不执行)

execute模式,根据指定的reassign plan重新分配Partition

verify模式,验证重新分配Partition是否成功

#相关概念

Broker:kafka节点,多个broker组成kafka集群。

Topic:即主题,kafka通过Topic对消息进行分类,发布到kafka的消息都需要指定Topic。

Producer:即消息生产者,向Broker发送消息的客户端。

Consumer:即消息消费者,从Broker消费(接收)消息的客户端。

ConsumerGroup:即消费者组,消费者隶属于消费者组,同一个分区的消息可以被多个消费者消费,但是同一个消费者组中只能有一个消费者可以消费。

Partition:即分区,每个Topic下都至少有一个分区,分区内部的消息是有序的。

#结束进程

ps -aux | grep -E 'kafka' | grep -v grep |awk '{print $2}' |sudo xargs kill -s 9

#Kafka架构

#kafka配置参数

标签:--,6667,server,topic,sh,集群,Linux,kafka
From: https://www.cnblogs.com/cheyunhua/p/17913874.html

相关文章

  • Linux系统扩容数据盘时,如何扩展未分区磁盘文件系统
    1.操作场景当数据盘没有创建分区,只在设备上创建了文件系统,您可以参考本节直接扩展文件系统。[root@ecs-test~]#df-THFilesystemTypeSizeUsedAvailUse%Mountedon/dev/vda1ext443G1.9G39G5%/tmpfstmpfs2.0G02......
  • archlinux xfce 修改用户主目录名称
    操作有风险,修改用户主目录名称后一些链接了旧主目录的的链接可能仍未修改。导致链接用不了,需要手动指定链接1.删除指定用户保存的会话,未删除应该会导致修改用户主目录名称后进不去会话2.切换到其它用户桌面3.使用命令usermod-d-m/home/directory_nameuser_name-d:这个......
  • linux 下安装.net 8环境
    1.从官网下载对应的运行时环境压缩包。下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.02.安装SDK下载完成后,打开终端并运行以下命令以提取SDK并使这些命令在终端上可用。TerminalCopymkdir-p$HOME/dotnet&&tarzxfdotnet-sdk-8.0.100-linux-x6......
  • linux系统,磁盘、镜像、目录挂载和未挂载,查看命令
    查看系统中存在磁盘或镜像、设备lsblk 使用lsblk命令查看系统上的所有块设备信息:blkid blkid命令可以更详细的查看未挂载磁盘,不仅能查看大小,还可以看到其他更多的信息fdisk-lfdisk-l命令可以列出系统中未挂载的所有磁盘,执行该命令后会列出当前系统的所有磁盘,其中......
  • Linux 安装宝塔面板无公网也可以实现远程访问面板(重磅推荐,小白建站!!)
    宝塔面板是一款服务器管理软件,可提高运维效率,下面简单几步实现宝塔面板安装使用cpolar并且实现远程访问本地宝塔面板,这里以centos为例子1.安装宝塔进入官网查看命令,这里以linux为准,以下是linux安装命令:yuminstall-ywget&&wget-Oinstall.shhttps://download.bt.cn/......
  • Linux 查看磁盘空间
    一、查看文件系统使用率df-h二、查看目录下文件大小du-sh*#包含隐藏目录du-sh.[^.]**|sort-h......
  • Linux安装nacos 启动报错解决: which: no javac in (/usr/local/sbin:/usr/local/bin:
    报错信息:which:nojavacin(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)readlink:缺少操作数Try'readlink--help'formoreinformation.dirname:缺少操作数Try'dirname--help'formoreinformation.ERROR:PleasesettheJAVA_HOME......
  • Linux服务器快速安装FastGPT知识库问答系统
    最近开始体验FastGPT知识库问答系统,参考官方文档,在自己的阿里云服务器使用DockerCompose快速完成了部署。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。Docker与Docker-Compose安装1.登录服务器,执行相关命令完成安装。#安装Dockercurl-fsSLhttps://get.docker.co......
  • Kafka核心逻辑介绍
    1、概念Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica)分布式消息系统(kafka2.8.0版本之后接触了对zk的依赖,使用自己的kRaft做集群管理,新增内部主体@metadata存储元数据信息),它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基......
  • linux的一些不常用指令
    一:文件操作//-----------------------阅读文件----------------------------//1、vi/vim文件名   --------------不存在的文件新建,存在的编辑2、cat-n文件名  -----------------显示文件的行号3、vim+行号文件名 -------------编辑并跳到指定行4、more文件......