晚上变更 怎么都推不过去,蛋疼,睡饱后加了个hosts没想到好了,然后搜了一下,大概是如下的原因
转自 https://www.cnblogs.com/linlianhuan/p/9258061.html
问题反馈: xx现场测试环境下,整个平台的数据,除了原始数据模块,其他模块正常运行。相同版本的包,在线上环境上原始数据的订阅是正常的,但是测试环境没有,查看所有相关的日志,均没有报异常,且日志中有正常显示已经把数据发送到kafka。但是从kafka的日志里查,没有收到转发过来的数据。
 
这里梳理一下这个 原始数据 的整个流程:
upload 转发 原始数据到 kafka,用的topic为 OREGINAL_DATA ,   storm计算启动一个叫realtime的拓扑,消费 OREGINAL_DATA 上的数据,再把处理后的数据转发到 kafka, 用的topic为  OREGINAL_DATA_FORWARD。
 
排查过程:
1. 查看 upload日志,确定日志中有正常发数据到kafka ,且显示成功了   -- 这个日志有一个很大的误导作用
2. 通过 kafka 的消息积压命令查看(如下),确定是没有新的信息生产(logSize没有变化,通过kafka的 log.dirs 也确定该topic没有 生产到数据)
        kafka-consumer-offset-checker.sh   --topic OREGINAL_DATA --zookeeper zkIP:2181 --group GROUP_OREGINAL_DATA
3. 通过第2步的排除,怀疑 upload机器与kafka集群不通,用ping命令,确定机器是通的,查看 iptables ,没有信息, 用telnet   kafkaIP   9092 ,不通,提供没有路由(no route to host),怀疑是hosts文件配置问题,确认有正常配置。 把 kafka上的防火墙关了,telnet 通了(这里还要恶补一下防火墙的知识,另外,这个是测试环境,所以可以直接关)。
4. 发数据,重复2,问题还是没有解决。通过修改程序中 topic为 OREGINAL_DATA_NEW 确定 程序是否与 kafka集群通。发现topic有正常创建,但是就是没有消息生产出来。
5. 在upload机器上安装 kafka,通过运行kafka自带的producer 行(命令如下),给新建的topic发数据,发现有报错:
        kafka-console-producer.sh --broker-list kafkaIP:9092 --topic  OREGINAL_DATA_NEW
    报错信息为: org.apache.kafka.common.errors.TimeoutException,通过网上搜索,定位原因是发布到zookeeper的advertised.host.name如果没有设置,默认取java.net.InetAddress.getCanonicalHostName().值,被用于生产端和消费端。因此外部网络或者未配置hostname映射的机器访问kafka集群时就会有网络问题了。
 
6. 配置 kafka 集群的主机名到 upload 机器的hosts 文件中, 发数据,问题解决。
 
这里注明一下,upload表本来是有配置 kafka集群的,但是用的是别名,且 公共配置文件上相关集群机器的配置信息也是用的别名,当时测试用的命令,也是别名。
 
 
关于测试这边的疏漏问题总结:
以前测试都是直接在公共配置文件用的主机名测试(这里用的主机别名的方式还没遇到过),另外,在kafka集群不通的情况下,upload日志居然没有报一点异常,还显示成功,这里对于 异常 情况的测试用例设置有些欠缺,后期要专门整理对程序的异常处理情况做测试,来验证程序的健壮性及自我恢复能力。
一: 通过控制防火墙来模拟网络异常的情况
    1.  在环境正常情况下,把 防火墙打开,确定程序是否正常,日志有没有对应的异常信息协助定位问题
    2.  关闭防火墙,确定程序能否自恢复,日志是否正常
二:要把各种基础服务分开部署,这个涉及到机器的申请,不然测试环境所有服务都部署在一台机器 或者几台机器上,所有网络都是通的,完全无法模拟这种测试环境
 

推送kafka消息失败的更多相关文章

  1. C#微信公众号开发系列教程五(接收事件推送与消息排重)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  2. APNS推送通知消息负载内容和本地格式字符串

    来源:http://hi.baidu.com/tangly888/blog/item/62948520121870559358074f.html 翻译苹果文档 地址:  翻译:tangly http: ...

  3. 微信开发之获取openid及推送模板消息

    有很多的朋友再问我怎么获取code,openid之类的问题,在这里我就给大家分享一下. 在做微信支付是需要获取openid的,推送模板消息也是需要openid包括其他一些功能分享等也都是需要的,ope ...

  4. C#微信接口之推送模板消息功能示例

    本文实例讲述了C#微信接口之推送模板消息功能.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...

  5. FineReport如何手动推送APP消息

    在报表填报成功后,发送消息至APP会提示数据已更新.再次期间用户需要有查看该模板的权限,如果没有的话,则无法接受到提示信息.那么在FineReport移动端中,如何手动推送APP消息呢? 具体用法 在 ...

  6. .net平台推送ios消息

    1,ios应用程序中允许向客户推送消息 2,需要有苹果的证书以及密码(怎么获取,网上搜一下,需要交费的) 3,iphone手机一部,安装了该ios应用程序 4,.net 项目中引用PushSharp. ...

  7. 转:C#微信公众号开发之接收事件推送与消息排重的方法

    本文实例讲述了C#微信公众号开发之接收事件推送与消息排重的方法.分享给大家供大家参考.具体分析如下: 微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次.这样的话,问题就来了.有这 ...

  8. 微信公众号实现无限制推送模板消息!可向指定openID群发

    微信认证的服务号才有推送模板消息接口所以本文需要在认证服务号的情况下学习 以上就是模板消息,只有文字和跳转链接,没有封面图.在服务号的后台添加功能插件-模板消息即可. 模板消息,都是在后台选择一个群发 ...

  9. phonegap 使用极光推送实现消息推送

    最近一直在研究各种推送,ios的由于是apns,比较容易实现,但是andriod的就比较麻烦.后来看了很多解决方案,gcm明显是不行的,其他的方案更是一头雾水,而且需要做第二次开发,太麻烦,后来就选择 ...

随机推荐

  1. S2-052

    前言 S2-052的RCE漏洞和以前的有些不同,不再是ognl表达式注入了,而是xml反序列化漏洞导致的RCE(另外还有S2-055漏洞是fastjson的反序列化漏洞).我复现的时候遇到一个坑,导致 ...

  2. day12-python之深灰魔法

    #######################################灰魔法: list类中提供的方法   列表####################################### ...

  3. MUI底部导航栏切换效果

    首先是html代码: <nav class="mui-bar mui-bar-tab"> <a href="view/templates/home/ho ...

  4. fcrackzip破解zip密码

    kail系统里有fcrackzip工具,可以对设置密码的压缩包zip直接进行破解,不用字典,直接进行暴力破解. fcrackzip 所用到的参数介绍如下:-b 表示暴力破解-c 表示暴力破解中使用的字 ...

  5. Windows服务 + Quartz.NET

    服务基础 安装管理员打开cmd cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 InstallUtil.exe Path_WinSvc.exe 或者 ...

  6. ln -s vs mount --bind

    First ,Symlinks and bind mounts are a whole different ballgame. ln -s you create a symbolic link,whi ...

  7. tiny4412 串口驱动分析九 --- shell终端

    作者:彭东林 邮箱:pengdonglin137@163.com 开发板:tiny4412ADK+S700 4GB Flash 主机:Wind7 64位 虚拟机:Vmware+Ubuntu12_04 ...

  8. Linux高级网络设置——给网卡绑定多个IP

    假设这样一种场景: 某运营商的Linux服务器上装配了2家互联网公司的Web服务,每个Web服务分配了一个公网IP地址.但是运营商的Linux服务器只有一块网卡.这就需要在一块网卡上绑定多个IP地址. ...

  9. 【JavaWeb】通过邮件找回密码

    前言 本文将介绍忘记密码时通过发送重置密码邮件找回密码的实现思路.整个实现过程中最重要的就是以下三点: 如何发送邮件到用户指定邮箱 邮件中的重置密码链接构成是怎么样的 验证重置密码链接的合法性(是否过 ...

  10. linux下setsockopt函数的使用

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO ...