用weave实现docker container跨主机的互联的问题


现在我们需要在两台物理机器上面搭建 应用集群,每台机器上面都安装docker 和 weave,现在能实现跨物理机的container互相通信,但是不知道有没有什么坑,或者大家用weave 实现的时候遇到的一些问题是什么。用这种方式是不是有什么不妥
已邀请:

个人觉得,原来使用weave最大的不妥就是docker API与weave的不统一,用过的都知道,weave有自己的命令行的,所有的weave操作都是通过weave命令行,再由wave调用docker API来实现的weave与docker的互操作,但是weave并没有API接口可使用(只有命令行工具和weave router,并没有提供API的daemon),这就导致围绕基于weave的docker做integration或者development的时候,容器管理和网络管理须有不同的实现,比较麻烦。

但是在weave 1.0以后,weave引入了weave-proxy,这个问题就有很大缓解了,weave-proxy的基本原理就是代理docker API请求,由它来解析成对weave操作以及真正对docker API的调用,这样使用一个docker API就可以同时完成docker和weave的操作了

至于上面说的等待docker的原生network支持,个人认为,近期不要抱太大希望才好,通过试用docker1.8-experimental以后发现,虽然从架构上来说docker在network这一块改动巨大,所有网络功能均移至libnetwork,而且有了独立的子命令(docker network和docker service),但是功能层面上仅仅增加了一个支持multihost的overlay网络,功能相对简单(只能逐个创建跨主机的网络,并且网段不可配置,由docker默认分配)但是配置却相对复杂(由于要做cluster同步,启动docker daemon是要加各种参数),当然在稳定发布版中可能会有所改善。

个人认为,docker原生网络功能即使是在未来也不会做的太复杂,功能上的扩展主要都是通过各种network plugin来实现了,而第一个docker的network plugin就是weave的,从这里也可以看出weave在对docker network扩展方面的积极态度,目前来讲,weave在网络上能够实现的功能是要大大丰富于docker的(即使是docker1.8),具体请参看 http://docs.weave.works/weave/ ... .html

但是我也从来没有在生产环境中使用过weave(只是自己私下鼓捣的时候玩过),主要是应用场景不合适,我们需要的是操作颗粒度更小的工具(比如可以使用vlan),所以选用了pipework,更加灵活,当然integration的时候额外的工作也更多。所以选用docker的网络工具,首先看应用场景,同一应用场景下看功能的稳定性以及集成的简易度。

FionaHall - Docker中国社区发起人,Docker Meetup组织者,打杂@DaoCloud

赞同来自:


谢邀,不过我技术方面什么都不懂,还是邀请我同事回答吧。

xdays - a DevOps

赞同来自:


不太相信目前国内有人在生产上用weave, 应该都在等1.8的原生network支持吧。

Simba小狍子

赞同来自:


有人试用过libnetwork吗?docker blog上看了视频,没自己试过。

tifayuki - Tutum 工程师

赞同来自:


Tutum是在客户的服务器上部署了weave的, 虽然我们还在测试阶段,但有用户已经用来跑生产环境了。也就是说,目前有生产环境是跑在weave上的。

weave问题多多,目前正在测试1.0,希望能改善吧

要回复问题请先登录注册