阿里专家深度解读Weaveworks提供的容器集群网络和监控

Dockercon 2016 -- Weaveworks

Micro SDNs by Weaveworks

"Micro SDNs"建立在传统的SDN和经典网络之上,它和传统的区别在于软件的网络是在软件启动的时候自己配置好,还是首先人为配置好网络后再创建应用。通过"Micro SDNs"的方式可以减少很多软件部署时的错误,并能让软件得到快速的迭代。

Weaveworks' Weave Net是容器化部署的网络解决方案。Weaveworks的Micro SDN方案对开发者来说不仅易用,而且在生产环境保证高的可用性和健壮性。

Weave Net的容器网络的解决方案类似于因特网,**不依赖于中心化的数据存储**,Weave的路由会通过交换信息自动学习连接状态,而且Weave Net是目前唯一可以处理多播的网络传输的容器网络方案。

Weave Net可以和Weave Scope一起使用,它可以用实时图的方式展示目前集群的主机,容器,进程,以及他们之间的通信关系。

Weave 实 践

准备机器

使用Docker Machine ECS在阿里云上生成两台阿里云的ECS虚拟机

安装和使用weave net

下载weave脚本

curl -L git.io/weave -o /usr/local/bin/weave

# 这个地方有可能被墙掉,可以用这个地址:http://docker-build.oss-cn-hangzhou.aliyuncs.com/weave

chmod a+x /usr/local/bin/weave

启动weave:

weave launch

设置Docker Host为weave的代理地址:

eval "$(weave env)"

在weave中启动三个容器并通过容器名或DNS通信:

~# docker run -itd --name test1 busybox

~# docker run -it --name test2 busybox ping test1 -c 2

PING test1 (172.20.0.3): 56 data bytes

64 bytes from 172.20.0.3: seq=0 ttl=64 time=0.132 ms

64 bytes from 172.20.0.3: seq=1 ttl=64 time=0.111 ms

--- test1 ping statistics ---

2 packets transmitted, 2 packets received, 0% packet loss

round-trip min/avg/max = 0.111/0.121/0.132 ms

~# docker run -it --name test3 busybox ping test1.weave.local -c 2

PING test1.weave.local (172.20.0.3): 56 data bytes

64 bytes from 172.20.0.3: seq=0 ttl=64 time=0.231 ms

64 bytes from 172.20.0.3: seq=1 ttl=64 time=0.142 ms

--- test1.weave.local ping statistics ---

2 packets transmitted, 2 packets received, 0% packet loss

round-trip min/avg/max = 0.142/0.186/0.231 ms

在另外一台主机上运行weave,并通过weave的网络跨主机互连;

~# weave launch <第一台主机的ip>

~# eval $(weave env)

~# docker run -it --name test2_2 busybox ping test1 -c 2

PING test1 (172.20.0.3): 56 data bytes

64 bytes from 172.20.0.3: seq=0 ttl=64 time=0.132 ms

64 bytes from 172.20.0.3: seq=1 ttl=64 time=0.111 ms

--- test1 ping statistics ---

2 packets transmitted, 2 packets received, 0% packet loss

round-trip min/avg/max = 0.111/0.121/0.132 ms

使用weave scope管理机器,容器和进程网络

在刚才创建的两台机器上安装weave scope

sudo wget -O /usr/local/bin/scope https://git.io/scope

sudo chmod a+x /usr/local/bin/scope

sudo scope launch

通过<机器IP>:4040访问weave scope:

可以看到容器,进程,机器的连接管理

阿里专家深度解读Weaveworks提供的容器集群网络和监控

点击容器之后能够查看容器的配置,进程,连接,以及对容器执行一些操作

阿里专家深度解读Weaveworks提供的容器集群网络和监控

下面我们运行两个容器,并通过Scope查看他们的连接和管理他们:

~# docker run -itd --name s1 busybox nc -llp 80

~# docker run -it --name s2 busybox telnet s1 80

可以看到两个容器网络是互相连接的,并且点击容器可以看到进程的连接详情:

阿里专家深度解读Weaveworks提供的容器集群网络和监控

Weave Net原理

阿里专家深度解读Weaveworks提供的容器集群网络和监控

Weave在每台机器上运行Weave Router的进程,容器间互相访问的请求会转发到Weave Router上,Weave Router会根据每个机器上不同网段的配置将请求转换为udp的包转发到对应的宿主机上,接收到的Weave Router解包后将请求转发到对应的容器。

同时,Weave Router同时有DNS的模块,它会记录并广播容器的DNS别名和IP地址到集群中的机器,容器便可以通过DNS互相发现和负载均衡。

更多深度技术内容,请关注云栖社区微信公众号:yunqiinsight。

相关推荐