kafka-2.11-0.11集群搭建

kafka集群依赖于zookeeper,所以需要先搭建zookeeper集群,kafka默认自带了内建的zookeeper,建议使用自己外搭建的zookeeper,这样比较灵活并且解耦服务,同时也可以让其他需要zookeeper的服务使用。注意kafka-2.11-0.11版本与zookeeper-3.4.10.tar.gz对应,

 

一、安装

1、下载zookeeper:

# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

生产环境使用集群至少需要三台服务器,官方建议至少3或5台,并且集群节点个数必须是奇数。需要java环境,jdk1.8+(自己先配置好,本文不涉及)。

创建目录:

#mkdir  /data

#mkdir  /data/zookeeper/{data,logs}  -p

#tar xf zookeeper-3.4.10.tar.gz

#rm -rf zookeeper-3.4.10.tar.gz

修改配置文件:

创建配置文件zoo.cfg

#cat  zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
clientPort=2181
maxClientCnxns=100
autopurge.snapRetainCount=3
autopurge.purgeInterval=24
quorumListenOnAllIPs=true
dataLogDir=/data/zookeeper/logs
server.3=10.10.11.92:2888:3888
server.6=10.10.9.29:2888:3888
server.9=10.10.8.16:2888:3888 

创建myid,用于唯一标示一个zk节点,在创建的/data/zookeeper/data目录下面创建:

#echo 3  >  /data/zookeeper/data/myid

将配置好的zookeeper服务整个分别copy到另外两台服务器上,并创建需要的目录。

#mkdir  /data/zookeeper/{data,logs}  -p

并在相应的data目录下创建各自的myid文件:

#echo 6  >  /data/zookeeper/data/myid

#echo 9  >  /data/zookeeper/data/myid

切换到bin目录,分别启动zk服务:

./zkServer.sh start

三台都启动完成后,发现报错了:

2017-11-07 15:31:01,300 [myid:3] - WARN  [WorkerSender[myid=3]:QuorumCnxManager@588] - Cannot open channel to 9 at election address /10.10.8.16:3888
java.net.ConnectException: Connection refused (Connection refused)

排错:

1、怀疑是防火墙的问题,这是内网啊,所以不是防火墙;

2、端口被占用了,lsof  -i:3888,没有输出啊,所以端口也没占用;

3、ip地址不是本机的网卡

云服务器采用虚拟化的技术,监听的网卡是属于物理网关的网卡,而虚拟化机内部自然没有这个网卡。

在配置文件添加一下参数,重启服务正常:

quorumListenOnAllIPs=true

 

2、查看zk状态

#./zkServer.sh  status

3、zookeepr常用的四字节命令:

ZooKeeper四字命令
功能描述
conf 3.3.0版本引入的。打印出服务相关配置的详细信息。
cons 3.3.0版本引入的。列出所有连接到这台服务器的客户端全部连接/会话详细信息。包括"接受/发送"的包数量、会话id、操作延迟、最后的操作执行等等信息。
crst 3.3.0版本引入的。重置所有连接的连接和会话统计信息。
dump 列出那些比较重要的会话和临时节点。这个命令只能在leader节点上有用。
envi 打印出服务环境的详细信息。
reqs 列出未经处理的请求
ruok 测试服务是否处于正确状态。如果确实如此,那么服务返回"imok",否则不做任何相应。
stat 输出关于性能和连接的客户端的列表。
srst 重置服务器的统计。
srvr 3.3.0版本引入的。列出连接服务器的详细信息
wchs 3.3.0版本引入的。列出服务器watch的详细信息。
wchc 3.3.0版本引入的。通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表。
wchp 3.3.0版本引入的。通过路径列出服务器watch的详细信息。它输出一个与session相关的路径。
mntr

3.4.0版本引入的。输出可用于检测集群健康状态的变量列表

 

#echo  mntr  | nc  ip  port

ip:zk服务器的IP地址; port:zk服务的端口

 

二、kafka集群

将下载好的包上传到服务器,并解压到/data目录下:

#tar xf  kafka_2.11-0.11.0.0.tgz

只需要修改server.properties文件、consumer.properties、producer.properties文件

server.properties文件主要注意三个地方:

broker.id=0       #每个broker在集群中必须是唯一的,如有三个节点可以分别设置为(0、1、2)

host.name=10.10.8.16      #host.name为个服务器的IP地址,根据自己的情况填写

zookeeper.connect=10.10.8.16:2181,10.10.9.29:2181,10.10.11.92:2181

 

#cat server.properties

broker.id=0
delete.topic.enable=true
listeners=PLAINTEXT://10.10.89.219:9092
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=/data/kafka/kafka-logs
num.partitions=4
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=10.10.8.16:2181,10.10.9.29:2181,10.10.11.92:2181
zookeeper.connection.timeout.ms=100000
zookeeper.session.timeout.ms=50000
group.initial.rebalance.delay.ms=0

 

将配置好的服务分别copy到另外两台服务器上面:

!!!注意修改broker.id、host.name,为各自服务器对应的。

切换到bin目录,启动kafka服务:./kafka-server-start.sh -daemon ../config/server.properties &

 

2、创建topic

#./kafka-topics.sh --create --zookeeper 10.10.11.92:2181,10.10.8.16:2181,10.10.9.29:2181 --replication-factor 2 --partitions 9 --topic userlog

参数解释:
zookeeper:zookeepr集群的地址
replication-factor:复制两份
partitions:创建9个partition
topic: topic名称

使用 describe 命令来显示 topic 详情

#./kafka-topics.sh --describe --zookeeper 10.10.11.92:2181,10.10.8.16:2181,10.10.9.29:2181 --topic test
Topic:test    PartitionCount:1    ReplicationFactor:2    Configs:
    Topic: test    Partition: 0    Leader: 3    Replicas: 3,2    Isr: 3,2
1Leader 是给定分区的节点编号,每个分区的部分数据会随机指定不同的节点
2Replicas 是该日志会保存的复制
3Isr 表示正在同步的复制
 

 

posted @ 2017-11-07 18:51  诗码者  阅读(890)  评论(0编辑  收藏  举报