故障描述:
以前上传图片以及文件是通过nginx的配置来上传和下载图片,文件存储用的是Hadoop作为文件存储,昨晚上仿真的过程中,上传图片过程中无法连接Hadoop,发现问题很多:处理完连接报错后,还是不能上传图片,各种报错。。。。
处理思路:
一般的故障信息都是日志来入手的。从上传图片的整个过程:从前端nginx代理后接入tomcat上传图片的实例的日志报错信息排除
之前是Hadoop的配置中hdfs的端口修改了9100,但是tomcat的上传文件的实例中application.properties的配置文件的地址配置有问题,这些是排查故障前发生的问题,修改后还是有问题,然后继续如下的排查!
nginx的配置正常的前提下报错:
实际日志报错信息:
首先打开nginx的日志错误日志报的是连接tomcat超时:
[root@web01 server]# tail -100f /webserver/nginx/nginx-upload/logs/error.log
2016/07/10 11:26:51 [error] 18444#0: *17007 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 123.125.138.174, server: online.898china.com, request: "POST /innospace-file-server/file/upload.json?x=100&y=100&w=200&h=200&userId=87 HTTP/1.1", upstream:
发现nginx连接tomcat超时,此时排查到上传文件的tomcat实例有问题,直接定位到innospace-file-server的日志在看错误信息:
[root@web01 server]# tail -1000f /webserver/tomcat/innospace-file-server/logs/catalina.out
[ERROR] 2016-07-10 11:13:49,958 com.inno.innospace.utils.HDFSUtil - 上传文件失败
java.io.IOException: Bad connect ack with firstBadLink as 10.24.198.117:50010
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1460) ~[hadoop-hdfs-2.6.3.jar:?]
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1361) ~[hadoop-hdfs-2.6.3.jar:?]
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:588) ~[hadoop-hdfs-2.6.3.jar:?]
到这里还真不知道哪里出现的问题,最好只好百度一下:
发现与防火墙有关,数据在Hadoop上存储的是在从slave的节点上,连接Hadoop主的过程需要50010端口连接,最终在防火墙开启50010端口
iptables -A INPUT -p tcp --dport 50010 -j ACCEPT
开启之后问题解决了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。