kafka完全分布式集群搭建-kafka_2.11-0.9.0.1

最近在学习分布式的消息系统kafka,特此记录搭建kafka集群过程。

版本:kafka_2.11-0.9.0.1

环境:

VM搭建的三个虚拟机,均采用centos-6.8-64.iso

机器IP与名称对应关系如下:

192.168.152.192        master

192.168.152.193        slave1

192.168.152.194        slave2


1.    为了高可用,kafka采用了zookeeper,zookeeper的集群搭建可以参照这里

2.    总体思路,在一台机器上配置好再远程复制到其他机器即可,SSH互相无密码访问可以参考这里

3.    在master机器上配置:

3.1   创建必要目录与下载压缩包

[root@master]# mkdir /home/kafka

[root@master]# cd kafka

[root@master]# mkdir kafkalogs      #存放kafka消息的目录,也可以使用默认的目录

[root@master]# wget http://apache.opencas.org/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz

[root@master]# tar zxvf kafka_2.11-0.9.0.1.tgz .

3.2   修改配置文件

[root@master]# cd kafka_2.11-0.9.0.1/config

主要配置的是server.properties

下面逐一解释:

broker.id=0         #当前机器在kafka机器里唯一标识,与zookeeper的myid一个意思,由于我使用独立zookeeper这里可以注释掉

port=9092          #socket监听的端口

host.name=192.168.152.192    #broker绑定的IP,我这里三台机器都绑定了,后面远程复制的时候记得修改

num.network.threads=3        #broker处理网络的线程数目

num.io.threads=8                  #broker处理IO的线程数目

socket.send.buffer.bytes=102400     #kafka发送数据缓冲区的大小,到达阈值才发送

socket.receive.buffer.bytes=102400     #kafka接收数据缓冲区的大小,达到阈值才落地

socket.request.max.bytes=104857600    #kafka所能接受的数据最大值,100MB,这个值应该小于机器配置的Java heap,一般Java heap为内存的1/4

log.dirs=/home/kafka/kafkalogs        #存储消息的目录位置

num.partitions=1       #每个主题的默认分区数目,更多的分区可以允许更多的消费,可以提高性能

num.recovery.threads.per.data.dir        #在kafka启动和关闭flush时,还原日志时,对于每个数据目录所能使用的线程数目

log.flush.interval.message=10000        #当消息达到10000条时就会强制刷一次数据到磁盘

log.flush.interval.ms=1000                    #每过1秒就会强制刷数据到磁盘,单位毫秒

log.retention.hours=168                        #消息最大持久化时间,单位小时,即7天

log.retention.bytes=1073741824          #一种持久化策略,当剩余段文件不低于这个阈值,当前段就会从日志消息中删除

log.segment.bytes=1073741824          #一个段文件的最大值,达到最大值会另起一个新的segment

log.retention.check.interval.ms=300000   #每300秒去检验一下段文件是否能被删除

zookeeper.connect=192.168.152.192:12181,192.168.152.193:12181,192.168.152.194:12181  #设置zookeeper的端口

zookeeper.connect.timeout.ms=6000    #连接zookeeper的超时时间

解释完毕,上面也是我配置文件中的内容,注意host.name=192.168.152.192在其他两个机器上要作对应修改

master机器配置完毕

4.    切换到slave1和slave2上创建相应的目录

[root@slave1]# mkdir /home/kafka

[root@slave1]# mkdir /home/kafka/kafkalogs

[root@slave2]# mkdir /home/kafka

[root@slave2]# mkdir /home/kafka/kafkalogs

5.     回到master机器实施远程复制命令

[root@master]# scp -r /home/kafka/kafka_2.11-0.9.0.1 slave1:/home/kafka

[root@master]# scp -r /home/kafka/kafka_2.11-0.9.0.1 slave2:/home/kafka

6.     切换到slave1和slave2上修改配置文件

[root@slave1]# vim /home/kafka/kafka_2.11-0.9.0.1/config/server.properties

找到host.name=一行,替换掉IP,我这里是192.168.152.193,保存退出

[root@slave2]# vim /home/kafka/kafka_2.11-0.9.0.1/config/server.properties

找到host.name=一行,替换掉IP,我这里是192.168.152.194,保存退出

7.     进行验证

7.1   先启动zookeeper集群

[root@master]# /home/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start

[root@slave1]# /home/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start

[root@slave2]# /home/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start

7.2    再启动kafka集群

--------------master--------------

[root@master]# cd /home/kafka/kafka_2.11-0.9.0.1/bin

[root@master]# ./kafka-server-start.sh -daemon ../config/server.properties

[root@master]# jps

2750 QuorumPeerMain

3930 Jps

3246 Kafka

--------------slave1--------------

[root@slave1]# cd /home/kafka/kafka_2.11-0.9.0.1/bin

[root@slave1]# ./kafka-server-start.sh -daemon ../config/server.properties

[root@slave1]# jps

3341 Kafka

2632 QuorumPeerMain

3666 Jps

--------------slave2--------------

[root@slave2]# cd /home/kafka/kafka_2.11-0.9.0.1/bin

[root@slave2]# ./kafka-server-start.sh -daemon ../config/server.properties

[root@slave2]# jps

2612 QuorumPeerMain

3682 Jps

3293 Kafka

7.3   创建一个Topic实例:

7.3.1 在一台机器上创建一个主题

[root@master bin]# ./kafka-topics.sh --create --zookeeper 192.168.152.192:12181 --replication-factor 3 --partitions 1 --topic hello

7.3.2 在一台机器上创建一个发布者

[root@slave1 bin]# ./kafka-console-producer.sh --broker-list 192.168.152.193:9092 --topic hello

此时控制台会捕获键盘值,当有换行键被按下表示一条消息被发送出去

7.3.3 在一台机器上创建一个订阅者

[root@slave2 bin]# ./kafka-console-consumer.sh --zookeeper 192.168.152.194:12181 --topic hello --from-beginning

此时控制台会处于接收状态

7.3.4 在slave1上输入信息回车之后,slave2上会同步出现发送过来的消息。要关闭slave1或者slave2,Ctrl+C即可

8.    关闭kafka集群

[root@master bin]# ./kafka-server-stop.sh

[root@slave1 bin]# ./kafka-server-stop.sh

[root@slave2 bin]# ./kafka-server-stop.sh

搭建完毕

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值