kafka单机实验:

环境准备:

1、下载kafka,zookeeper,并解压

wget http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz
wget https://apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz
tar zxvf kafka_2.-2.3..tgz
tar zxvf apache-zookeeper-3.5.-bin.tar.gz

2、配置zookeeper

# 进入zookeeper的conf目录
# 拷贝一份zoo.cfg数据
cp zoo_sample.cfg zoo.cfg
# 编辑zoo.cfg数据
vim zoo.cfg
# 编辑内容,几个节点,添加几条(server.ZKID=ZKIP::),用于zk之间的通信
server.=127.0.0.1::
# zoo.cfg中有个dataDir配置(数据存储的目录),默认为/tmp/zookeeper
# 新建目录/tmp/zookeeper
mkdir /tmp/zookeeper
# 新建文件
vim /tmp/zookeeper/myid
# 编辑内容,一个数字(ZKID),对应zoo.cfg的配置 # 进入zookeeper的bin目录
# 启动zk,并查看zk状态是否正常
./zkServer.sh start
./zkServer.sh status

3、配置kafka

# 进入kafka的config目录
# 备份并编辑server.properties
cp server.properties server.properties.bak
vim server.properties
# 编辑内容,broker.id改为大于0的,不同机器设置的不一样
broker.id=
# 其它配置,有需要自行修改
# 例如zookeeper不在本机,可以通过设置zookeeper.connect
# 进入kafka的bin目录
# 启动kafka
./kafka-server-start.sh ../config/server.properties

开始实验:

1、一个副本一个分区

# 命令:创建一个主题(topic为test,分区为1)
./kafka-topics.sh --create --zookeeper localhost: --replication-factor --partitions --topic test
# 结果:
Created topic test.
# 命令:查看所有主题
./kafka-topics.sh --list --zookeeper localhost:
# 结果:
test
# 命令:启动一个生产者
./kafka-console-producer.sh --broker-list localhost: --topic test
# 命令:另起一个ssh连接服务器,启动一个消费者
./kafka-console-consumer.sh --bootstrap-server localhost: --topic test --from-beginning
# 结果:
在生产者输入消息,在消费者会收到消息

2、一个副本多个分区

# 命令:创建一个主题(topic为test2,分区为3)
./kafka-topics.sh --create --zookeeper localhost: --replication-factor --partitions --topic test2
# 结果:
Created topic test2.
# 命令:查询这个主题(test2)的详细信息
./kafka-topics.sh --describe --zookeeper localhost: --topic test2
# 结果:
# topic为test2,分区数为3,副本集数量为1(单机,只有主副本)
# Partition:不同分区(、、)
# Leader:主副本的节点(负责读写的节点)
# Replicas:分区的复制节点列表(单机,只有主副本)
# Isr:同步状态的复制节点列表(Replicas的子集,存活且赶上主副本的)
Topic:test2 PartitionCount: ReplicationFactor: Configs:
Topic: test2 Partition: Leader: Replicas: Isr:
Topic: test2 Partition: Leader: Replicas: Isr:
Topic: test2 Partition: Leader: Replicas: Isr:
# 命令:启动一个生产者,发几条消息
./kafka-console-producer.sh --broker-list localhost: --topic test2
msg1
msg2
msg3
msg4
msg5
msg6
# 命令:查看分区0的log日志,消息负载均衡到各个分区
strings /tmp/kafka-logs/test2-/.log
# 结果:
msg2
msg5
# 命令:查看分区1的log日志,消息负载均衡到各个分区
strings /tmp/kafka-logs/test2-/.log
# 结果:
msg1
msg4
# 命令:查看分区2的log日志,消息负载均衡到各个分区
strings /tmp/kafka-logs/test2-/.log
# 结果:
msg3
msg6

kafka集群实验:

环境准备:

1、原先机器 其它配置不变,修改kafka配置

# 进入kafka的config目录
# 编辑server.properties,将listeners设置上内网IP(通过ifconfig查看)
listeners=PLAINTEXT://192.168.0.83:9092
# 注意,kafka集群云主机的,客户端自己电脑上,想要生产数据或者消费数据,需要通过外网访问kafka集群
# 因此需要再配置advertised.listeners,配置的地址为外网IP
advertised.listeners=PLAINTEXT://1.6.2.8:9092
# 启动kafka
./kafka-server-start.sh ../config/server.properties

2、第二台机器 配置kafka

# 下载kafka
wget http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz
# 解压kafka
tar zxvf kafka_2.-2.3..tgz
# 进入kafka的config目录
# 备份并编辑server.properties
cp server.properties server.properties.bak
vim server.properties
# 编辑内容,broker.id改为大于0的,不同机器设置的不一样
broker.id=
# 编辑server.properties,将listeners设置上内网IP(通过ifconfig查看)
listeners=PLAINTEXT://192.168.0.5:9092
# 注意,kafka集群云主机的,客户端自己电脑上,想要生产数据或者消费数据,需要通过外网访问kafka集群
# 因此需要再配置advertised.listeners,配置的地址为外网IP
advertised.listeners=PLAINTEXT://1.6.2.4:9092
# 编辑内容,配置zk集群的地址(就第一台机器)
zookeeper.connect=192.168.0.83:
# 进入kafka的bin目录
# 启动kafka
./kafka-server-start.sh ../config/server.properties

开始实验:

1、各个分区在两个机器的负载均衡 以及 kafka集群的高可用

# 在第一台机器操作
# 进入kafka的bin目录
# 命令:创建一个主题(topic为test4,分区为3,副本集为2)
./kafka-topics.sh --create --zookeeper localhost: --replication-factor --partitions --topic test4
# 结果:
Created topic test4.
# 命令:查看topic(test4)的详细信息
./kafka-topics.sh --describe --zookeeper localhost: --topic test4
# 结果:每个分区的主副本负载均衡到两台机器
Topic:test4 PartitionCount: ReplicationFactor: Configs:
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,
# 挂掉第二台机器的kafka
# 命令:查看topic(test4)的详细信息
./kafka-topics.sh --describe --zookeeper localhost: --topic test4
# 结果:分区的主副本会转移到第一台机器,Replicas不变,Isr只会有1,表示存活的只有1
Topic:test4 PartitionCount: ReplicationFactor: Configs:
Topic: test4 Partition: Leader: Replicas: , Isr:
Topic: test4 Partition: Leader: Replicas: , Isr:
Topic: test4 Partition: Leader: Replicas: , Isr:
# 命令:启动消费者输几条数据
./kafka-console-producer.sh --broker-list 116.196.92.98: --topic test4
msg1
msg2
msg3
msg4
msg5
msg6
# 恢复第二台机器的kafka
# 命令:查看topic(test4)的详细信息
./kafka-topics.sh --describe --zookeeper localhost: --topic test4
# 结果:主副本没变化,没再负载均衡到第二台机器,但是ISR的列表都加了2,表示第二台机器已存活并追上第一台机器
Topic:test4 PartitionCount: ReplicationFactor: Configs:
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,
# 命令:查看下各个分区的日志,数据都已从第一台机器同步过来
strings /tmp/kafka-logs/test4-/.log
msg2
msg5
# 挂掉第一台机器的kafka
# 在第二台机器操作
# 进入kafka的bin目录
# 命令:查看topic(test4)的详细信息
./kafka-topics.sh --describe --zookeeper 192.168.0.83: --topic test4
# 结果:分区的主副本会转移到第二台机器,Replicas不变,Isr只会有2,表示存活的只有2
Topic:test4 PartitionCount: ReplicationFactor: Configs:
Topic: test4 Partition: Leader: Replicas: , Isr:
Topic: test4 Partition: Leader: Replicas: , Isr:
Topic: test4 Partition: Leader: Replicas: , Isr:
# 恢复第一台机器的kafka
# 命令:查看topic(test4)的详细信息
./kafka-topics.sh --describe --zookeeper 192.168.0.83: --topic test4
# 结果:主副本没变化,没再负载均衡到第一台机器,但是ISR的列表都加了1,表示第一台机器已存活并追上第二台机器
Topic:test4 PartitionCount: ReplicationFactor: Configs:
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,
# 命令:负载均衡各个分区的主副本
./kafka-preferred-replica-election.sh --zookeeper 192.168.0.83:
# 命令:查看topic(test4)的详细信息
./kafka-topics.sh --describe --zookeeper 192.168.0.83: --topic test4
# 结果:各个分区的主副本进行负载均衡到两个机器
Topic:test4 PartitionCount: ReplicationFactor: Configs:
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,
Topic: test4 Partition: Leader: Replicas: , Isr: ,

kafka服务端实验记录的更多相关文章

  1. Kafka服务端之网络连接源码分析

    #### 简介 上次我们通过分析KafkaProducer的源码了解了生产端的主要流程,今天学习下服务端的网络层主要做了什么,先看下 KafkaServer的整体架构图 ![file](https:/ ...

  2. 手绘模型图带你认识Kafka服务端网络模型

    摘要:Kafka中的网络模型就是基于主从Reactor多线程进行设计的. 本文分享自华为云社区<图解Kafka服务端网络模型>,作者:石臻臻的杂货铺 . Kafka中的网络模型就是基于主从 ...

  3. kafka 服务端消费者和生产者的配置

    在kafka的安装目录下,config目录下有个名字叫做producer.properties的配置文件 #指定kafka节点列表,用于获取metadata,不必全部指定 #需要kafka的服务器地址 ...

  4. Kafka~服务端几个常用的命令

    在Centos上安装和部署完成kafka之后,我们就可以向服务端推消息和消费它了,今天主要聊几个常用的命令,比建立topic,从broken显示所有topics列表,向broken发消息,从broke ...

  5. Kafka技术内幕 读书笔记之(二) 生产者——服务端网络连接

    KafkaServer是Kafka服务端的主类, KafkaServer中和网络层有关的服务组件包括 SocketServer.KafkaApis 和 KafkaRequestHandlerPool后 ...

  6. kafka 部分问题处理记录

    转载请注明原创地址:http://www.cnblogs.com/dongxiao-yang/p/7600561.html 一  broker启动后ReplicaFetcherThread OOM 版 ...

  7. 利用C#实现OPC-UA服务端

    前言 最近接手了一个项目,做一个 OPC-UA 服务端?刚听到这个消息我是一脸懵,发自灵魂的三问“OPC-UA是什么?”.“要怎么做?”.“有什么用?”.我之前都是做互联网相关的东西,这种物联网的还真 ...

  8. Linux 部署 iSCSI 服务端

    Linux 部署 iSCSI 服务端 服务端实验环境 iSCSI-server :RHEL8 IP:192.168.121.10 一.服务端安装 target 服务和 targetcli 命令行工具 ...

  9. 5种kafka消费端性能优化方法

    摘要:带你了解基于FusionInsight HD&MRS的5种kafka消费端性能优化方法. 本文分享自华为云社区<FusionInsight HD&MRSkafka消费端性能 ...

随机推荐

  1. python 之实现断点下载与下载进度条

    一.效果图 二.进度条代码 __author__ = 'Yang' import os import time from threading import Thread '''下载进度条''' cla ...

  2. cpu指令重排序的原理

    目录: 1.重排序场景 2.追根溯源 3.缓存一致性协议 4.重排序原因 一.重排序场景 class ResortDemo { int a = 0; boolean flag = false; pub ...

  3. 重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践

    一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库 ...

  4. 2015-2016-2《Java程序设计》团队博客5

    一.项目进展 本周将所有的项目代码全部进行了汇总总结,归纳在了一起,进行整体的测试.虽然在编写的时候很顺利,也就是片段代码问题不大,但是汇总到一起时还是产生了冲突与不对等的问题,所以我们只能仔细地从细 ...

  5. 2019软工实践_Alpha(5/6)

    队名:955 组长博客:https://www.cnblogs.com/cclong/p/11898112.html 作业博客:https://edu.cnblogs.com/campus/fzu/S ...

  6. 剑指offer:构建乘积数组

    题目描述: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]. ...

  7. CentOS7安装JDK1.8图文教程

    https://blog.csdn.net/weixin_42266606/article/details/80863781 1.下载 jdk 的 tar 包 网址:http://www.oracle ...

  8. ggplot常见语法汇总查询

    主图 散点图 柱状图 折线图 小提琴图 点图 进化树 圈图 Alluvial图 Sankey Diagram plot(getSankey(colData(muraro)$cell_type1, mu ...

  9. mqtt 与 MQ 的区别

    mqtt 与 MQ 的区别: mqtt:一种通信协议,类似人类交谈中的汉语.英语.俄语中的一种语言规范MQ:一种通信通道,也叫消息队列,类似人类交谈中的用电话.email.微信的一种通信方式json: ...

  10. mysql skip-grant-tables 后要多次重启 和验证登录检查确认密码生效

    mysql  skip-grant-tables 后要多次重启  和验证登录检查确认密码生效