kafka搭建

中文官方文档

http://kafka.apachecn.org/intro.html

docker-compose.yml

version: '3'
services:
  kafka:
    image: docker.io/wurstmeister/kafka
    privileged: true
    ports:
      - "9092:9092"
      - "9999:9999"
    environment:
      KAFKA_BROKER_ID: 0
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.153.128:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: 192.168.153.128:2181,192.168.153.129:2181,192.168.153.130:2181
      JMX_PORT: 9999
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/opt/logs/kafka/:/opt/kafka/logs"
      - "/etc/localtime:/etc/localtime"

KAFKA_BROKER_ID这个标识broker的

KAFKA_ADVERTISED_LISTENERS绑定注册到zookeeper的,或者对其他broker的内部流量

KAFKA_LISTENERS绑定对外服务,consumer,producter等

附一些解释,其实我也没100%搞明白

https://yq.aliyun.com/articles/73215

https://www.cnblogs.com/rilley/p/5391268.html

https://www.cnblogs.com/snifferhu/p/5102629.html

进入容器查看默认配置目录

/opt/kafka_2.12-2.2.0/config

https://blog.csdn.net/huanggang028/article/details/47830529

https://www.cnblogs.com/jun1019/p/6656223.html

request.required.acks
控制者Producer写请求的什么时候可以确认写成功,默认是0,
0表示即不进行确认即返回。
1表示Leader写成功即返回,此时还没有进行写数据同步到其它Follower Partition中
-1表示根据指定的最少Partition确认后才返回
min.insync.replicas
该属性规定了最小的ISR数。当producer设置request.required.acks为all或-1时,指定副本(replicas)的最小数目(必须确认每一个repica的写数据都是成功的),如果这个数目没有达到,producer会产生异常。

 

可以使用docker exec命令直接调用kafka容器内的脚本来进行创建/删除topic,启动console producer等等操作。

以下kafka为容器名, 192.168.153.128,192.168.153.129,192.168.153.130为三台机器

列出所有topics

[root@centos_7_64_1 kafka-docker]# docker exec kafka kafka-topics.sh --zookeeper 192.168.153.128:2181,192.168.153.129:2181,192.168.153.130:2181 --list     
__consumer_offsets
topic-test
topic_test

查看指定topic信息

[root@centos_7_64_1 kafka-docker]# docker exec kafka kafka-topics.sh --describe --zookeeper 192.168.153.128:2181,192.168.153.129:2181,192.168.153.130:2181 --topic topic_test  
Topic:topic_test        PartitionCount:4        ReplicationFactor:3     Configs:
        Topic: topic_test       Partition: 0    Leader: 1       Replicas: 1,0,2 Isr: 1,0,2
        Topic: topic_test       Partition: 1    Leader: 2       Replicas: 2,1,0 Isr: 2,0,1
        Topic: topic_test       Partition: 2    Leader: 2       Replicas: 0,2,1 Isr: 2,0,1
        Topic: topic_test       Partition: 3    Leader: 1       Replicas: 1,2,0 Isr: 1,0,2

列出所有Kafka brokers
$ docker exec zookeeper bin/zkCli.sh ls /brokers/ids

...

WatchedEvent state:SyncConnected type:None path:null
[0, 1, 2]

执行以下命令查看容器中的kafka版本号:

docker exec kafka find / -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*'

执行以下命令查看zookeeper版本

docker exec zookeeper pwd 

在docker-compose.yml所在的文件夹下,执行以下命令即可将borker总数从1个扩展到4个(单机情况下)

docker-compose scale kafka=4

创建topic

docker exec kafka kafka-topics.sh --create --topic topic_test --partitions 4 --zookeeper 192.168.153.128:2181,192.168.153.129:2181,192.168.153.130:2181 --replication-factor 3

删除topic

[root@centos_7_64_1 kafka-docker]# docker exec kafka kafka-topics.sh --delete --topic topic_test --zookeeper 192.168.153.128:2181,192.168.153.129:2181,192.168.153.130:2181
Topic topic_test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
执行如下命令,即可进入等待topic为topic001消息的状态:

[root@centos_7_64_1 ~]# docker exec kafka kafka-console-consumer.sh --topic topic_test --bootstrap-server 192.168.153.128:9092,192.168.153.129:9092,192.168.153.130:9092
目前还没有生产消息,因此控制台不会有内容输出,接下来尝试生产消息;

生产消息

打开一个新的窗口,执行如下命令,进入生产消息的命令行模式,注意不要漏掉参数"-it",我之前就是因为漏掉了参数"-it",导致生产的消息时虽然不提示异常,但是始终无法消费到消息:
docker exec -it kafka kafka-console-producer.sh --topic topic_test --broker-list 192.168.153.128:9092,192.168.153.129:9092,192.168.153.130:9092
现在已经进入了生产消息的命令行模式,输入一些字符串然后回车,再去消费消息的控制台窗口看看,已经有消息打印出来,说明消息的生产和消费都成功了;

供用户查看consumer信息

(sh kafka-consumer-groups.sh –bootstrap-server * –describe –group *)
至此,镜像wurstmeister/kafka的实战就完成了,在后续使用到kafka服务的时候,可以参考本次实战快速搭建kafka集群

转自
https://blog.csdn.net/boling_cavalry/article/details/85395080

一些错误处理

  1. Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9999; nested exception is:

  2. https://www.cnblogs.com/txwsqk/p/9560746.html

  3. https://github.com/apache/kafka/pull/1983/commits/2c5d40e946bcc149b1a9b2c01eced4ae47a734c5

参数解释:

offsets.topic.replication.factor 用于配置offset记录的topic的partition的副本个数  这个官方文档给的3实际是1
transaction.state.log.replication.factor 事务主题的复制因子  这个官方文档给的3实际是1
transaction.state.log.min.isr 覆盖事务主题的min.insync.replicas配置 这个官方文档给的2实际是1

num.partitions 新建Topic时默认的分区数

default.replication.factor 自动创建topic时的默认副本的个数

启动后的server.properties的情况

############################# Internal Topic Settings  #############################                       
# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
# For anything other than development testing, a value greater than 1 is recommended for to ensure availability such as 3.
offsets.topic.replication.factor=1                                                                                        
transaction.state.log.replication.factor=1                                                                                
transaction.state.log.min.isr=1  

Kafka动态增加Topic的副本

https://www.cnblogs.com/xiao987334176/p/10315176.html

docker exec kafka kafka-reassign-partitions.sh --zookeeper 192.168.153.128:2181,192.168.153.129:2181,192.168.153.130:2181 --reassignment-json-file /logs/consumer.json --execute

官方文档  

http://kafka.apachecn.org/documentation.html#configuration

 

 

 

 搭建kafka管理平台

kafka-manager是目前最受欢迎的kafka集群管理工具,最早由雅虎开源,用户可以在Web界面执行一些简单的集群管理操作。具体支持以下内容:

管理多个集群
轻松检查群集状态(主题,消费者,偏移,代理,副本分发,分区分发)
运行首选副本选举
使用选项生成分区分配以选择要使用的代理
运行分区重新分配(基于生成的分配)
使用可选主题配置创建主题(0.8.1.1具有与0.8.2+不同的配置)
删除主题(仅支持0.8.2+并记住在代理配​​置中设置delete.topic.enable = true)
主题列表现在指示标记为删除的主题(仅支持0.8.2+)
批量生成多个主题的分区分配,并可选择要使用的代理
批量运行重新分配多个主题的分区
将分区添加到现有主题
更新现有主题的配置
在centos中,执行如下命令拉取镜像,创建对应容器,以及打开防火墙:

docker pull sheepkiller/kafka-manager
docker run -it -d --rm  -p 9000:9000 -e ZK_HOSTS="192.168.9.219:2181" --net=host sheepkiller/kafka-manager
firewall-cmd --add-port=9000/tcp
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值