kafka搭建

一 简介:

    Kafka 被称为下一代分布式消息系统,是非营利性组织ASF(Apache Software Foundation,简称为ASF)基金会中的一个开源项目,比如HTTP Server、Hadoop、ActiveMQ、Tomcat等开源软件都属于Apache基金会的开源软件,类似的消息系统还有RbbitMQ、ActiveMQ、ZeroMQ,最主要的优势是其具备分布式功能、并且结合zookeeper可以实现动态扩容。

http://www.infoq.com/cn/articles/apache-kafka

1.1.1:kafka下载地址:

http://kafka.apache.org/downloads.html

1.1.2:zookeeper 下载地址:

http://zookeeper.apache.org/releases.html

二 安装zookeeper

2.1.1 zookeeper简介:

    

zookeeper集群特性:整个集群种只要有超过集群数量一半的zookeeper工作只正常的,那么整个集群对外就是可用的,假如有2台服务器做了一个zookeeper集群,只要有任何一台故障或宕机,那么这个zookeeper集群就不可用了,因为剩下的一台没有超过集群一半的数量,但是假如有三台zookeeper组成一个集群,那么损坏一台就还剩两台,大于3台的一半,所以损坏一台还是可以正常运行的,但是再损坏一台就只剩一台集群就不可用了。那么要是4台组成一个zookeeper集群,损坏一台集群肯定是正常的,那么损坏两台就还剩两台,那么2台不大于集群数量的一半,所以3台的zookeeper集群和4台的zookeeper集群损坏两台的结果都是集群不可用,一次类推5台和6台以及7台和8台都是同理,所以这也就是为什么集群一般都是奇数的原因。

 2.1.1 安装

    #安装之前所有机器都要做host解析

[root@Docker tools]# tar xf zookeeper-3.4.11.tar.gz 
[root@Docker tools]# ln -s /tools/zookeeper-3.4.11 /tools/zookeeper
[root@Docker tools]# cp /tools/zookeeper/conf/zoo_sample.cfg /tools/zookeeper/conf/zoo.cfg 
[root@Docker tools]# mkdir /tools/zookeeper/data

2.1.2 配置

[root@Docker tools]# grep "^[a-Z]" /tools/zookeeper/conf/zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tools/zookeeper/data
clientPort=2181
server.1=192.168.10.10:2888:3888
server.2=192.168.10.167:2888:3888
server.3=192.168.56.10.171:2888:3888

只有myid不同其他配置均相同
[root@Docker tools]# echo "1" > /tools/zookeeper/data/myid

2.2.3 启动并验证

[root@Docker tools]# /tools/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /tools/zookeeper/bin/../conf/zoo.cfg
[root@Docker tools]# /tools/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /tools/zookeeper/bin/../conf/zoo.cfg
Mode: follower


[root@DNS-Server tools]# /tools/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /tools/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
You have mail in /var/spool/mail/root
[root@DNS-Server tools]# /tools/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /tools/zookeeper/bin/../conf/zoo.cfg
Mode: leader

 三 搭建kafka

3.1.1 安装

 tar xvf kafka_2.11-1.0.0.tgz
 ln -sv /tools/kafka_2.11-1.0.0 /tools/kafka

3.1.2 配置

[root@Docker ~]# grep "^[a-Z]" /tools/kafka/config/server.properties 
broker.id=1                                                         #id 唯一
listeners=PLAINTEXT://192.168.10.10:9092      #填写本机IP
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=24
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.10.10:2181,192.168.10.167:2181,192.168.10.171:2181                                              #填写所有zookeeper地址
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

3.1.3 启动并检查

[root@Docker ~]# /tools/kafka/bin/kafka-server-start.sh -daemon /tools/kafka/config/server.properties 
[root@Docker ~]# jps
14034 Kafka
10740 QuorumPeerMain
27463 Main
1208 Bootstrap
7676 Jps
8349 Elasticsearch

3.1.4 测试创建topic

#创建名为logstashtest,partitions(分区)为3,replication(复制)为3的topic(主题):

#在任意kafaka服务器操作:

[root@Docker ~]# /tools/kafka/bin/kafka-topics.sh --create  --zookeeper 192.168.10.10:2181,192.168.10.167:2181,192.168.10.171:2181 --partitions 3 --replication-factor 3 --topic logstashtest 
Created topic "logstashtest".
#获取topic
#
状态说明:logstashtest有三个分区分别为1、2、3,分区0的leader是3(broker.id),分区0有三个副本,并且状态都为lsr(ln-sync,表示可以参加选举成为leader)。
[root@DNS-Server tools]# /tools/kafka/bin/kafka-topics.sh --describe  --zookeeper 192.168.10.10:21881,192.168.10.167:2181,192.168.10.171:2181 --topic logstashtest
Topic:logstashtest    PartitionCount:3    ReplicationFactor:3    Configs:
    Topic: logstashtest    Partition: 0    Leader: 3    Replicas: 3,1,2    Isr: 3,1,2
    Topic: logstashtest    Partition: 1    Leader: 1    Replicas: 1,2,3    Isr: 1,2,3
    Topic: logstashtest    Partition: 2    Leader: 2    Replicas: 2,3,1    Isr: 2,3,1

3.1.5 删除并检查

[root@DNS-Server tools]# /tools/kafka/bin/kafka-topics.sh --delete  --zookeeper 192.168.10.10:2181,192.168.10.167:2181,192.168.10.171:2181 --topic logstashtest
Topic logstashtest is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
You have mail in /var/spool/mail/root
[root@DNS-Server tools]# /tools/kafka/bin/kafka-topics.sh --describe  --zookeeper 192.168.10.10:2181,192.168.10.167:2181,192.168.10.171:2181 --topic logstashtest
#获取多个主题

[root@DNS-Server tools]# /tools/kafka/bin/kafka-topics.sh --list --zookeeper 192.168.10.10:2181,192.168.10.167:2181,192.168.10.171:2181

作者:闫世成

出处:http://cnblogs.com/yanshicheng

联系:yans121@sina.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题或建议,请联系上述邮箱,非常感谢。
原文地址:https://www.cnblogs.com/yanshicheng/p/9438640.html