kafka集群搭建

最近在研究分布式消息中间件kafka,写个随笔记录下集群搭建的步骤和遇到的一些问题

第一步、搭建Zookeeper集群

Kafka是使用Zookeeper来保存集群元数据信息和消费者信息。虽然Kafka发行版已经自带了Zookeeper,可以通过脚本直接启动,但仍然建议安装一个完整版的Zookeeper。

1、下载zookeeper

cd opt

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

tar -zxvf zookeeper-3.4.14.tar.gz

2、修改配置文件

cd /zookeeper-3.4.14

mkdir logs

cd conf

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

修改配置文件zoo.cfg:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/opt/zookeeper-3.4.14/data
dataLogDir=/root/opt/zookeeper-3.4.14/logs
# 从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能
# 这个参数指定了需要保留的文件数目。默认是保留3个。
autopurge.snapRetainCount=500
# 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。
autopurge.purgeInterval=24
clientPort=2181
server.1=192.168.1:2888:3888
server.2=192.168.2:2888:3888
server.3=192.168.3:2888:3888

依次按照上述步骤搭建3台服务器server1、server2、server3

3、创建myid文件

cd /root/opt/zookeeper-3.4.14/data

#server1
echo "1" > myid

#server2
echo "2" > myid

#server3
echo "3" > myid

4、修改日志配置文件

conf目录的log4j.properties是zk的日志输出的配置文件

conf/log4j.properties

将:
zookeeper.root.logger=INFO, CONSOLE
改为:
zookeeper.root.logger=INFO, ROLLINGFILE

将:
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
改为:
// 每天一个log日志文件,而不是在同一个log文件中递增日志
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender

bin/zkEvn.sh

将:
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="."
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
改为:
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="$ZOOBINDIR/../logs"
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi

5、启动zk集群

依次启动server1、server2、server3上zk

cd bin

// 启动
./zkServer.sh start

// 查看启动状态
./zkServer.sh status

注意:一定要先把防火墙关了!否则节点之前互相连接不上

第二步、搭建Kafka集群 

1、下载Kafka

cd opt

wget http://mirror.bit.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz

tar -zxvf kafka_2.12-2.2.0.tgz

cd kafka_2.12-2.2.0

2、修改配置文件

Kafka的配置文件在${KAFKA_HOME}/config/server.properties目录:

mkdir logs

cd config

vim server.properties

添加如下配置:
# 当前broker在集群中的唯一标识,类似zk中的myid
broker.id=1 
# 配置监听
listeners=PLAINTEXT://192.168.1:9092
# 消息日志输出目录
log.dirs=/root/opt/kafka_2.12-2.2.0/logs
# 使用的zk集群
zookeeper.connect=192.168.1,192.168.2,192.168.3:2281/kafka

依次按照上述步骤搭建3台服务器server1、server2、server3

3、启动Kafka集群

依次启动server1、server2、server3上Kafka

cd bin

./kafka-server-start.sh -daemon ../config/server.properties

ok,至此Kafka集群已搭建成功

4、创建Topic来验证集群是否工作正常

cd bin
// 创建topic
./kafka-topics.sh --create --bootstrap-server 192.168.1:9092 --replication-factor 1 --partitions 1 --topic test

// 查看topic列表
./kafka-topics.sh --list --bootstrap-server 192.168.1:9092

// 查看topic描述
./kafka-topics.sh --describe --bootstrap-server 192.168.1:9092 --topic test

// 删除topic
./kafka-topics.sh --bootstrap-server 192.168.1:9092 --delete --topic test

// 创建生产者发送消息
./kafka-console-producer.sh --broker-list 192.168.1:9092 --topic test
  This is a message
  This is another message

// 创建消费者接收消息
./kafka-console-consumer.sh --bootstrap-server 192.168.1:9092 --topic test --from-beginning
 This is a message
 This is another message

// 查看topic策略
./kafka-configs.sh --zookeeper 192.168.1:2181/kafka --describe --entity-type topics --entity-name test

// 修改topic数据保留时间为10分组(不用重启kakfa)
./kafka-configs.sh --zookeeper 192.168.1:2181/kafka --entity-type topics --entity-name test --alter --add-config retention.ms=600000

大功告成,Kafka集群搭建完毕

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值