Hadoop多网卡绑定
Hadoop默认配置NameNode 运行 HDFS 协议的端口8020绑定的主机接口domain段均为0.0.0.0,表示可通过任一块网卡访问该端口。对于双网卡服务器(一个内网,一个外网),这就意味着公网上所有的用户均可访问Hadoop配置的HDFS,这样存在一个极大的安全问题。这样,我们就修改了配置domain端替换成内网IP,这就意味着只有内网的网卡可访问HDFS。安全问题是解决了,但有一个问题:Hadoop集群是租用的阿里云服务器,和我们公司的机器不在一个局域网内,也没有VPN连接,造成本地开发MapReduce的时候无法进行本地进行测试。下面就该问题进行概述解决。
网络环境介绍
5台阿里云ECS服务器,每台服务器都有两块网卡,安装NameNode节点的服务器为master,其网卡信息配置为:eth0为内网卡(10.10.12.9),eth1为外网卡(80.24.158.23)。HDFS服务端口为8020,使用命令:
#netstat -nltp | grep 8020
tcp 0 0 10.10.12.9:8020 0.0.0.0:* LISTEN 5494/java
这里绑定的是内网卡的IP地址,我们要通过外网卡去访问该端口。这里使用iptables进行相关配置转发到该内网地址端口上。下面介绍一下iptables的使用和原理。
iptables介绍
-
Netfilter与Iptables
-
iptables四表五链
-
iptables数据流向
详细操作配置
-
配置允许路由转发
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 # 默认值为0,修改为1,表示允许转发
#sysctl -p -
关联包通过配置
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-
转发路由配置
#iptables -t nat -A PREROUTING -d 80.24.158.23 -p tcp --dport 8020 -j DNAT --to-destination 10.10.12.9:8020
-
查看配置
#iptables -t nat --list -n
参考文章链接
- http://coolnull.com/3322.html
- https://my.oschina.net/javagg/blog/3239
- http://www.cnblogs.com/zejin2008/p/5919550.html