首页 > 其他 > 详细

【爬坑系列】之vxlan网络实现与Docker的overlay网络

时间:2019-05-25 21:06:58      阅读:220      评论:0      收藏:0      [点我收藏+]

linux 内核从3.7之后就内部集成了vxlan功能,所以Docker可以使用linux内核提供的vxlan驱动,经过配置创建vxlan网络。

而从Docker自Docker Engine 1.9之后,就自带overlay网络的驱动了,也才有了可以直接使用docker create network命令创建overlay类型的网络

在这里我们除了创建单纯的vxlan网络,我们可以手动模拟overlay驱动,利用namespace自己创建overlay网络,这里会遇到很多坑,但对于学习vxlan甚至是linux网络知识都很有帮助。

另外,受环境所限这里我只试验了点对点类型的vxlan网络,但对于理解vxlan往还是够用啦

环境准备


 

0,在某两家云服务供应商上买了2台计算云,centos 7,这样的环境稍显复杂,因为计算云的机器都是绑定的VIP,其自身接口的ip都是小网ip,互相不认识的小网ip......

                    master节点                                                 minion节点
VIP:             188.x.x.113          ---中间网络------              106.y.y.3
IP(eth0):      172.21.0.3                                                   172.16.0.4
MAC(eth0):  52:54:00:6b:df:04                                        fa:16:3e:a8:1f:98

1,linux内核版本越高越好,如果不够,可以用如下命令进行升级

  rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
  yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y

2,  安装必要的工具,比如

ln -s /var/run/docker/netns/ /var/run/netns

最基本的点对点vxlan网


所谓点对点vxlan网络,表示每个vtep只有一个伙伴,它只与这个伙伴建立一个隧道。

【实操】

master:

//创建一个vxlan类型的接口作为vtep,vxlan id即VNI为200,指定隧道的另一端ip为minion的VIP,建立隧道的物理接口为eth0
ip link add vxlan20 type vxlan id 200 dstport 4789 remote 106.y.y.3 dev eth0

ip addr add 10.20.1.2/24 dev vxlan20
ip link set vxlan20 up

minion:

ip link add vxlan20 type vxlan id 200  remote 188.x.x.113 dstport 4789 dev eth0

ip addr add 10.20.1.3/24 dev vxlan20
ip link set vxlan20 up

【验证】#ping  10.20.1.3 OK的,抓包也可以看到经过vxlan封装的报文

技术分享图片

技术分享图片

【解析】

此种情况属于vtep之间的直接通信,arp包和icmp包都被vtep即vxlan20进行了vxlan封装。

 这部分的实验很有必要,可以说明一点,我的linux内核是支持vxlan的。这很重要,因为在开始我就使用多namespace + veth pair方式搭建环境,但总是不通,查了好多资料都说是版本问题,所以我这才舍弃自己的虚拟机上花钱购买了计算云,然后又是升级内核版本等等....

直到这种最简单方式的情况下发现是OK的,我才意识到,我解决问题的方向早就偏了....

 

 

多namespace下的点对点vxlan网


 

【实操】

master:

 

ip link add vxlan10 type vxlan id 100 remote 106.y.y.3 dstport 4789 dev eth0

ip link add br-vx type bridge

ip link set vxlan10 master br-vx
ip link set vxlan10 up
ip link set br-vx up


ip netns add ns100

ip link add veth10 type veth peer name veth11
ip link set dev veth10 master br-vx
ip link set dev veth10 up


ip link set dev veth11 netns ns100
ip netns exec ns100 ip addr add 10.20.0.10/24 dev veth11
ip netns exec ns100 ip link set dev veth11 up
ip netns exec ns100 ip link set lo up

minion:

ip link add vxlan10 type vxlan id 100 remote 188.x.x.113 dstport 4789 dev eth0
ip link add br-vx type bridge

ip link set vxlan10 master br-vx
ip link set vxlan10 up
ip link set br-vx up

ip netns add ns100

ip link add veth10 type veth peer name veth11
ip link set dev veth10 master br-vx
ip link set dev veth10 up

ip link set dev veth11 netns ns100
ip netns exec ns100 ip addr add 10.20.0.11/24 dev veth11
ip netns exec ns100 ip link set veth11 up
ip netns exec ns100 ip link set lo up

 

 

【爬坑系列】之vxlan网络实现与Docker的overlay网络

原文:https://www.cnblogs.com/shuiguizi/p/10923841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!