专栏名称: 分布式实验室
最专业的Docker文章,最权威的Docker新闻。关注容器生态圈的发展。
目录
相关文章推荐
Java知音  ·  SpringBoot 实现接口防刷的 5 ... ·  昨天  
Java知音  ·  SpringBoot 实现接口防刷的 5 ... ·  昨天  
51好读  ›  专栏  ›  分布式实验室

Flannel中vxlan backend的原理和实现

分布式实验室  · 公众号  · 后端  · 2017-04-18 07:46

正文

请到「今天看啥」查看全文



修改docker daemon启动参数,增加以下参数后重启docker daemon:


node1: --bip=192.1.78.1/24


node2: --bip=192.1.87.1/24


这时node1和node2的容器之间还不能直接通信, node1也不能跨主机和node2上的容器直接通信,反之node2也无法直接和node1上的容器通信.。


第二步、创建VTEPs


在node1上执行以下命令:


PREFIX=vxlan

IP=$external-ip-of-node-1

DESTIP=$external-ip-of-node-2

PORT=8579

VNI=1

SUBNETID=78

SUBNET=192.$VNI.0.0/16

VXSUBNET=192.$VNI.$SUBNETID.0/32

DEVNAME=$PREFIX.$VNI


ip link delete $DEVNAME

ip link add $DEVNAME type vxlan id $VNI dev eth0 local $IP dstport $PORT nolearning

echo '3' > /proc/sys/net/ipv4/neigh/$DEVNAME/app_solicit

ip address add $VXSUBNET dev $DEVNAME

ip link set $DEVNAME up

ip route delete $SUBNET dev $DEVNAME scope global

ip route add $SUBNET dev $DEVNAME scope global


node2上执行以下命令:


PREFIX=vxlan

IP=$external-ip-of-node-2

DESTIP=$external-ip-of-node-1

VNI=1

SUBNETID=87

PORT=8579

SUBNET=192.$VNI.0.0/16

VXSUBNET=192.$VNI.$SUBNETID.0/32

DEVNAME=$PREFIX.$VNI


ip link delete $DEVNAME

ip link add $DEVNAME type vxlan id $VNI dev eth0 local $IP dstport $PORT nolearning

echo '3' > /proc/sys/net/ipv4/neigh/$DEVNAME/app_solicit

ip -d link show

ip addr add $VXSUBNET dev $DEVNAME

ip link set $DEVNAME up

ip route delete $SUBNET dev $DEVNAME scope global

ip route add $SUBNET dev $DEVNAME scope global


第三步、为VTEP配置forward table



# node1

node1$ bridge fdb add $mac-of-vtep-on-node-2 dev $DEVNAME dst $DESTIP

node2


node2$ bridge fdb add $mac-of-vtep-on-node-1 dev $DEVNAME dst $DESTIP



第四步、配置Neighbors,IPv4中为ARP Table



# node1







请到「今天看啥」查看全文