官网地址: http://kafka.apache.org/downloads.html
# 2.11是scala的版本,2.4.1是kafka的版本
wget https://archive.apache.org/dist/kafka/2.4.1/kafka_2.11‐2.4.1.tgz
mkdir -p /usr/local/kafka/kafka_2.11-2.4.1/kafka-logs
tar -zxvf kafka_2.11-2.4.1.tgz -C /usr/local/kafka/
如果zookeeper和kafka在同一台机器上,单机版无需任何修改用默认配置可以启动
修改原配置文件前建议先备份一下
cp /usr/local/kafka/kafka_2.11-2.4.1/config/server.properties /usr/local/kafka/kafka_2.11-2.4.1/config/server.properties.bak
建议修改日志目录
默认是log.dirs=/tmp/kafka-logs,/tmp下的文件会被系统定期清理,建议修改成自己的目录
配置zookeeper
zookeeper默认配置zookeeper.connect=localhost:2181,如果kafka和zookeeper在同一台机器上可以不修改
监听器listeners
默认监听localhost:9092,如果服务器是多网卡可以配置多个,用逗号分隔,如果配置为0.0.0.0:9092则表示监听所有网卡
对外公布的监听器advertised.listeners
listeners
是 Broker 用来监听网络请求的那么, 其他 Broker 或者客户端想要与它通信, 则需要知道具体的 IP:PORT 吧?所以, 为了让别人知道自己的监听器, 那么就需要公开出去, 当然这个公开的形式, 是通过 zk 来共享数据)
advertised.listeners
不支持0.0.0.0
这种形式, 所以如果listeners
设置成0.0.0.0
,则必须设置advertised.listeners
属性。(0.0.0.0
表示监听 Broker 上任意的网卡的, 你将这个发布出去, 那么别的 Broker 和客户端怎么知道你具体的 ip 和端口呢?)
默认需要1G内存,如果内存不足起不来,特别是1G的云服务器
vim /usr/local/kafka/kafka_2.11-2.4.1/bin/kafka-server-start.sh
#!/bin/bash
if [ $# -lt 1 ];
then
echo "USAGE: $0 [-daemon] server.properties [--override property=value]*"
exit 1
fi
base_dir=$(dirname $0)
if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties"
fi
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
# 默认是1G
export KAFKA_HEAP_OPTS="-Xmx256M -Xms256M"
fi
EXTRA_ARGS=${EXTRA_ARGS-'-name kafkaServer -loggc'}
COMMAND=$1
case $COMMAND in
-daemon)
EXTRA_ARGS="-daemon "$EXTRA_ARGS
shift
;;
*)
;;
esac
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"
zookeeper安装启动参考https://blog.csdn.net/weixin_41883161/article/details/137680225
sh /usr/local/kafka/kafka_2.11-2.4.1/bin/kafka-server-start.sh -daemon /usr/local/kafka/kafka_2.11-2.4.1/config/server.properties &
tail -f /usr/local/kafka/kafka_2.11-2.4.1/logs/server.log
sh /usr/local/kafka/kafka_2.11-2.4.1/bin/kafka-server-stop.sh