Docker Weave 介绍 or 工做原理

Docker Weave Networkdocker

Weave Network:属于第三方网络项目。服务器

Weave在Docker主机之间实现Overlay网络,使用业界标准VXLAN封装,基于UDP传输,也能够加密传输。网络

Weave Net建立一个链接多个Docker主机的虚拟网络,相似于一个以太网交换机,全部的容器都链接到这上面,互相通讯。架构

Weave Net由多个peer组成,Weave路由器运行不一样Docker主机上,是一个用户空间的进程;每一个peer都有一个名称,重启保持不变。它们经过TCP链接彼此,创建后交换拓扑信息。负载均衡

Weave Net能够在具备编号拓扑的部分链接的网络中路由数据包。学习

例如:在下面网络中,peer1直接链接2和3,可是若是1须要发送数据包到4和5,则必须先将其发送到peer3。加密

Weave Net中的”fast data path”使用Linux内核的OpenvSwich datapath模块。该模块使Weave Net路由器可以告知内核如何处理数据包。spa

OpenvSwich datapath和VXLAN功能在Linux内核版本3.12+才支持,若是内核不支持,则Weave Net使用”user mode”数据包路径。Weave Net会自动选择两台主机之间最快的路径传输数据,提供近原生吞吐量和延迟。code

特色:blog

# IP地址管理(IPAM)
Weave自动为容器分配惟一的IP地址。可经过weave ps查看

# 命名和发现
命名的容器自动会注册到Weave DNS中,并能够经过容器名称访问。
注:weave本身维护了一个微型的dns服务器。能够实现主机名通讯。

# 负载均衡
容许注册多个相同名称的容器,Weave DNS随机为每一个请求返回地址,提供基本的负载均衡功能。
注:若是访问容器名相同,则会自动轮询访问该容器,实现负载均衡。

# 手动指定IP地址
docker run –it –e WEAVE_CIDR=10.32.0.100/24 busybox

# 动态拓扑
能够在不中止或从新配置剩余Docker主机的状况下添加主机到Weave网络中或从Weave网络中删除

# 容错
weave peer不断交换拓扑信息,监视和创建与其余peer的网络链接。若是有主机或网络出现故障,Weave会绕过这个主机,保证两边容器能够继续通讯,当恢复时,恢复彻底链接

Docker Weave 工做原理

  • 网卡设备
  • Container eth0:eth0是容器主机的默认网络,主要提供容器访问外网所提供的服务,走的默认docker网络架构,只不过他建立了docker_gwbridge这个网桥。
  • docker_gwbridge:docker_gwbridge是容器所建立的网桥它替代了docker0的服务。
  • Contailner ethwe:它是veth pair虚拟设备对,与其余容器通讯的网络虚拟网卡。
  • vethwe-bridge:是ethwe设备对建立的weave网桥。网桥内分配的具体的IP与网关。
  • weave:weave网桥,经过route路由表找到目标,经过端口将数据包转发到对端端口节点。
  • eth0:真机网卡与外界网卡链接得真机网卡,它用来转发,容器VXLAN与NAT两种网卡类型的数据包到指定的对端节点。
  • 注:weave会将相邻的节点互相学习,经过route路由表进行相互通讯,并经过单独的端口发送数据。相似于静态路由。

Contailner ethwe 发送数据包到对端容器通讯

一、ethwe 会将数据包发送给vethwe-bridge网桥。
二、vethwe-bridge接收到数据包后由weave去处理这个数据,经过UDP6783数据端口依照weave的路由表转发到下一路由节点。
三、若是该节点就是目的地,本地weave会把信息转发到内核的TCP协议站,再转发到目的节点。

相关文章
相关标签/搜索