zoukankan      html  css  js  c++  java
  • 本地Consumer和Producer无法使用远程Kafka服务器的处理办法

    之前连接公司的的Kafka服务器一直没有没有问题,最近在自己的服务器上装了一个Kafka做学习使用,安装完成后一直无法使用,处理过程可谓上一波三折,下面分享一下我的处理经验,以便帮助有需要的朋友,少走弯路。

    1、版本问题:

    在apache官网上,有两个kafka0.10的版本一个是scala2.11的一个是2.10的,据scala官网描述,scala2.11主要在jdk6以上使用,scala2.10在主要在java5上使用,所以我们可以根据自己机器的java环境来选择正确的kafka安装使用,在客户端方面,版本最好和服务器保持一直,以免出现不必要的麻烦。

    2、防火墙问题:

    首先确保kafak服务器的端口在开着,默认端口是9092,可以直接使用service iptables stop关闭防火墙,觉得太暴力的可以只打开对应的端口即可:

    打开方式1:vi /etc/sysconfig/iptables   在结尾添加:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9092-j ACCEPT

    打开方式2:kafka的网络协议是基于TCP的二进制网络协议,所以执行下列命令即可

    iptables -I INPUT -p tcp --dport 9092 -j ACCEPT  && service iptables save &&service iptables restart

    3、kafka服务器配置问题,咱们先看一段kafka的配置描述

    # Hostname and port the broker will advertise to producers and consumers. If not set, 
    # it uses the value for "listeners" if configured.  Otherwise, it will use the value
    # returned from java.net.InetAddress.getCanonicalHostName().

    在我们使用默认配置时hostname和advertise.host.name是被注释掉的,所以系统会调用InetAddress.getCanonicalHostName()方法获取,这个值一般是localhost,如果kafka的消费者或者生产者那到这个localhost只能去本机kafka服务器消费或生产消息,所以当我们在本机使用时没问题,而一旦连的是远程的kafka服务器,使用localhost去消费本机的消息,这肯定是不可以的,感觉kafka这样设计又一点不太方便。所以我们在使用远程kafka服务器时应该把../kafka/config/service.properties 中的advertised.host.name=<远程kafka服务器的ip地址>。

    在server.properties中添加advertised.host.name=192.168.17.128【远程kafka服务器的ip地址】

    4、Failed to send messages after 3 tries

    我没遇到这个问题,我在一个blog中看到,把链接贴上,帮助有需要的朋友

    http://blog.csdn.net/uniquechao/article/details/20073953

  • 相关阅读:
    【新阁教育】能不能让你的电脑变成一台PLC?
    【新阁教育】针对零基础小白的SQL2012安装攻略完整版
    【新阁教育】穷学上位机系列——搭建STEP7仿真环境
    【新阁教育】做了这么久,才知道什么是上位机
    【新阁教育】S7.NET+Log4Net+SQLSugar+MySQL搭建Iot平台
    【新阁教育】基于ModbusTCP实现西门子1200PLC定位控制案例
    C#数据结构-二叉树-链式存储结构
    C#数据结构-二叉树-顺序存储结构
    DataTable 将一列转为List
    字符串匹配—KMP算法
  • 原文地址:https://www.cnblogs.com/xiaoqiang-waer/p/8575491.html
Copyright © 2011-2022 走看看