当前位置:   article > 正文

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

nginx kafka转发
  1. 安装环境:
  2. centos 6.5 64
  3. 所需软件版本:
  4. jdk1.8.0_171
  5. nginx-1.12.2.tar.gz
  6. kafka_2.11-0.10.2.1.tgz
  7. zookeeper-3.4.5.tar.gz
  8. scala-2.11.4.tgz
  9. 所需服务器:4台(三台安装scala、zookeeper和kafka,一台安装nginx)
  10. 【A:部署kafka集群】
  11. 1.安装jdk
  12. yum install java-1.8.0-openjdk* -y
  13. 2.安装scala
  14. tar -zxvf scala-2.11.4.tgz -C /usr/local/src
  15. 3.进入Scala解压目录,进行重命名
  16. cd /usr/local/src
  17. mv scala-2.11.4 scala
  18. 1.安装zookeeper
  19. tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/src
  20. 2.进入到zk的配置文件目录下,重命名文件夹并修改zookeeper配置文件
  21. cd /usr/local/src
  22. mv zookeeper-3.4.5 zk
  23. cd zk
  24. mv zoo_sample.cfg zoo.cfg
  25. 3.更改zoo.cfg两个地方:
  26. dataDir=/usr/local/src/zk/data
  27. 文件最后新增:
  28. server.0=172.27.16.13:2888:3888
  29. server.1=172.27.16.12:2888:3888
  30. server.2=172.27.16.11:2888:3888
  31. 4.返回到zk目录下,新建data目录并进入
  32. mkdir data
  33. cd data/
  34. 5.新建myid文件
  35. vi myid
  36. 6.设置id,与server.0一样,这里第一台设置为03台机器,按012依次分配)
  37. 7.在另外两台机器上重复以上步骤,唯一不同的是myid文件依次设置不同的id
  38. 1.安装kafka上传kafka安装包并解压
  39. tar -zxvf kafka_2.11-0.10.2.1.tgz -C /usr/local/src
  40. 2.更改文件夹名称
  41. mv kafka_2.11-0.10.2.1 kafka
  42. 3.进入到kafka安装包config目录修改配置文件
  43. cd kafka/config/
  44. vi server.properties
  45. 在这个版本中主要更改3个地方
  46. broker.id=03台机器,按012依次分配)
  47. delete.topic.enable=true(命令行删除topic【真正删除还需要在/tmp/目录下删除kafka-logs文件夹】)
  48. advertised.listeners=PLAINTEXT://172.27.16.12:9092(设置为本机的ip)
  49. zookeeper.connect=172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181(zookeeper地址)
  50. 4.在另外两台机器上重复以上步骤,唯一不同的是broker.id依次设置不同的id
  51. 【启动kafka集群】
  52. 1.进入到kafka安装目录
  53. cd /usr/local/src/kafka/bin
  54. 2.启动kafka
  55. ./kafka-server-start.sh -daemon /usr/local/src/kafka/config/server.properties
  56. 3.创建topic
  57. ./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
  58. ./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
  59. 4.查看topic描述
  60. ./kafka-topics.sh --describe --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --topic track
  61. ./kafka-topics.sh --describe --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --topic user
  62. 5.查看所有topic
  63. ./kafka-topics.sh --list --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181
  64. 6.删除topic【真正删除还需要在/tmp/目录下删除kafka-logs文件夹,然后重启kafka】
  65. ./kafka-topics.sh --delete --zookeeper 172.27.16.13:2181,172.27.16.12:2181,172.27.16.11:2181 --topic track
  66. 7.关闭kafka服务
  67. ./kafka-server-stop.sh
  68. 8.创建一个消费者
  69. ./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
  70. 9.创建一个生产者
  71. ./kafka-console-producer.sh --broker-list 172.27.16.13:9092,172.27.16.12:9092,172.27.16.11:9092 --topic track
  72. 10.此时在生产者窗口下输入信息,消费者即可收到消息
  73. 补充:
  74. 启动一个命令行的生产者
  75. ./kafka-console-producer.sh --broker-list 172.27.16.13:9092,172.27.16.12:9092,172.27.16.11:9092 --topic xiaoniu
  76. 启动一个命令行的消费者
  77. ./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
  78. 消费者连接到borker的地址【这个和命令行消费者不同】
  79. ./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
  80. 至此kafka集群安装完毕
  81. 【B:安装nginx及kafka插件】
  82. 1.上传nginx安装包
  83. 2.解压nginx
  84. tar -zxvf nginx-1.12.2.tar.gz -C /usr/local/src/
  85. 3.安装git
  86. yum install -y git
  87. 4.切换到/usr/local/src目录,然后将kafka的c客户端源码clone到本地
  88. cd /usr/local/src
  89. git clone https://github.com/edenhill/librdkafka
  90. 5.进入到librdkafka,然后进行编译
  91. cd librdkafka
  92. yum install -y gcc gcc-c++ pcre-devel zlib-devel
  93. ./configure
  94. make && make install
  95. 6.安装nginx整合kafka的插件,进入到/usr/local/src,clone nginx整合kafka的源码
  96. cd /usr/local/src
  97. git clone https://github.com/brg-liuwei/ngx_kafka_module
  98. 7.进入到nginx的源码包目录下(编译nginx,然后将将插件同时编译)
  99. cd /usr/local/src/nginx-1.12.2
  100. ./configure --add-module=/usr/local/src/ngx_kafka_module/
  101. make
  102. make install
  103. 8.修改nginx的配置文件
  104. 主要修改两个地方:
  105. kafka;
  106. kafka_broker_list 118.25.213.188:9092 118.24.12.122:9092 118.25.213.36:9092;
  107. 以及
  108. location = /kafka/track {
  109. kafka_topic track;
  110. }
  111. #这是转发另外一个topic,可以不设置
  112. location = /kafka/user {
  113. kafka_topic user;
  114. }
  115. 9.启动nginx
  116. sbin/nginx
  117. 10.查看nginx进程
  118. ps -ef | grep nginx
  119. netstat -anpt | grep nginx
  120. 【启动nginx,报错,找不到kafka.so.1的文件】
  121. error while loading shared libraries: librdkafka.so.1: cannot open shared object file: No such file or directory
  122. 解决办法:加载so库
  123. echo "/usr/local/lib" >> /etc/ld.so.conf
  124. ldconfig
  125. 11.启动成功后,向kafka集群发送消息测试
  126. curl localhost/kafka/track -d "message send to kafka track topic"
  127. 【补充以及报错解决:】
  128. kafka创建topic报错解决:
  129. 创建topic的paration大于可用的boker:
  130. 创建topic 指定partitions 为5 而 borker只有一个
  131. ./bin/kafka-topics.sh -zookeeper idc007128:2181,idc007124:2181,idc007123:2181 -topic test -replication-factor 2 -partitions 5 -create
  132. ##问题
  133. Error while executing topic command replication factor: 2 larger than available brokers: 1
  134. 解决:
  135. -replication-factor 1 副本数为1
  136. ./bin/kafka-topics.sh -zookeeper idc007128:2181,idc007124:2181,idc007123:2181 -topic test -replication-factor 1 -partitions 1 -create
  137. Created topic "test".
  138. 启动kafka报内存不足的错误
  139. 修改kafka-server-start.sh启动参数
  140. export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"

转载于:https://my.oschina.net/hehongbo/blog/1822720

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/192717
推荐阅读
相关标签
  

闽ICP备14008679号