安装环境:
centos 6.5 64位
所需软件版本:
jdk1.8.0_171
nginx-1.12.2.tar.gz
kafka_2.11-0.10.2.1.tgz
zookeeper-3.4.5.tar.gz
scala-2.11.4.tgz
所需服务器:4台(三台安装scala、zookeeper和kafka,一台安装nginx)
【A:部署kafka集群】
1.安装jdk
yum install java-1.8.0-openjdk* -y
2.安装scala
tar -zxvf scala-2.11.4.tgz -C /usr/local/src
3.进入Scala解压目录,进行重命名
cd /usr/local/src
mv scala-2.11.4 scala
1.安装zookeeper
tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/src
2.进入到zk的配置文件目录下,重命名文件夹并修改zookeeper配置文件
cd /usr/local/src
mv zookeeper-3.4.5 zk
cd zk
mv zoo_sample.cfg zoo.cfg
3.更改zoo.cfg两个地方:
dataDir=/usr/local/src/zk/data
文件最后新增:
server.0=172.27.16.13:2888:3888
server.1=172.27.16.12:2888:3888
server.2=172.27.16.11:2888:3888
4.返回到zk目录下,新建data目录并进入
mkdir data
cd data/
5.新建myid文件
vi myid
6.设置id,与server.0一样,这里第一台设置为0(3台机器,按0、1、2依次分配)
7.在另外两台机器上重复以上步骤,唯一不同的是myid文件依次设置不同的id
1.安装kafka上传kafka安装包并解压
tar -zxvf kafka_2.11-0.10.2.1.tgz -C /usr/local/src
2.更改文件夹名称
mv kafka_2.11-0.10.2.1 kafka
3.进入到kafka安装包config目录修改配置文件
cd kafka/config/
vi server.properties
在这个版本中主要更改3个地方
broker.id=0(3台机器,按0、1、2依次分配)
delete.topic.enable=true(命令行删除topic【真正删除还需要在/tmp/目录下删除kafka-logs文件夹】)
advertised.listeners=PLAINTEXT://172.27.16.12:9092(设置为本机的ip)
zookeeper.connect=172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181(zookeeper地址)
4.在另外两台机器上重复以上步骤,唯一不同的是broker.id依次设置不同的id
【启动kafka集群】
1.进入到kafka安装目录
cd /usr/local/src/kafka/bin
2.启动kafka
./kafka-server-start.sh -daemon /usr/local/src/kafka/config/server.properties
3.创建topic
./kafka-topics.sh --create --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --replication-factor 1 --partitions 1 --topic track
./kafka-topics.sh --create --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --replication-factor 1 --partitions 1 --topic user
4.查看topic描述
./kafka-topics.sh --describe --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --topic track
./kafka-topics.sh --describe --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --topic user
5.查看所有topic
./kafka-topics.sh --list --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181
6.删除topic【真正删除还需要在/tmp/目录下删除kafka-logs文件夹,然后重启kafka】
./kafka-topics.sh --delete --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --topic track
7.关闭kafka服务
./kafka-server-stop.sh
8.创建一个消费者
./kafka-console-consumer.sh --bootstrap-server 172.27.16.13:9092,172.27.16.12:9092,172.27.16.11:9092 --topic track --from-beginning
9.创建一个生产者
./kafka-console-producer.sh --broker-list 172.27.16.13:9092,172.27.16.12:9092,172.27.16.11:9092 --topic track
10.此时在生产者窗口下输入信息,消费者即可收到消息
补充:
启动一个命令行的生产者
./kafka-console-producer.sh --broker-list 172.27.16.13:9092,172.27.16.12:9092,172.27.16.11:9092 --topic xiaoniu
启动一个命令行的消费者
./kafka-console-consumer.sh --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --topic my-topic --from-beginning
消费者连接到borker的地址【这个和命令行消费者不同】
./kafka-console-consumer.sh --bootstrap-server 172.27.16.13:9092,172.27.16.12:9092,172.27.16.11:9092 --topic xiaoniu --from-beginning
至此kafka集群安装完毕
【B:安装nginx及kafka插件】
1.上传nginx安装包
2.解压nginx
tar -zxvf nginx-1.12.2.tar.gz -C /usr/local/src/
3.安装git
yum install -y git
4.切换到/usr/local/src目录,然后将kafka的c客户端源码clone到本地
cd /usr/local/src
git clone https://github.com/edenhill/librdkafka
5.进入到librdkafka,然后进行编译
cd librdkafka
yum install -y gcc gcc-c++ pcre-devel zlib-devel
./configure
make && make install
6.安装nginx整合kafka的插件,进入到/usr/local/src,clone nginx整合kafka的源码
cd /usr/local/src
git clone https://github.com/brg-liuwei/ngx_kafka_module
7.进入到nginx的源码包目录下(编译nginx,然后将将插件同时编译)
cd /usr/local/src/nginx-1.12.2
./configure --add-module=/usr/local/src/ngx_kafka_module/
make
make install
8.修改nginx的配置文件
主要修改两个地方:
kafka;
kafka_broker_list 118.25.213.188:9092 118.24.12.122:9092 118.25.213.36:9092;
以及
location = /kafka/track {
kafka_topic track;
}
location = /kafka/user {
kafka_topic user;
}
9.启动nginx
sbin/nginx
10.查看nginx进程
ps -ef | grep nginx
netstat -anpt | grep nginx
【启动nginx,报错,找不到kafka.so.1的文件】
error while loading shared libraries: librdkafka.so.1: cannot open shared object file: No such file or directory
解决办法:加载so库
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
11.启动成功后,向kafka集群发送消息测试
curl localhost/kafka/track -d "message send to kafka track topic"
【补充以及报错解决:】
kafka创建topic报错解决:
创建topic的paration大于可用的boker:
创建topic 指定partitions 为5 而 borker只有一个
./bin/kafka-topics.sh -zookeeper idc007128:2181,idc007124:2181,idc007123:2181 -topic test -replication-factor 2 -partitions 5 -create
Error while executing topic command replication factor: 2 larger than available brokers: 1
解决:
-replication-factor 1 副本数为1
./bin/kafka-topics.sh -zookeeper idc007128:2181,idc007124:2181,idc007123:2181 -topic test -replication-factor 1 -partitions 1 -create
Created topic "test".
启动kafka报内存不足的错误
修改kafka-server-start.sh启动参数
export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
转载请注明:SuperIT » nginx安装ngx_kafka_module插件直接对接kafka集群