做好自己份内事
分类: 系统运维
2018-03-06 15:03:59
kafka及kafka-manager安装
要求:jdk8+
所有配置文件配置项比较多,尽量保持默认值,环境搭建起来之后再依次调优。
kafka运行依赖jdk,所以首先安装jdk
验证本地是否已经安装jdk及版本命令:java -version
如果本地没有安装jdk。上传文件jdk-8u111-linux-x64.tar.gz(jdk文件,版本1.8)。
建立文件夹:mkdir -p /usr/local/java
拷贝文件:cp jdk-8u111-linux-x64.tar.gz /usr/local/java
解压文件:cd /usr/local/java && tar zxvf jdk-8u111-linux-x64.tar.gz
设置环境变量:
访问文件:vi /etc/profile
JAVA_HOME=/usr/local /java/jdk1.8.0_111
JRE_HOME=/usr/local /java/jdk1.8.0_111/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
更新设置文件命令:source /etc/profile
命令验证jdk安装:java -version
kafka安装
上传kafka文件:kafka_2.11-1.0.0.tgz
解压文件到/usr/local/目录下:tar zxvf kafka_2.11-1.0.0.tgz -C /usr/local/
进入kafka目录:cd /usr/local/kafka_2.11-1.0.0/
下列所有路径的相对路径都是/usr/local/kafka_2.11-1.0.0/
配置文件:/config/server.properties下列配置项必须配置:
log.dirs=/usr/local/kafka_2.11-1.0.0/data;日志文件路径,必须配置,同台机器上不同的服务路径必须不一样,否则数据会被覆盖,路径必须存在,手动创建。/usr/local/kafka_2.11-1.0.0/logs文件为kafka运行日志文件,
num.partitions=40 默认分区数
offsets.topic.replication.factor=3 生产环境必须这么配置,解决内部管理偏移量的topic备份数
transaction.state.log.replication.factor=3 生产环境必须这么配置
transaction.state.log.min.isr=3 生产环境必须这么配置
增加:
auto.create.topics.enable=true 自动创建topic
default.replication.factor=3 默认备份数
首先启动Zookeeper:
nohup bin/zookeeper-server-start.sh config/zookeeper.properties>/dev/null 2>&1 &
启动kafka
nohup bin/kafka-server-start.sh config/server.properties>/dev/null 2>&1 &
不同机器kafka集群安装,这里以三台为例,ip分别是:192.169.0.4,192.169.0.5,192.169.0.6
最主要是Zookeeper集群和kafka集群的搭建。
Zookeeper集群:最主要的配置文件是:config/zookeeper.properties
三台机器的配置文件都是一样的:
dataLogDir=/usr/local/kafka_2.11-1.0.0/zookeeper
dataDir=/usr/local/kafka_2.11-1.0.0/zookeeper
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
server.1=192.169.0.4:2888:3888
server.2=192.169.0.5:2888:3888
server.3=192.169.0.6:2888:3888
标志红色部分以实际情况为主,路径需要存在,因为Zookeeper启动不会创建路径。在对应路径下创建文件myid。把对应ip的编号写进入。比如192.169.0.4机器下目录/usr/local/kafka_2.11-1.0.0/zookeeper下的myid,文件内容是1.
依次启动三台机器的Zookeeper,第一台机器启动的时候会不停的报错,连接不上另外两台机器,启动另外两台就好。Zookeeper的机器就算搭建成功了。
kafka集群:最主要的配置文件:config/server.properties
broker.id=1;默认是0,集群中,每台机器这个整形数值不能重复,可以依次为1、2、3
zookeeper.connect=192.169.0.4:2181,192.169.0.5:2181,192.169.0.6:2181;对应Zookeeper的集群ip,端口,逗号分隔。
依次启动kafka即可。
集群搭建ok之后,使用文档后面的常用命令测试一下。
kafka-manager安装
上传kafka-manager文件:kafka-manager-1.3.3.7.zip(这个文件是编译好的,官网上的文件都是需要编译的)
解压文件到/usr/local/目录下:unzip kafka-manager-1.3.3.7.zip -d /usr/local/
进入目录:cd /usr/local/ kafka-manager-1.3.3.7
最主要的配置文件:conf/application.conf
kafka-manager.zkhosts="192.169.0.4:2181,192.169.0.5:2181,192.169.0.6:2181";配置Zookeeper集群信息即可
启动命令:nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080
最后一个参数是指定端口,不加的话,默认端口是9000.
访问:
可以看到kafka-manager管理界面
kafka-manager编译
kafka-manager编译最好在一个有网络环境的机器上编译,下载路径:
下载之后,解压。./sbt clean dist
第一次编译会比较痛苦,时间比较久,容易出错,多执行几次就好。
编译要很久,大概半半天时间。
相对路径target/universal/下有kafka-manager-1.3.3.16.zip对应的编译完成的包
常用命令:
创建topic test
./bin/kafka-topics.sh --create --zookeeper 192.169.0.4:2181,192.169.0.5:2181,192.169.0.6:2181 --replication-factor 3 --partitions 3 --topic test
列出已创建的topic列表
./bin/kafka-topics.sh --list --zookeeper localhost:2181
模拟客户端去发送消息
./bin/kafka-console-producer.sh --broker-list 192.169.0.4:9092,192.169.0.5:9092,192.169.0.6:9092 --topic test
模拟客户端去接受消息
./bin/kafka-console-consumer.sh --zookeeper 192.169.0.4:2181,192.169.0.5:2181,192.169.0.6:2181 --from-beginning --topic test
指定客户端组消费消息
./bin/kafka-console-consumer.sh --zookeeper 192.169.0.4:2181,192.169.0.5:2181,192.169.0.6:2181 --group xiaoxiao --topic test
查看指定的主题
./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
查看所有topic
./bin/kafka-topics.sh --zookeeper 192.169.0.4:2181,192.169.0.5:2181,192.169.0.6:2181 --list
删除指定topic
./bin/kafka-topics.sh --delete --zookeeper 192.169.0.4:2181,192.169.0.5:2181,192.169.0.6:2181 --topic test