版本:
CentOS-6.5-x86_64
zookeeper-3.4.6
kafka_2.10-0.10.1.0
一、zookeeper配置
1.下载 $wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
2.解压 $tar zxvf zookeeper-3.4.6.tar.gz
3.配置
$ cd zookeeper-3.4.6
$ cp -rf conf/zoo_sample.cfg conf/zoo.cfg
$ vim zoo.cfg
#Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔
tickTime=2000
#Zookeeper接受Follower客户端初始化连接时最长能忍受多少个心跳时间间隔数,总的时间长度就是5*2000=10 秒
initLimit=5
#标识 Leader与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime的时间长度,总的时间长度就是5*2000=10秒
syncLimit=5
#快照日志的存储路径
dataDir=/opt/zookeeper-3.4.6/zkdata
#事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
dataLogDir=/opt/zookeeper-3.4.6/zkdatalog
#端口
clientPort=2181
#这个1是服务器的标识也可以是其他的数字,表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里
第一个端口是通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口
server.1=192.168.61.132:2888:3888
server.2=192.168.61.133:2888:3888
server.3=192.168.61.134:2888:3888
4.创建myid文件
#server1
echo "1" > /opt/zookeeper-3.4.6/zkdata/myid
#server2
echo "2" > /opt/zookeeper/zkdata/myid
#server3
echo "3" > /opt/zookeeper/zkdata/myid
5.配置环境变量(可选)
PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$ZOOKEEPER_HOME/lib:
6.启动zookeepers $ sh zkServer.sh start
7.注意点
zookeeper 不会主动的清除旧的快照和日志文件,这个是操作者的责任。
二、kafka配置
1.下载kafka wget http://apache.fayea.com/kafka/0.10.0.1/kafka_2.10-0.10.0.1.tgz
2.解压 tar –zxf kafka_2.10-0.10.0.1.tgz
3. 配置 进入kafka安装工程根目录编辑config/server.properties
#消息存放的目录,这个目录可以配置为“,”逗号分割的表达式
log.Dirs =/opt/kafka_2.10-0.10.1.0/kalog
#当前机器在集群中的唯一标识,和zookeeper的myid性质一样
broker.id=0
#kafka对外提供服务的端口默认是9092
port=9092
#默认是关闭的,在0.8.1有个bug,DNS解析问题,失败率的问题
host.name=192.168.7.100
#默认的分区数,一个topic默认1个分区数
num.partitions=1
#默认消息的最大持久化时间,168小时,7天
log.retention.hours=168
#zookeeper的连接端口
zookeeper.connect=192.168.61.132:2181,192.168.61.133:2181,192.168.61.134:2181
4.启动kafka
$ shbin/kafka-server-start.sh config/server.properties &
5.新建一个TOPIC
$ sh kafka-topics.sh --create --topic kafkatopic --replication-factor 1--partitions 1 --zookeeper localhost:2181
6.把KAFKA的生产者启动起来
$ sh kafka-console-producer.sh --broker-listlocalhost:9092 --sync --topic kafkatopic
7.另开一个终端,把消费者启动起来
$ sh kafka-console-consumer.sh --zookeeperlocalhost:2181 --topic kafkatopic --from-beginning
8.使用
在发送消息的终端输入test1,则可以在消费消息的终端显示
9.日志说明
默认kafka的日志是保存在/opt/kafka_2.10-0.10.1.0/logs目录下
#kafka的运行日志
server.logs
#kafka是用zookeeper来保存状态,所以可能会进行切换,切换的日志
state-change.log
#kafka选择一个节点作为“controller”,当发现有节点down掉的时候它负责在游泳分区的所有节点中选择新的leader,这使得Kafka可以批量的高效的管理所有分区节点的主从关系。如果controller down掉了,活着的节点中的一个会备切换为新的controller
controller.log
#使用客户端进入zk
./zkCli.sh -server 127.0.0.1:2181 #默认是不用加’-server‘参数的修改默认端口
#查看目录情况执行“ls /”
[zk: 127.0.0.1:12181(CONNECTED) 0]ls /
#显示结果:[consumers, config, controller,isr_change_notification, admin, brokers, zookeeper,controller_epoch]
上面的显示结果中:只有zookeeper是,zookeeper原生的,其他都是Kafka创建的
#标注一个重要的
[zk: 127.0.0.1:12181(CONNECTED) 1] get/brokers/ids/0
#还有一个是查看partion
[zk: 127.0.0.1:12181(CONNECTED) 7] get/brokers/topics/shuaige/partitions/0
------------------------------------------------------------------------------------------
参考:
http://www.cnblogs.com/luotianshuai/p/5206662.html(集群搭建)
http://blog.csdn.net/lizhitao/article/category/2194509(博客)
http://blog.csdn.net/louisliaoxh/article/details/51577117(Consumer)
http://blog.csdn.net/qq_35799003/article/details/52238744(Producer)