Docker Weave网络部署
Weave在Docker主机之间实现Overlay网络,使用业界标准VXLAN封装,基于UDP传输,也可以加密传输。
Weave Net创建一个连接多个Docker主机的虚拟网络,类似于一个以太网交换机,所有的容器都连接到这上面,互相通信。
Weave Net由多个peer组成,Weave路由器运行不同Docker主机上,是一个用户空间的进程;每个peer都有一个名称,重启保持不变。它们通过TCP连接彼此,建立后交换拓扑信息。
Weave Net可以在具有编号拓扑的部分连接的网络中路由数据包。例如,在下面网络中,peer1直接连接2和3,但是如果1需要发送数据包到4和5,则必须先将其发送到peer3。
WeaveNet中的”fastdatapath”使用Linux内核的OpenvSwichdatapath模块。该模块使WeaveNet路由器能够告知内核如何处理数据包。OpenvSwichdatapath和VXLAN功能在Linux内核版本3.12+才支持,如果内核不支持,则WeaveNet使用”usermode”数据包路径。WeaveNet会自动选择两台主机之间最快的路径传输数据,提供近原生吞吐量和延迟。
部署
使用前提: 1.确保Linux内核版本3.8+,Docker1.10+。 2.节点之间如果有防火墙时,必须彼此放行TCP 6783和UDP 6783/6784端口,这是Weave控制和数据端口。 3.主机名不能相同,通过主机名标识子网。
安装Weave(两个节点均执行)
curl -L git.io/Weave -o /usr/local/bin/Weave chmod +x /usr/local/bin/Weave mv weave /usr/bin/ chmod +x /usr/bin/weave
以上安装方法不行使用以下方式安装
cd /usr/local git clone https://github.com/weaveworks/weave cd /usr/local/weave/ cp weave /usr/local/bin/
启动并于其他主机连接
weave launch
会启动并下载镜像
连接
weave launch 192.168.56.129 #另外一台主机输入 weave launch 192.168.56.128
查看路由进程
节点2连接节点1 连接完就会相互交换本地节点信息
查看状态
weave status
Version: 2.0.4 (version 2.5.0 available - please upgrade!) Service: router Protocol: weave 1..2 Name: fe:c2:c3:62:e5:79(docker) Encryption: disabled PeerDiscovery: enabled Targets: 1 Connections: 1 (1 established) Peers: 2 (with 2 established connections) TrustedSubnets: none Service: ipam Status: idle Range: 10.32.0.0/12 DefaultSubnet: 10.32.0.0/12 Service: dns Domain: weave.local. Upstream: 127.0.0.53 TTL: 1 Entries: 0 Service: proxy Address: unix:///var/run/weave/weave.sock Service: plugin (legacy) DriverName: weave
查看连接信息
weave status connections
测试互通(本次测试不通)
docker run -it --net=weave busybox
查看weave分配的网络
weave ps
weave工作流程
其他功能
IP地址管理(IPAM) Weave自动为容器分配唯一的IP地址。可通过weave ps查看 命名和发现 命名的容器自动会注册到Weave DNS中,并可以通过容器名称访问。 负载均衡 允许注册多个相同名称的容器,Weave DNS随机为每个请求返回地址,提供基本的负载均衡功能。 手动指定IP地址 docker run –it –e WEAVE_CIDR=10.32.0.100/24 busybox 动态拓扑 可以在不停止或重新配置剩余Docker主机的情况下添加主机到Weave网络中或从Weave网络中删除 容错 weave peer不断交换拓扑信息,监视和建立与其他peer的网络连接。如果有主机或网络出现故障,Weave会绕过这个主机,保证两边容器可以继续通信,当恢复时,恢复完全连接。