当虚拟机所在的宿主机因为维护或者其他原因宕机时 , 当前实例就需要迁移到其他的宿主机上 , 为了保证业务不中断 , 我们需要保证迁移过程中的 IP 地址不变 , 因为 Overlay 是在网络层实现二层网络 , 所以多个物理机之间只要网络层可达就能组建虚拟的局域网 , 虚拟机或者容器迁移后仍然处于同一个二层网络 , 也就不需要改变 IP 地址 。
文章插图
virtual-machine-migration
图 5 - 跨数据中心的虚拟机迁移
如上图所示 , 迁移后的虚拟机与其他的虚拟机虽然位于不同的数据中心 , 但是由于上述两个数据中心之间可以通过 IP 协议连通 , 所以迁移后的虚拟机仍然可以通过 Overlay 网络与原集群的虚拟机组成二层网络 , 集群内部的主机也完全不清楚、不关心底层的网络架构 , 它们只知道不同虚拟机之间是可以连通的 。
虚拟机规模我们在 为什么 Mac 地址不需要全球唯一 曾经介绍过二层网络的通信需要依赖 MAC 地址 , 一个传统的二层网络需要网络设备中存储从 IP 地址到 MAC 地址的转发表 。
目前 Kuberentes 官方支持的最大集群为 5000 节点 , 如果这 5000 个节点中的每个节点都仅仅包含一个容器 , 这对于内部的网络设备其实没有太大的压力 , 但是在实际情况下 5000 节点的集群中都包含几万甚至几十万个容器 , 当某个容器向集群中发送 ARP 请求 , 集群中的全部容器都会收到 ARP 请求 , 这时会带来极高的网络负载 。
在使用 VxLAN 搭建的 Overlay 网络中 , 网络会将虚拟机发送的数据重新封装成 IP 数据包 , 这样网络只需要知道不同 VTEP 的 MAC 地址 , 由此可以将 MAC 地址表项中的几十万条数据降低到几千条 , ARP 请求也只会在集群中的 VTEP 之间扩散 , 远端的 VTEP 将数据拆包后也仅会在本地广播 , 不会影响其他的 VTEP , 虽然这对于集群中的网络设备仍然有较高的要求 , 但是已经极大地降低了核心网络设备的压力 。
文章插图
overlay-network-and-arp
图 6 - Overlay 网络中的 ARP 请求
Overlay 网络其实与软件定义网络(Software-defined networking、SDN)[^4]密切相关 , 而 SDN 引入了数据平面和控制平面 , 其中数据平面负责转发数据 , 而控制平面负责计算并分发转发表 。VxLAN 的 RFC7348 中只定义了数据平面的内容 , 由该技术组成的网络可以通过传统的自学习模式学习网络中的 MAC 与 ARP 表项[^5] , 但是在大规模的集群中 , 我们仍然需要引入控制平面分发路由转发表 。
网络隔离大规模的数据中心往往都会对外提供云计算服务 , 同一个物理集群可能会被拆分成多个小块分配给不同的租户(Tenant) , 因为二层网络的数据帧可能会进行广播 , 所以出于安全的考虑这些不同的租户之间需要进行网络隔离 , 避免租户之间的流量互相影响甚至恶意攻击 。传统的网络隔离会使用虚拟局域网技术(Virtual LAN、VLAN) , VLAN 会使用 12 比特表示虚拟网络 ID , 虚拟网络的上限是 4096 个 。
文章插图
vlan-header
图 7 - VLAN 协议头
推荐阅读
- 花木兰为什么替父出征 木兰从军中花木兰为什么要替父从军
- 提高微服务安全性的11个方法
- 为什么说“你们男人都一样”
- |为什么说人在职场,尊严和面子都是争回来的,不是舔回来的
- 列强在中国修建铁路的原因 列强为什么在中国修铁路
- 刚刚出生新生儿阴道炎症为什么
- 宋仁宗到底爱不爱曹皇后 宋仁宗为什么不喜欢曹皇后
- 曹操的儿子为什么活不长 曹操的子孙为什么命都不长
- 宋朝起义为什么那么多 宋朝有农民起义吗
- 吴起为什么那么厉害 吴起被谁杀了