kafka部署(kafka部署的实例个数不得小于2)

本篇文章给大家谈谈kafka部署,以及kafka部署的实例个数不得小于2对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Kafka(四)集群之kafka

在章节二( )中,我们部署了单机的kafka,现在我们部署一套集群模式的kafka。

这里我准备了三台虚拟机:

192.168.184.134

192.168.184.135

192.168.184.136

每台机器部署一个zk和kafka。

上一章节中zk集群已经神中部署完毕。

在章节二中,134这台机器已经有kafka存在了,我们在另外两台机器上安装kafka:

在上面的文件中有几个关键点,我们一一进行配置,我会对配置中的说明翻译:

以下这两个listeners,advertised_listeners 是对外暴露的服务端口,真正建立连接用的是 listeners。

在内网中我们使用listenners就可以了,在docker等容器或云中使用advertised。游判山

下面这个是日志路径的配置

下面这个是个重点的东西,topic在磁盘上会分为多个partitions存储,相比单一文件存储,增加了并行性,在后续文章中会详细去讲解:

日志的保存时间:

以下是zookeeper的配置:

这里我们直接设置后台启动,三个节点都是如此:

这里面有个小坑,还记得之前我们搭建的单机环境吗?那时候默认的日志文件夹在/tmp/kafka-logs下面,生成了很多内容,导致我们134这个节点无法启动成功,报错如下:

解决这个问题只需要把/tmp/kafka-logs文件删除就好了。

看到日志出现这一句表明启动成功了:

下面我们验证下是否搭建成功了,首先使用kafkatool工机具连接看下:

我们在134节点创建一个topic:

查看topic列表:

在kafkatool中查看:

创建生产者:

创建消费者:

生成者发送冲游消息:

消费者接收消息:

到此为止,kafka的集群搭建已经完成了。在后面的文章我们会去学习如何在springboot中集成kafka。

Kafka同城双活单写部署实践

最近公司因为两次机房故障决定部署同城双机房,方案确定为双活单写

两个机房A.B都正常提供服务,所有写操作定位到A机房

// TODO 单写与多写的比较

// TODO 双活塌没和冷备的比较

可以看到 两种实现方团激纳式 在B集群或专线崩溃时 受到的影响都较小

两个实现方式主要的区别是

第一种方法需要线下操作且需要保证zookeeper集群可用

第二种方法需要管理偏铅孝移量和mirrormaker

[img]

Kafka集群部署(Docker容器的方式)

文章主要介绍以docker容器的方式部署kafka集群。

上述配置文件中的server.x,数字x对应到data/myid文件中的值。三台机器x的值分别就是1,2,3。参数详细说明请参考 官网文档唤含 。

1.--net=host: 容器与主机共享同一Network Namespace,即容器与网络看到的是相同的网络视图(host模式存在一定的风险,对安全要求很高的生产环境最好不要用host模兆链森式,应考虑除此之外的其他几种模式)

2.-v: 指定主机到容器的目录映射关系

这样就以容器的方式启动了zookeeper的服务,可以通过 "docker exec -it zookeeper bash" 命令进入容器中进行一些操作,例如查看服务启动是否正常。也可以通过查看2181端口是否被监听判断zookeeper的服务是否运行

详细的参数配置说明请参考 官方文档 ,参数不仅可以通过上述文件的方式来配置,也可以通过容器环境变量的方式来配置,这里结合两种方式使用。

1.KAFKA_ADVERTISED_HOST_NAME、KAFKA_BROKER_ID的值要结合每台机器自身设置

2./etc/hosts文件中最好配置ip与hostname的映射关系,否则会报出如下错误" Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: node0: node0: System error "

3.通过-e 指定的环境变量与在server.properties中配置的选项其效果是一样的

4.配置文件中的选项若要通过环境变量来指定,方式为:如broker.id对应KAFKA_BROKER_ID,类似的log.dirs对应KAFKA_LOG_DIRS

5.KAFKA_HEAP_OPTS="-Xmx6G -Xms6G"指java堆内存大小的设置,6G大小是kafka官网给出的数值,此数值要结合机器的内存大小给出。超过6G的内存,可以设置为6G;若机器的内存低于6G而设置6G,则会报错。

5.启动成功后,可族亩以通过"docker logs kafka"命令查看日志

1.ZK_HOSTS:ZooKeeper访问地址(需指定机器的ip,localhost:2181或127.0.0.1:2181均会报 "java.net.ConnectException: Connection refused" 异常)

k8s部署Kafka集群

本次的目的是通过使用k8s搭建一个三节点的 kafka 集群,因为 kafka 集群需要用到存储,所以我们胡绝兄需要准备三个持久卷( Persistent Volume ) 简称就是PV。

首先通过裤袭nfs创建三个共享目录

分别对应三节点zk集群中的三个pod的持久化目录,创建好目录之后编写yaml创建 kafka-pv.yaml

使用如下命令创建kafka-pk

出现如下提示就代表创建成功

这是我们可宏胡以通过如下命令去查看创建成功的pv

我们选择使用 statefulset 去部署kafka集群的三节点,并且使用刚刚创建的pv作为存储设备。

kafka.yaml

使用 kubectl apply -f kafka.yaml 部署

可以通过 kubect get pods -n tool

可以查看到三个pod都是running状态了,我们再看service状态 可以通过 kubect get svc -n tool

可以看到我们将9092端口通过nodePort映射给了19092暴露出去了。

我们可以通过 kubectl exec -it kafka-1 -n tools /bin/bash 进入容器

创建topic成功 代表我们kafka集群部署成功!!!

kafka部署遇到的问题

kafka部伏哪尺署的问题

1. 连接zookeeper超时

kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING

这个问题的是由于kafka启动的时候连接zookeeper比较慢, 把超时时间设置大缺高一点就可以了,默认是6000ms

server.properties中增加

zookeeper.connection.timeout.ms=6000000

2. 发送消息时报一下错误

java.lang.IllegalStateException: No entry found for connection 0

server.properties中增加

advertised.listeners=PLAINTEXT://172.28.21.243:9092

ip地址为发送消息端连接kafka的缓派ip地址

关于kafka部署和kafka部署的实例个数不得小于2的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表