通过代理服务访问 HDFS 集群

背景

在 HDFS 使用过程中,有时会需要一个类似代理的机制,即:通过一台或多台代理服务器,来代理某一批机器的 HDFS 访问。需要注意的是,大部分情况下,代理服务器只需要代理 NameNode 流量即可,不需要代理 DataNode 流量,因为认证、鉴权等关键操作只涉及到 NameNode。

方案一: iptables 方案

linux 的 iptables 是一个非常强大的工具,在本场景下,混合使用 iptables 的 SNAT 和 DNAT 功能就可以满足需求,方案概览如下:


前提:

  1. 需要确保所有内部机器都能够连接到代理服务器, 且代理服务器能够连接到所有 HDFS NameNode。
  2. 代理服务器上不需要安装 HDFS 客户端,只需要做单纯的网络代理即可。

要点:

  1. 首先,在内部机器上,使用 iptables 对 HDFS NameNode 流量配置 DNAT,destination 为代理服务器。
  2. 其次,在代理服务器上,使用 iptables 对 HDFS NameNode 流量组合配置 DNAT + SNAT,作为路由器使用。

优点:

  1. 部署简单,不需要引入任何额外的软件,仅仅使用 iptables 就可以满足需求。
  2. iptables 实际上是操作了 linux 内核中的 netfilter 组件,netfilter 组件整体运行在内核态,效率很高。

缺点:

  1. 配置复杂,在每个内部机器上,都需要对所有 NameNode 配置 DNAT(如果有多个目标集群的话)。
  2. 同样,在代理服务器上,也需要对所有 NameNode 组合配置 DNAT + SNAT.
  3. 不过,iptable 配置可以通过脚本来批量完成,因此问题不大。

详细步骤

以下面这个场景为例:

  1. HDFS 集群为 ns1,三个 NameNode 分别为:172.16.1.1,172.16.1.2,172.16.1.3
  2. 代理服务器为:172.31.100.100
  3. 内部机器为:192.168.1.5
配置步骤
  1. 在内部机器 192.168.1.5 上,针对三个 NameNode 分别配置 DNAT,destination 统一为代理服务器,如果存在多个代理服务器,则可以任选一个。注意这里使用了三个中转端口(50000、50001、50002):
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A OUTPUT -d 172.16.1.1 -p tcp --dport 9000 -j DNAT --to-destination 172.31.100.100:50000
iptables -t nat -A OUTPUT -d 172.16.1.2 -p tcp --dport 9000 -j DNAT --to-destination 172.31.100.100:50001
iptables -t nat -A OUTPUT -d 172.16.1.3 -p tcp --dport 9000 -j DNAT --to-destination 172.31.100.100:50002
  1. 在代理服务器 172.31.100.100 上,针对三个 NameNode 组合配置 DNAT + SNAT,作为路由器使用:
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp --dport 50000 -j DNAT --to-destination 172.16.1.1:9000
iptables -t nat -A POSTROUTING -d 172.16.1.1 -p tcp --dport 9000 -j SNAT --to 172.31.100.100

iptables -t nat -A PREROUTING -p tcp --dport 50001 -j DNAT --to-destination 172.16.1.2:9000
iptables -t nat -A POSTROUTING -d 172.16.1.2 -p tcp --dport 9000 -j SNAT --to 172.31.100.100

iptables -t nat -A PREROUTING -p tcp --dport 50002 -j DNAT --to-destination 172.16.1.3:9000
iptables -t nat -A POSTROUTING -d 172.16.1.3 -p tcp --dport 9000 -j SNAT --to 172.31.100.100

其它

  1. 通过代理服务器访问 HDFS NameNode 时,NameNode 的审计日志中将无法记录准确的客户端 IP 地址,而是统一记录为代理服务器的 IP 地址。
  2. 可以设置多个代理服务器,此时,在内部机器的 iptables DNAT 配置中,可以选择合适的 server 作为 destination.
  3. iptables 支持域名,可以使用域名代替 IP,更方便一点。
  4. iptables 中配置中转端口的时候,一些 HDFS 的内部端口需要避开,免得混淆(比如 9000、8020 等),最好找一些不常用的端口范围来配置(例如50000-60000)。

方案二:socks5 代理软件方案

socks5 代理比 http 更加底层,效率也更高,是比 http 代理更好的选择,该方案概览如下。这种方式比较复杂,另外也涉及一些关于代理上网的敏感内容,因此不再详述。

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容