本帖最后由 pig2 于 2017-1-25 10:12 编辑
问题导读
1.如何测试端口是否是通的?
2.端口是否被暂用?
3.端口是否被打开?
在搭建集群的过程中,无论是hadoop、hbase、spark、hive,zookeeper、storm集群等,我们经常碰到访问被拒绝,总体来说是网络的问题。网络的问题又分为很多种:网络配置错误,防火墙,selinux,端口问题。
其它问题我们都是很好判断的,端口对于不是很熟悉Linux的人来说,还是有难度的。这里总结下端口。
1.如何测试端口是否是通的
1.telnet的含义:
远程登录
2.使用telnet判断
比如我们判断yarn的端口是否是通的。
[mw_shl_code=bash,true]telnet master 8032
Trying 192.168.1.10...
Connected to master.
Escape character is '^]'.
[/mw_shl_code]
如上图是通的。
如果是
[mw_shl_code=bash,true]Connection refused[/mw_shl_code]
则是不通的。这个可能原因,是集群没启动。
如果是因为防火墙的原因则是
[mw_shl_code=bash,true]Trying 192.168.1.10...
telnet: connect to address 192.168.1.10: No route to host
[/mw_shl_code]
2.端口是否被暂用
一个进程可以有多个端口,一个端口只能被一个进程暂用。查看端口被进程暂用的方法有很多。这里只说比较实用的。
1.使用lsof
lsof 的含义:sof(list open files)是一个列出当前系统打开文件的工具。
lsof -i:端口号查看某个端口是否被占用
[mw_shl_code=bash,true]lsof -i:8032
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 3493 aboutyun 220u IPv6 32517 0t0 TCP master:pro-ed (LISTEN)
[/mw_shl_code]
2.使用netstat
netstat的含义:Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
使用netstat -anp|grep 8032
[mw_shl_code=bash,true]sudo netstat -anp|grep 8032
tcp6 0 0 192.168.1.10:8032 :::* LISTEN 3493/java[/mw_shl_code]
LISTEN 表示侦听来自远方TCP端口的连接请求
3.端口是否被打开
端口的打开与关闭以及禁用端口之间的区别
如果某个进程使用了端口,那么就打开了该端口,杀掉进程,端口就关闭了。
同时我们想不用这个端口,也就是禁用端口,则可以通过防火墙
[mw_shl_code=bash,true]"sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"
"sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP" [/mw_shl_code]
|