Kafka 安装
Posted 进击的大杂烩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka 安装相关的知识,希望对你有一定的参考价值。
一. 环境
IP | 用途 |
---|---|
192.168.100.101 | kafka,zookeeper,zkui,kafka-manager |
192.168.100.102 | kafka,zookeeper |
192.168.100.103 | kafka,zookeeper |
二. 软件相关
软件 | 版本 | 说明 |
---|---|---|
jdk | 1.8.0_40 | 安装jdk并配置环境 |
kafka | kafka_2.11-1.0.0 | |
zookeeper | zookeeper-3.4.11 | kafka 需要搭配zookeeper使用 |
zkui | zkui-2.0 | zkui需要自己编译,编译好的jar包已经保存到常用软件存储 |
kafka-manager | kafka-manager-1.3.3.15 | 需要自己编译,编译好的程序包保存到常用软件存储 |
三. zookeeper 集群安装
kafka使用zookeeper保存一些集群内部的meta信息,比如Topic、group、partion状态等,kafka是自带有zookeeper的,但我们为了保证稳定性/故障隔离, 选择了自定义的安装方式,与kafka拆开,单独构建zookeeper cluster。
安装过程:
以下安装过程在三台服务器中都要执行
1. 解压安装包
# tar xzvf zookeeper-3.4.11.tar.gz -C /data/kafka/
2. 修改配置文件
# pwd
/data/kafka/zookeeper-3.4.11
# vim conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/kafka/zookeeper-3.4.11/data
dataLogDir=/data/kafka/zookeeper-3.4.11/log
clientPort=2181
autopurge.snapRetainCount=30
autopurge.purgeInterval=1
server.1=192.168.100.101:12888:13888
server.2=192.168.100.102:12888:13888
server.3=192.168.100.103:12888:13888
#不容node,不同id,根据配置文件中的server.x
# echo 1 > /data/kafka/zookeeper-3.4.11/data/myid
3. 启动
三台服务器都部署好后,启动zookeeper服务
bin/zkServer.sh start
4. 验证
在每台服务器上输入如下命令查看当期zookeeper的角色状态,其中有一台mode为leader
,其余两台为follower
# pwd
/data/kafka/zookeeper-3.4.11
# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/kafka/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
四. zkui 安装
# pwd
/data/kafka/zkui
配置文件
# 服务监听端口
serverPort=9090
# zookeeper 服务器集群列表
zkServer=192.168.200.102:2181,192.168.200.101:2181,192.168.200.103:2181
scmRepo=http://myserver.com/@rev1=
scmRepoPath=//appconfig.txt
ldapAuth=false
ldapDomain=mycompany,mydomain
ldapUrl=ldap://<ldap_host>:<ldap_port>/dc=mycom,dc=com
ldapRoleSet={"users": [{ "username":"domain\\user1" , "role": "ADMIN" }]}
#基础认证的相关用户名和密码
userSet = {"users": [{ "username":"admin" , "password":"manager","role": "ADMIN" },{ "username":"appconfig" , "password":"appconfig","role": "USER" }]}
env=prod
jdbcClass=org.h2.Driver
jdbcUrl=jdbc:h2:zkui
jdbcUser=root
jdbcPwd=manager
loginMessage=Please login using admin/manager or appconfig/appconfig.
sessionTimeout=3000
zkSessionTimeout=5
blockPwdOverRest=false
https=false
keystoreFile=/home/user/keystore.jks
keystorePwd=password
keystoreManagerPwd=password
defaultAcl=
X-Forwarded-For=false
启动:
# nohup java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &
启动之后可以通过页面http://192.168.100.101:9090
访问,登陆后通过http://121.14.23.239:9090/monitor
可以查看zookeeper集群状态
五. kafka 集群安装
以下安装过程在三台服务器都要执行
安装过程:
1. 解压安装包
# tar xzvf kafka_2.11-1.0.0.tgz -C /data/kafka/
2. 修改配置文件
# pwd
/data/kafka/kafka_2.11-1.0.0
# vim config/server.properties
有关配置文件的详细解析在后面的文章中给出
# 不同主机不同id
broker.id=0
# 监听协议
listeners=PLAINTEXT://192.168.100.101:9092
# port
port=9092
# zookeeper 配置,注册目录为kafka
zookeeper.connect=192.168.100.102:2181,192.168.100.101:2181,192.168.100.103:2181/kafka
zookeeper.connection.timeout.ms=6000
zookeeper.session.timeout.ms=6000
# 日志存储目录
log.dirs=/data/kafka/kafka_2.11-1.0.0/data
# 日志文件清理规则
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
group.initial.rebalance.delay.ms=0
3. 启动
# ./bin/kafka-server-start.sh -deamon ./config/server.properties
4. 验证
通过zkui页面工具可以看到当前集群所有brokershttp://121.14.23.239:9090/home?zkPath=/kafka/brokers/ids
或者通过 zookeeper 命令行工具查看
# pwd
/data/kafka/zookeeper-3.4.11
# ./bin/zkCli.sh
ls /kafka/brokers/ids
[1, 2, 3]
六. kafka-manager 部署
1. 编辑配置文件
# pwd
/data/kafka/kafka-manager-1.3.3.15
# vim conf/application.conf
play.crypto.secret="^<csmm5Fx4d=r2HEX8pelM3iBkFVv?k[mc;IZE<_Qoq8EkX_/7@Zt6dP05Pzea3U"
play.crypto.secret=${?APPLICATION_SECRET}
play.i18n.langs=["en"]
play.http.requestHandler = "play.http.DefaultHttpRequestHandler"
play.http.context = "/"
play.application.loader=loader.KafkaManagerLoader
# 配置zookeeper集群列表
kafka-manager.zkhosts="192.168.100.101:2181,192.168.100.102:2181,192.168.100.103:2181"
kafka-manager.zkhosts=${?ZK_HOSTS}
pinned-dispatcher.type="PinnedDispatcher"
pinned-dispatcher.executor="thread-pool-executor"
application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"]
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "INFO"
}
#启用基本认证,并设置账号密码
basicAuthentication.enabled=true
basicAuthentication.enabled=${?KAFKA_MANAGER_AUTH_ENABLED}
basicAuthentication.username="admin"
basicAuthentication.username=${?KAFKA_MANAGER_USERNAME}
basicAuthentication.password="password"
basicAuthentication.password=${?KAFKA_MANAGER_PASSWORD}
basicAuthentication.realm="Kafka-Manager"
basicAuthentication.excluded=["/api/health"] # ping the health of your instance without authentification
kafka-manager.consumer.properties.file=${?CONSUMER_PROPERTIES_FILE}
2. 配置 JMX
kafka-manager 通过zookeeper 和 JMX 两个方面来监控kafka集群,所以kafka要开启 JMX。
kafka 开启 JMX 的方法:在kafka启动脚本中增加 JMX_PORT 的环境变量。
# pwd
/data/kafka/kafka_2.11-1.0.0
# vim bin/kafka-server-start.sh
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
export KAFKA_HEAP_OPTS="-Xmx6g -Xms6g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSi
ze=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
fi
EXTRA_ARGS=${EXTRA_ARGS-'-name kafkaServer -loggc'}
# 在此处增加 JMX_PORT 的环境变量
export JMX_PORT=19797
COMMAND=$1
case $COMMAND in
-daemon)
EXTRA_ARGS="-daemon "$EXTRA_ARGS
shift
;;
*)
;;
esac
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"
然后重启kafka,集群中三台服务器都要做同样的操作。
3. 启动
# nohup ./bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=9091 &
4. 添加 kafka 集群到kafka-manager 中
打开kafka-manager管理页面:http://192.168.100.101:9001
登陆后通过菜单cluster->Add Cluster
打开集群添加页面并填写相应配置如下图所示:
其中配置项Kafka Version
中可以选择0.11.0.0
。配置完成后保存即可看到kafka集群的详细信息。同时zkui工具中也能看到kafka和kafka-manager2个目录
至此kafka集群部署完毕。后续会有相关配置和操作的详细讲解。
以上是关于Kafka 安装的主要内容,如果未能解决你的问题,请参考以下文章
在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途