搭建kafaka_搭建kafka运行环境

刚才只是启动了单个broker,现在启动有3个broker组成的集群,这些broker节点

也都是在本机上的

Step 1 : 为每一个broker提供配置文件

我们先看看config/server.properties配置信息:[root@localhost config]# grep -v '#' server.properties  | sort

broker.id=0

port=9092

num.network.threads=2

num.io.threads=8

socket.send.buffer.bytes=1048576

socket.receive.buffer.bytes=1048576

socket.request.max.bytes=104857600

log.dirs=/tmp/kafka-logs

num.partitions=2

log.retention.hours=168

log.segment.bytes=536870912

log.retention.check.interval.ms=60000

log.cleaner.enable=false

zookeeper.connect=localhost:2181

zookeeper.connection.timeout.ms=1000000

说明:

broker.id为集群中唯一的标注一个节点,因为在同一个机器上,所以必须指定不同的

端口和日志文件,避免数据被覆盖。

在上面单个broker的实验中,为什么kafka的端口为9092,这里可以看得很清楚。

注意日志目录:[root@localhost kafka-logs]# pwd

/tmp/kafka-logs

[root@localhost kafka-logs]# ls -l

total 32

drwxr-xr-x 2 root root 4096 Sep 20 22:58 my_first_topic-0

-rw-r--r-- 1 root root   32 Sep 20 23:54 recovery-point-offset-checkpoint

-rw-r--r-- 1 root root   32 Sep 20 23:54 replication-offset-checkpoint

drwxr-xr-x 2 root root 4096 Sep 20 20:22 test-0

[root@localhost kafka-logs]# tree my_first_topic-0

my_first_topic-0

|-- 00000000000000000000.index

`-- 00000000000000000000.log

0 directories, 2 files

【topic,分区,offset等等这些概念,暂放】

kafka cluster怎么同zookeeper交互的,配置信息中也有体现。

那么下面,我们仿照上面的配置文件,提供2个broker的配置文件:[root@localhost config]# touch server-1.properties

[root@localhost config]# touch server-2.properties

[root@localhost config]# vi server-1.properties

[root@localhost config]#

[root@localhost config]#

[root@localhost config]# vi server-2.properties

[root@localhost config]#

[root@localhost config]#

[root@localhost config]# cat server-1.properties

broker.id=1

port=9093

log.dir=/tmp/kafka-logs-1

zookeeper.connect=localhost:2181

[root@localhost config]# cat server-2.properties

broker.id=2

port=9094

log.dir=/tmp/kafka-logs-2

zookeeper.connect=localhost:2181

Step 2 : 启动所有的broker

由于在上面的实验中,已经启动了zookeeper和一个broker(id=0),那么现在只需要启动

broker(id=1)和broker(id=2)。

命令如下:

bin/kafka-server-start.sh config/server-2.properties &

bin/kafka-server-start.sh config/server-1.properties &

会发现,zookeeper进程会有提示信息输出。

进程,端口观察:

一个zookeeper在2181端口上监听,3个kafka cluster(broker)分别在端口

9092,9093,9094监听。

Step 3 : 创建topic

bin/kafka-topics.sh --create --topic topic_1 --partitions 1 --replication-factor 3  \

--zookeeper localhost:2181

bin/kafka-topics.sh --create --topic topic_2 --partitions 1 --replication-factor 3  \

--zookeeper localhost:2181

bin/kafka-topics.sh --create --topic topic_3 --partitions 1 --replication-factor 3  \

--zookeeper localhost:2181

查看topic创建情况:

上面的有些东西,也许还不太清楚,暂放,继续试验。需要注意的是topic_1的Leader=1

Step 4 : 模拟客户端发送,接受消息

XSHELL-Abin/kafka-console-consumer.sh --topic topic_1 --zookeeper localhost:2181 --from-beginning

XSHELL-Bbin/kafka-console-producer.sh --topic topic_1 --broker-list localhost:9092,localhost:9093,

localhost:9094

需要注意,此时producer将topic发布到了3个broker中,现在分布式的概念就有点了。

在XSHELL-B中发消息,XSHELL-A中就会有消息显示出来。

Step 5 : kill some broker

测试点一:

kill broker(id=0)

首先,我们根据前面的配置,得到broker(id=0)应该在9092监听,这样就能确定它的PID了。

得到broker(id=0)的PID为9300,那么接下来,我们KILL这个broker:

再次观察,topic在kafka cluster中的情况:

需要与broker(id=0)没有被kill前,做下对比。很明显,主要变化在于Isr,以后在分析。

测试下,发送消息,接受消息,是否收到影响。

生产者:

消费者:

结论,并没有收到影响。

测试点二:

kill broker(id=1)

同上可以得到broker(id=1)的PID为21165,同样的kill它,并测试发送,接受消息

是否收到影响。

发送端:

接受端:

可见,kafka的分布式机制,容错能力还是挺好的~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值