1.下载
http://mirror.bit.edu.cn/apache/kafka/2.1.0/kafka_2.11-2.1.0.tgz
2.解压
tar -zxvf kafka_2.11-2.1.0.tgz
3.创建两份配置文件
cd conf
cp server.properties server1.properties
cp server.properties server2.properties
4.创建两个log目录
cd logs
mkdir log1 log2
5.编辑配置文件
编辑 server1.properties,server2.properties
主要修改点
#broker id 在集群中必须唯一
broker.id=1
#监听端口
#listeners=PLAINTEXT://:9001
host.name=192.168.1.1
port=9001
#topic 分区数量
num.partitions=5
# 数据存储目录
log.dirs=/home/kafka/kafka_2.12-2.1.0/logs/log1
# zookpeer 配置
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
两个文件不同的地方
broker.id,log.dirs ,host.name(kafka所在的IP),port:kafka的端口
6.启动kafka集群
./bin/kafka-server-start.sh -daemon config/server1.properties
./bin/kafka-server-start.sh -daemon config/server2.properties
7.验证集群
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic my-topic
创建一个my-topic 的 topic
副本为1
分区数为5
实例1
实例2
可以看到两个实例,一个实例上有3个分区,一个为两个分区。
显示kafka 主题数量
./kafka-topics.sh --zookeeper localhost:2181 --describe
kafka 内存调整
如果使用的CMS GC算法,建议JVM Heap不要太大,在4GB以内就可以。JVM太大,导致Major GC或者Full GC产生的“stop the world”时间过长,导致broker和zk之间的session超时,比如重新选举controller节点和提升follow replica为leader replica。
JVM也不能过小,否则会导致频繁地触发gc操作,也影响Kafka的吞吐量。另外,需要避免CMS GC过程中的发生promotion failure和concurrent failure问题。CMSInitiatingOccupancyFraction=70可以预防concurrent failure问题,提前出发Major GC。
Kafka JVM参数可以直接修改启动脚本bin/kafka-server-start.sh 中的变量值。下面是一些基本参数,也可以根据实际的gc状况和调试GC需要增加一些相关的参数。
export
KAFKA_HEAP_OPTS=
"-Xmx4G -Xms4G -Xmn2G -XX:PermSize=64m -XX:MaxPermSize=128m -XX:SurvivorRatio=6 -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly"