Docker跨主机网络:解锁分布式应用部署的新纪元

  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-优快云博客

目录

前言:

正文:

Docker的跨主机网络

网络模型分类:

常见的网络模型:

各方案的网络模型描述如下:

连通与隔离:

性能:

一、overlay的解决方案

**环境限制**:

#### 实验环境:

通过网盘分享的文件:consul.tar链接: https://pan.baidu.com/s/1EtlDwNJ39Ma1-pnPQwCXRQ 提取码: ps33

### 在docker01上的操作。

//运行consul服务。

### 修改docker02和docker03的docker配置文件

02,03上传busybox镜像测试

#### 在docker02创建跨主机网络测试机

#### 在docker03创建跨主机网络测试机

## 二、Docker跨主机网络方案之MacVlan

实验环境:

#### 1)打开网卡的混杂模式

#### 2)在docker01上创建macvlan网络

#### 3)基于创建的macvlan网络运行一个容器

#### 4)在docker02上创建macvlan网络,注意与docker01上的macvlan网络一模一样。

#### 5)在docker02上,基于创建的macvlan网络运行一个容器,验证与docker01上容器的通信。

#### 6)在docker02上,登录bbox2测试ping bbox1


前言:

在容器化技术日益成熟的今天,Docker凭借其轻量级、高效性和可移植性,已经成为现代软件开发和运维领域不可或缺的一部分。然而,随着应用的不断扩展和复杂化,单个Docker主机上的资源往往无法满足所有需求,跨主机网络通信成为了实现分布式应用部署的关键。

Docker跨主机网络允许容器在不同的物理或虚拟主机之间实现无缝通信,从而打破了单个主机的资源限制,为构建高可用、可扩展的分布式系统提供了可能。这一特性不仅极大地提升了应用的灵活性和可靠性,还为开发者提供了更加便捷和高效的开发、测试和部署环境。

本文档将深入探讨Docker跨主机网络的原理、配置方法和实际应用。从基础的跨主机网络架构介绍,到高级的网络配置技巧,再到实际场景中的问题解决,我们力求为读者呈现一个全面、系统且实用的知识体系。

无论你是Docker的初学者,还是有一定经验的开发者或运维人员,都将在本书/本文档中找到适合自己的内容。我们希望通过我们的努力,帮助大家更好地掌握Docker跨主机网络的技术,从而在实际开发中发挥出更大的潜力。

让我们一同踏上这段探索Docker跨主机网络的旅程,共同开启分布式应用部署的新篇章!


正文:

Docker的跨主机网络

网络模型分类:

  •     overlay:使用分布式数据库保存网络数据实现共享,数据包需要封装解封装
  •     underlay:使用Linux内核模块,借用物理网卡实现多Mac配置连接容器,性能高,但网络配置比较复杂


常见的网络模型:

跨主机网络意味着将不同主机上的容器用同一个虚拟网络连接起来。这个虚拟网络的拓扑结构和实现技术就是网络模型。

Docker overlay: 如名称所示,是 overlay 网络,建立主机间 VxLAN 隧道,原始数据包在发送端被封装成 VxLAN 数据包,到达目的后在接收端解包。

Macvlan: 网络在二层上通过 VLAN 连接容器,在三层上依赖外部网关连接不同 macvlan。数据包直接发送,不需要封装,属于 underlay 网络。

Flannel: 有两种 backend:vxlan 和 host-gw。vxlan 与 Docker overlay 类似,属于 overlay 网络。host-gw 将主机作为网关,依赖三层 IP 转发,不需要像 vxlan 那样对包进行封装,属于 underlay 网络。

Weave: 是 VxLAN 实现,属于 overlay 网络。

Calico:属于underlay,完全利用路由规则实现动态组网,通过BGP协议通告路由。


各方案的网络模型描述如下:

Distributed Store:

Docker Overlay、Flannel 和 Calico 都需要 etcd 或 consul。Macvlan 是简单的 local 网络,不需要保存和共享网络信息。Weave 自己负责在主机间交换网络配置信息,也不需要 Distributed Store。

IPAM:

Docker Overlay 网络中所有主机共享同一个 subnet,容器启动时会顺序分配 IP,可以通过 --subnet 定制此 IP 空间。

Macvlan 需要用户自己管理 subnet,为容器分配 IP,不同 subnet 通信依赖外部网关。

Flannel 为每个主机自动分配独立的 subnet,用户只需要指定一个大的 IP 池。不同 subnet 之间的路由信息也由 Flannel 自动生成和配置。

Weave 的默认配置下所有容器使用 10.32.0.0/12 subnet,如果此地址空间与现有 IP 冲突,可以通过 --ipalloc-range 分配特定的 subnet。

Calico 从 IP Pool(可定制)中为每个主机分配自己的 subnet。

连通与隔离:

同一 Docker Overlay 网络中的容器可以通信,但不同网络之间无法通信,要实现跨网络访问,只有将容器加入多个网络。与外网通信可以通过 docker_gwbridge 网络。

Macvlan 网络的连通或隔离完全取决于二层 VLAN 和三层路由。

不同 Flannel 网络中的容器直接就可以通信,没有提供隔离。与外网通信可以通过 bridge 网络。

Weave 网络默认配置下所有容器在一个大的 subnet 中,可以自由通信,如果要实现隔离,需要为容器指定不同的 subnet 或 IP。与外网通信的方案是将主机加入到 weave 网络,并把主机当作网关。

Calico 默认配置下只允许位于同一网络中的容器之间通信,但通过其强大的 Policy 能够实现几乎任意场景的访问控制。

性能:

性能测试是一个非常严谨和复杂的工程,这里我们只尝试从技术方案的原理上比较各方案的性能。

最朴素的判断是:Underlay 网络性能优于 Overlay 网络。

Overlay 网络利用隧道技术,将数据包封装到 UDP 中进行传输。因为涉及数据包的封装和解封,存在额外的 CPU 和网络开销。虽然几乎所有 Overlay 网络方案底层都采用 Linux kernel 的 vxlan 模块,这样可以尽量减少开销,但这个开销与 Underlay 网络相比还是存在的。所以 Macvlan、Flannel host-gw、Calico 的性能会优于 Docker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值