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