Weave网络介绍
Weave是 Weaveworks 开发的容器网络解决方案。weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来。对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交换机,容器可以直接通信,无需 NAT 和端口映射。除此之外,weave 的 DNS 模块使容器可以通过 hostname 访问。
使用环境
weave 不依赖分布式数据库(例如 etcd 和 consul)交换网络信息,每个主机上只需运行 weave 组件就能建立起跨主机容器网络。我们会在 host1 和 host2 上部署 weave 并实践 weave 的各项特性。
Weava下载安装
其实就是下载一个weave的命令
curl -L git.io/weave -o /usr/local/bin/weave
chmod +x /usr/local/bin/weave
使用weave可以进行跨主机的容器网络的通信,这时需要在其中一台下载一些weave需要的组件
weave launch
启动 weave 相关服务。weave 的所有组件都是以容器方式运行的,weave 会从 docker hub 下载最新的 image 并启动容器
Weave网络部署
实验环境
一台已安装docker的linux系统即可
实验目的
安装完成weave并启动服务,进行网络分析,理解weave网络的原理结构
实验步骤
按照以上步骤两台主机下载安装weave命令
启动weave服务
第一次启动过程中会下载一些所需要的组件
[root@localhost ~]# weave launch
…
WARNING: existing iptables rule
'-A FORWARD -j REJECT --reject-with icmp-host-prohibited'
will block name resolution via weaveDNS - please reconfigure your firewall.
8dfaae8e2441dab13f29d45777033161dd61ee86a93dc304cc33d956c957db0e
下载启动完成后,会报出一条警告(WARNING),需要添加一条防火墙策略
[root@localhost ~]# iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
[root@localhost ~]# iptables-save
weave启动完成后,会创建出一个新的docker网络weave,驱动类型为weavemesh
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
b5f7f7433bac bridge bridge local
dc8bfdbda464 host host local
ecbab8a758e6 none null local
867d84127656 weave weavemesh local
同时也会多出三个关于weave服务的镜像
[root@localhost ~]# docker images
REPOSITORY TAG
weaveworks/weaveexec 2.6.2
weaveworks/weave 2.6.2
busybox latest
httpd latest
centos latest
weaveworks/weavedb latest
weave:是主程序,负责建立weave网络,收发数据,提供DNS服务等
weaveexec:是libnetwork CNM dirver,实现docker网络
weavedb:提供 Docker 命令的代理服务,当用户使用weave集群中的docker创建容器时,它会自动将容器添加到 weave 网络。
查看weave网络信息,10.32.0.0/12是weave的默认网段
[root@localhost ~]# docker network inspect weave
…
“Subnet”: “10.32.0.0/12”
…
使用weave网络
执行以下命令,类似于进入一个网络的命名空间,在此模式下创建的容器将会默认使用weave网络的ip网段
[root@localhost ~]# eval $(weave env)
运行容器查看获取ip,会发现一共有两个网段的网卡,一个是用于与docker0网卡桥接,可以连接外网,一个是weave网络
[root@lo