一些服务器虚拟化软件可实现在两台虚拟化的物理服务器之间对虚拟机做动态迁移,迁移至另一中心的虚拟机不仅保留原有IP地址,而且还保持迁移前的运行状态(如TCP会话状态),所以必须将涉及虚拟机,迁移的物理服务器接入同一个二层网络(虚拟机在迁移前后的网关不变),这种应用场景要求构建跨中心的二层互联网络。
我的理解是,仅仅IP不变这一条件就要保证VLAN不改变(否则会引起路由动荡吧?),但这与保持迁移前的会话状态有何关系?
==这是一个很好的问题,先来假设如果数据中心是三层互联,会出现什么幺蛾子。假定服务器A的IP为10.1.1.10/24,网关为10.1.1.1,数据中心三层互联,那三层连接的两个数据中心不可能使用同一网段的IP,另外一个数据中心不会再使用10.1.1.0/24 这个网段,否则如何路由?(如果有人说用NAT可以解决地址冲突问题,当我这里的文字没写)所以如果做服务器在不同数据中心的迁移,必须要给服务器重新分配不同的IP。所以TCP连接肯定断,另外增加网络管理负担。
如果数据中心是二层互联,服务器迁移前后在同一个VLAN中,服务器A可以继续使用10.1.1.10,如果只有一个网关GW1,假定服务器A从DC1迁移到DC2迁移前的双向流量模型:
客户端--->GW1---->A
A--->GW1---->客户端
迁移后的双向流量模型:
客户端--->GW1---->DC1 二层ED1====>DC2 ED2 ---->A
A--->DC2 层ED2====>DC1 ED1 ---->GW1--->客户端
图中二层ED(Edge Device) 代表负责二层互联的设备服务器迁移到新的DC,一般会发送主动ARP,即gratuitous ARP,可以刷新二层交换机的转发表,即使不发ARP,流量数据可能会有一些丢失,很快服务器A会发送TCP retransmit ,流量包同样可以刷新交换机的转发表,即MAC对应交换机端口的映射表。
如果在每个DC都有GW,假定GW2为DC2的网关,流量模型很类似,有一点变化:
客户端--->GW1---->DC1 二层ED1====>DC2 ED2 ---->A
A--->GW2--->客户端==