大数跨境
0
0

【DockerCon 2016】阿里专家深度解读Weaveworks提供的容器集群网络和监控解决方案

【DockerCon 2016】阿里专家深度解读Weaveworks提供的容器集群网络和监控解决方案 阿里云云栖号
2016-06-29
0
导读:Weaveworks' Weave Net是容器化部署的网络解决方案,Weaveworks的Micro SDN方案对开发者来说不仅易用,而且在生产环境保证高的可用性和健壮性。在本文中,阿里专家手把手教

Dockercon 2016 -- Weaveworks


1

Micro SDNs by Weaveworks


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


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


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


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


2

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:


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




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




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


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

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


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




3

Weave Net原理




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


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



本文为云栖社区文章,如需转载,请注明出处,并附上云栖社区微信公众号:yunqiinsight。


点击“阅读原文”可查看原文并进入相关链接。




想和这群聪明人共事吗?加入阿里云云栖社区(全职/兼职):yqeditor@list.alibaba-inc.com


投稿或入驻云栖社区,请联系:yqeditor@list.alibaba-inc.com


2016,为了实现更多技术梦想,云栖社区与你携手并行。

yunqiinsight

长按二维码,一网打尽所有深度技术文章


戳原文,更有料!
【声明】内容源于网络
0
0
阿里云云栖号
云栖官方内容平台,汇聚云栖365优质内容。
内容 3553
粉丝 0
阿里云云栖号 云栖官方内容平台,汇聚云栖365优质内容。
总阅读625
粉丝0
内容3.6k