基于OVS的Docker多主机互联设计和实践
多主机的网络直连需求源于ACS的金融云业务场景。 在此场景下,Docker容器运行在阿里云的ECS VM之中, Docker传统的网络解决方案采用NAT的方式实现容器间互联,不同宿主机的容器之间无法感知到真实ip地址,因此无法满足如配置中心这样的架构。而ECS又不支持给VM独立增加IP,从而迫使我们在短期内只能一个VM跑一个Docker的方案,势必会造成资源的浪费。OVS的直连方案隔离了宿主机和Docker容器的网络平面,提供了VM运行多Docker容器的能力,结合上ACS的容器编排能力,能大大提高资源的利用率,降低成本。 Docker主机网络互联的概述 如果要实现多主机的容器网络通信,Docker,原生的网络模型可以采用Port Mapping的方式,本质上是对两个有互访需求的container用iptables实现了SNAT/DNAT。但这并不能算真正意义的直连互访,因为两个容器内可见的IP地址并非是容器本身的IP地址,而是容器所在宿主机的地址。那么对于一些Java的应用,如配置中心,则无法正常工作。(假设配置中心的服务器和客户端分别在两个容器内,客户端将会采用容器的自身地址去服务...
