docker搭建分布式集群,解决IP的问题(千万别看其他人的)

前奏

  公司又小又穷还想搞大数据,怎么办?用虚拟机呀,m呀,虚拟机是什么,vbox?vmware还是hyper-v?还是没听过的kvm、Xen。都滚蛋 ,docker 吧,docker也是虚拟机,操作系统简化到了极致,还能自定义构建,又能在非图形化界面操作,linux你懂的。

  docker 搭建集群,这个不用说网上很多都会吧,有个问题就是网络通信问题,docker 容器相互隔离。怎么通信呢,别怕docker 有 network 创建新的网络命名空间,这样同一个网络命名空间下的容器可以相互通信了。这些都是网上学来的。没错 ,用了这个,集群真的就可以用了。

  问题又来了,我想客户端访问集群,开始脑残认为,连接到namenode节点的50070和9000就可以实现,于是网上找怎么动态添加端口映射,网上不同人给了不通方法,iptables 修改、直接进容器该、删了容器重新构建时docker命令添加。于是都试了个遍,最后那种不太现实,容器里面添加没成功,iptables添加50070映射成功了能访问,添加9000成功但是怎么也访问不了,后来各种查各种尝试是否权限问题,后来怀疑到iptables上,删除重新下了个iptables,悲剧发生了,网上一搜,“千万不要删iptables”很多很多。…这里省略几百字

  后来想了下,hadoop集群其实有个过程,name节点 把node节点的ip给客户端,客户端找node,node 接口并没有暴露出来,于是客户端肯定找不到。所以唯一处理办法,就是把节点的ip 和宿主机ip 弄到统一网段。

  于是百度,linux docker ip怎么和宿主机同一网段\客户端访问linux docker 集群\docker桥接物理网络。写这样的文章很多,有用到/etc/sysconfig/docker 改OPTIONS 还有用到 brctl工具,这期间会接触到
ip\ipconfig\brctl\iptables\route\netstat 你会发现好多都没听过用过,一个个学习,后来还了解 veth这个东西,一搜了解docker的网络模型,花了几周时间,没结果啊,快怀疑人生了。

  后来尝试用谷歌搜了下,也是很多,把第一面的都保存下来估计7八篇的样子,第二天看,当时很烦了,不想看了。今天就是第二天,哈哈,就刚才试了下成功了,不废话了就下面一个链接:

http://blogs.liwei.red/article/13

解决方法

参考那个网址就可以了,自己的也整理下

工具 ip(一般自带有)和pipework(这个需要下载)
ip addr del dev eth0 192.168.0.143/24
ip link add link eth0 dev br0 type macvlan mode bridge
ip addr add 192.168.0.143/24 dev br0
ip link set dev br0 up
ip route add default via 192.168.0.1 dev br0
docker run --name nettest -itd centos bash
pipework br0 nettest 192.168.0.241/24@192.168.0.1

同一局域网的任何操作系统ping 192.168.0.241就ok了,剩下的是给集群节点分配ip
这里注意点每个节点的/etc/hosts, 用的是外面的ip192.168那个,不是172开头的nat转换的ip.

感言

感谢那位爷,能让炎热的阳光也那么绚烂。同志们,百度真的垃圾,用google吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值