行至水穷处 坐看“云”起时

Cloud Native ADN -> CNadn.Net

DOCKER容器跨宿主机通信方法(4):Flannel-Vxlan

Vxlan模式

flannel的vxlan模式,数据包是通过kernal来转发的,而当使用udp模式时候是flannel自己转发。UDP模式下性能要差很多,性能差别可参考一些测试:

UDP模式:

60秒单线程测试

iperf3 -c x.x.x.x -t 60
结果:
[ 4] 0.00-60.00 sec 3.33 GBytes 477 Mbits/sec 15716 sender
[ 4] 0.00-60.00 sec 3.33 GBytes 476 Mbits/sec receiver

开启30个线程传输

iperf3 -c x.x.x.x -t 60 -P 30
结果:
[SUM] 0.00-60.00 sec 3.08 GBytes 441 Mbits/sec 205692 sender
[SUM] 0.00-60.00 sec 3.06 GBytes 438 Mbits/sec receiver
多线程并没有带宽的提升反而由于多线程调度影响,降低带宽。在万兆网的环境下UDP的性能损耗还是挺大的。

Vxlan模式:

60秒单线程测试

iperf3 -c x.x.x.x -t 60
结果:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-60.00 sec 10.1 GBytes 1.44 Gbits/sec 6957 sender
[ 4] 0.00-60.00 sec 10.1 GBytes 1.44 Gbits/sec receiver

开启30个线程传输

iperf3 -c x.x.x.x -t 60 -P 30
结果:
[SUM] 0.00-60.00 sec 10.1 GBytes 1.45 Gbits/sec 90559 sender
[SUM] 0.00-60.00 sec 10.1 GBytes 1.44 Gbits/sec receiver
在vxlan下多线程也没有性能提升。

从上述两组数据可以明显看出flannel在vxlan下性能要明显高于udp。

从UDP模式配置转换为VXLAN模式

flannel及安装参考:flannel-UDP一文   ,如果新装,方法一致,只是在etcd中配置config key时候配置的value不一样。如果是从udp转换到vxlan,参考本实验。

在所有节点上停止docker及flanneld服务

删除etcd中已经建立的子网配置和修改etcd中的config key

重新启动所有节点的flanneld和docker,注意要先启flanneld

检查确认

VXLAN封包:

flannel-vxlan.pcap抓包文件下载

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注