nginx安装插件直接对接kafka集群

安装环境:
        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;
	            }
		    #这是转发另外一个topic,可以不设置
		    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"

猜你喜欢

转载自my.oschina.net/hehongbo/blog/1822720