linux部署kafka_linux无法启动kafka

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


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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • windows XP虚拟机安装[通俗易懂]

    windows XP虚拟机安装[通俗易懂]一.安装环境:win10VMware15winxp.iso二.安装过程:1.用自定义(高级)安装(原因是虚拟磁盘类型必须选IDE,而典型是默认磁盘类型的,如果你用典型发现到后面会报错)2.按照自己的需求选择硬件兼容性,建议选择最高的,因为向下兼容。3.插入.iso文件4.选择操作系统和版本5.修改名称和选择安装位置(可默认)6.根据自己的需求修改处理器配置,内存(不得低于1G,即1024MB)、网络类型、I/O控制类型。7.磁盘类型是重点,一定要选择IDE。8.磁盘。

    2022年8月16日
  • Opencv笔记(一):图像的基本操作

    Opencv笔记(一):图像的基本操作

    2021年6月8日
  • Java文件上传详解

    Java文件上传详解Java文件上传详解文件上传和下载准备工作使用类介绍代码编写文件上传和下载在Web应用中,文件上传和下载功能是非常常用的功能,这篇博客就来讲一下JavaWeb中的文件上传和下载功能的实现。准备工作对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的。一般选择采用apache的开源工具common-fileupload这个文件上传组件。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。首先下载最新的jar包https://mvnr

    2022年5月14日
  • c++禁止隐式转换_无法将int隐式转换为类

    c++禁止隐式转换_无法将int隐式转换为类C++有一个很方便的功能—隐式转换,比如有一个函数voidfunc(doublef);调用它的时候func(5);func(5.0);都是有效的。但有时候,这个功能就很麻烦了。比如:classA{public:A(conststring&v){///…}}void…

    2022年10月11日
  • 细说php读书笔记_细说php自测题

    细说php读书笔记_细说php自测题今天我们来读这本书是兄弟连出版社出版的《细说PHP》,买它的原因是,我的PHP是跟着网上视频自学的。后来第一份工作是使用早些年流行的PHPCMS开发。phpcms并不是一款产品,它是一系列产品,当时市场对于cms这个概念其实不是太严谨,因为除了phpcms、dedecms、连discuz、ecshop也都被归类进去了。哦,还有帝国cms,它出品的火车头采集器当时可以说相当好用,后来因为工作需求,就自己写采集器了。正式因为这些cms系统的出现,再加上php语言本身易学易入门的特…

    2022年10月30日
  • STM32单片机介绍_基于单片机的智能循迹小车

    STM32单片机介绍_基于单片机的智能循迹小车      其实前几周就已经将小车调好并且也发了视频,但是每天忙于复习,也没有时间来对小车的流程设计、硬件设计、程序编写进行一个总结,正好周五可以休息一下,就分三个模块对这个智能小车项目进行一个总结。      这个小项目完全是我一个人搞得,因为组内的小伙伴们都还没学32,他们使用arduino搭的小车,但是毕竟实现的功能还是很简单的,也只是做了一周不到的时间。      首先是小车的…

    2022年10月18日

发表回复

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

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