linux部署kafka_linux无法启动kafka

linux部署kafka_linux无法启动kafka这是一套从零开始搭建kafka集群的笔记,我几乎帮你踩了所有的坑

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

虽然公司有运维,但也不能啥都靠他们,万一哪天环境出问题了,你不能一上来就找运维吧,丢脸脸~

今天分享一套从零开始搭建一套kafka集群的笔记,我几乎帮你踩了所有的坑,你只需按步骤来,有手就行
在这里插入图片描述
kafka依赖jdk和zookeeper环境
开始之前再啰嗦一句,同样的教程,有人失败有人成功,失败的小伙伴大部门都是路径问题,所以,仔细点,不要慌

安装jdk

检查下你服务器有没有jdk,如下图就是装了的
在这里插入图片描述
如果没装,出门右转,先把jdk搞完再回来接着看,linux安装jdk环境


搭建zookeeper集群

虽然kafka 0.5.x 以上版本已经集成了zk,但我们最好还是单独部署一套,两个原因

1、kafka自带的zk是单机的,修改配置也能改成集群,但是有风险,搞不好把kafka改坏了
2、讲道理,虽然kafka依赖zk,但是这毕竟是两个组件,独立出来当然更好,我们应该降低耦合度

安装zookeeper其实也不复杂,只是会有很多坑,我下面的每一步都不要漏掉,最容易出问题的地方就是路径,建议路径保持和我一致,这样你基本直接复制我的命令就能用

1、来到你的服务器,到opt目录,创建一个zookeeper文件夹,然后进去

cd /opt
mkdir zookeeper
cd zookeeper

2、下载zk安装包

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

如果提示wget命令不存在 wget: command not found

yum -y install wget

3、创建三个文件夹server1、server2、server3
因为我只有一台服务器,所以只能搭伪集群,所谓伪集群意思就是在一台机器上开三个端口来模拟三台服务器(真集群步骤也一样,一般来说区别在于伪集群ip相同端口不同,真集群ip不通端口相同)

mkdir server1
mkdir server2
mkdir server3

至此,你的zookeeper目录应该长这样
在这里插入图片描述
分别在三个server目录中创建data、datalog两个文件夹
并且将zk安装包分别解压到三个server目录中

mkdir server1/data
mkdir server1/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server1

mkdir server2/data
mkdir server2/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server2

mkdir server3/data
mkdir server3/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server3

至此,每个server目录里都应该是这样
在这里插入图片描述
现在开始配置zk集群,关键步骤来了

分别 在三个server目录的data文件夹下建一个 myid 文件,文件内容就一个数字,server1对应1,server2对应2,server3对应3

新建文件
vi /opt/zookeeper/server1/data/myid
按i进入编辑模式,输入数字1,esc,冒号,wq保存退出
vi /opt/zookeeper/server2/data/myid
按i进入编辑模式,输入数字2,esc,冒号,wq保存退出
vi /opt/zookeeper/server3/data/myid
按i进入编辑模式,输入数字3,esc,冒号,wq保存退出

然后 分别 进到zookeeper的conf目录

里面有个文件叫 zoo_sample.cfg ,不要动它,它没啥用

我们复制一份到当前目录取名叫 zoo.cfg,名字其实不重要,但大家都这么取的

cp -i zoo_sample.cfg zoo.cfg

当前目录列表
在这里插入图片描述
接着修改zoo.cfg文件
主要修改下民红框中几个地方,其它默认或者根据你自己的情况来修改
在这里插入图片描述
如果你全程都是跟着我的目录来的,直接像下面这样配置即可

#/opt/zookeeper/server1/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server1/data
dataLogDir=/opt/zookeeper/server1/datalog

clientPort=2181

server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

#/opt/zookeeper/server2/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server2/data
dataLogDir=/opt/zookeeper/server2/datalog

clientPort=2182

server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

#/opt/zookeeper/server3/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server3/data
dataLogDir=/opt/zookeeper/server3/datalog

clientPort=2183

server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

配置完成,进入zookeeper的bin目录启动zk服务

cd /opt/zookeeper/server1/zookeeper-3.4.10/bin
./zkServer.sh start

cd /opt/zookeeper/server2/zookeeper-3.4.10/bin
./zkServer.sh start

cd /opt/zookeeper/server3/zookeeper-3.4.10/bin
./zkServer.sh start

启动信息
在这里插入图片描述
三个zk都启动完了后,jps确认下启动成功没,如果都成功,会有这三个服务
在这里插入图片描述
至此,zookeeper集群搭建完成

开始搭建kafka集群

1、进入/opt目录,创建kafka文件夹

mkdir /opt/kafka
cd /opt/kafka

2、进去下载kafka安装包

wget https://archive.apache.org/dist/kafka/1.0.0/kafka_2.11-1.0.0.tgz

3、创建kafkalogs1、kafkalogs2、kafkalogs3三个文件夹

mkdir kafkalogs1
mkdir kafkalogs2
mkdir kafkalogs3

4、解压kafka安装包

tar -zxvf zookeeper-3.4.10.tar.gz

至此,你的kafka目录应该长这样
在这里插入图片描述
开始配置kafka

进入kafka的config目录

cd /opt/kafka/kafka_2.11-1.0.0/config/

里面有个 server.properties 文件
把这个文件重命名并且复制两份,得到这三个文件(不重命名也行,反正要有三份server配置文件,重命名了看着舒服)

mv server.properties server1.properties
cp -i server1.properties server2.properties
cp -i server1.properties server3.properties

最终得到三个server配置文件
在这里插入图片描述
我们需要 分别 修改三个server配置文件的四个属性:

  • broker.id:节点id,对应上面zookeeper三个myid文件的值,server1.properties写1,2写2,3写3
  • listeners:监听端口,把下面的 ip 换成你服务器的私有地址(如果填127.0.0.1或localhost可能无法从外面访问kafka服务)
  • log.dirs:日志文件存放目录
  • zookeeper.connect:zk集群ip:端口

修改的时候注意,这个文件很大,你忍一下

//server1
broker.id=1
listeners=PLAINTEXT://ip:9092
log.dirs=/opt/kafka/kafkalogs1
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

//server2
broker.id=2
listeners=PLAINTEXT://ip:9093
log.dirs=/opt/kafka/kafkalogs2
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

//server3
broker.id=3
listeners=PLAINTEXT://ip:9094
log.dirs=/opt/kafka/kafkalogs3
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

配置完成,启动

来到解压好的kafka目录,启动三个kafka服务

cd /opt/kafka/kafka_2.11-1.0.0

./bin/kafka-server-start.sh -daemon config/server1.properties
./bin/kafka-server-start.sh -daemon config/server2.properties
./bin/kafka-server-start.sh -daemon config/server3.properties

jps看下启动成功没
在这里插入图片描述

如果没有kafka进程,说明启动失败了,具体原因可以在logs目录下的kafkaServer.out文件看日志

测试

来到kafka安装目录

cd /opt/kafka/kafka_2.11-1.0.0

创建个topic先

./bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --create --topic test-topic --partitions 3 --replication-factor 3

命令解释:在127.0.0.1:2181这台zk上,创建一个名为test-topic的topic,将消息切分成3分,每份3个副本
–zookeeper:指定zk服务
–topic:指定topic名称
–partitions:分区数量
–replication-factor:数据副本数量

在这里插入图片描述
启动生产者

./bin/kafka-console-producer.sh --broker-list 私有地址:9092 --topic test-topic

随便发几条消息
在这里插入图片描述
启动消费者

./bin/kafka-console-consumer.sh --bootstrap-server 私有地址:9092 --topic test-topic

在这里插入图片描述

常见错误

失败的很大可能性都是配置文件里面的路径没配好,好好检查下

确定上面步骤和配置文件都没错的话,可能是机器内存不足,kafka默认最小启动内存1g

看下启动日志

tail -111f /opt/kafka/kafka_2.11-1.0.0/logs/kafkaServer.out

如果显示如下信息,则就是你机器内存不足
在这里插入图片描述

简单,执行下面命令设置kafka启动参数

export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"

再次启动,如果还提示内存不足
清下机器缓存

sync
echo 3 > /proc/sys/vm/drop_caches

如果不是以上原因,就只能根据启动日志来灵活解决了

其它kafka常用命令

查看topic列表

./bin/kafka-topics.sh --zookeeper localhost:2181 --list

在这里插入图片描述

查看某个topic详情

./bin/kafka-topics.sh --zookeeper localhost:2181 -describe --topic test-topic

在这里插入图片描述


ok我话说完

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182155.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月14日 上午10:16
下一篇 2022年10月14日 上午10:16


相关推荐

  • 【Cursor实战】Cursor+Figma MCP UI设计稿一键转前端代码

    【Cursor实战】Cursor+Figma MCP UI设计稿一键转前端代码

    2026年3月16日
    2
  • LaTex 希腊字母对照表

    LaTex 希腊字母对照表LATEXL AT EXLATE X 希腊字母对照表显示输入显示输入 alpha alpha beta beta gamma gamma delta delta varepsilon varepsilon eta eta theta theta iota iota kappa kappa lambda lambda mu mu nu nu xi xiooo

    2026年3月17日
    1
  • pytest skipif_skip的中文是什么

    pytest skipif_skip的中文是什么前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月31日
    5
  • 数组和集合的区别

    数组和集合的区别数组和集合的定义一 数组数组是 java 语言内置的数据类型 他是一个线性的序列 所有可以快速访问其他的元素 数组和其他语言不同 当你创建了一个数组时 他的容量是不变的 而且在生命周期也是不能改变的 还有 JAVA 数组会做边界检查 如果发现有越界现象 会报 RuntimeExcep 异常错误 当然检查边界会以效率为代价 二 集合 JAVA 还提供其他集合 list map set 他们处理对象的时候就好

    2026年3月19日
    2
  • ecmall如何增加可编辑的模板

    ecmall如何增加可编辑的模板第一步 修改 nbsp wwwroot admin app template app php nbsp nbsp function get editable pages nbsp nbsp nbsp nbsp nbsp nbsp returnarray nbsp nbsp nbsp nbsp nbsp nbsp index SITE URL index php nbsp nbsp nbsp nbsp nbsp nbsp gcategory SIT

    2026年3月16日
    2
  • myeclipse软件下载_eclipse手机版

    myeclipse软件下载_eclipse手机版myeclipse官方下载:官方站点下载:downme(MyEclipseEnterpriseWorkbench8.0forEclipse3.5.1andWindows98/2000/NT/XP/Vista/7(11/23/2009))说明:已包含Elipse和JRE,无需安装其他即可运行的ALL-in-ONE版本)Version:8.0GA|Fil

    2026年4月13日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号