关于MAC和高可用性故障转移的新手问题

我正在阅读有关高可用性,我不明白以下我读:在故障转移的主要IP迁移到备份服务器,但必须MAC地址。

具体来说,我读了每台机器都有一个唯一的地址MAC,可以被机器中的所有接口使用。 我没有得到这个部分。 MAC是否属于NIC? 这句话中的接口是什么意思?

此外,在故障转移客户端必须更新其IP / MAC映射,并find3种方法,这是通过使用自定义的MAC并将其从公共IP一起移动到备份。 这怎么可能? 高可用性软件,例如Pacemaker做到这一点? 怎么样?

这本书是正确的,但有一些遗漏。

  • MAC地址不像您想象的那样固定,大多数高端网卡能够将MAC地址更改为特定的地址。 无论是在网卡的BIOS中,还是在驱动程序本身。
  • “虚拟”系统有特定的MAC地址范围(请参阅我的虚拟机可以安全使用哪些MAC地址范围? )
  • 集群软件可以使用这些预留范围中的MAC地址来呈现集群IP服务。
  • linuxnetworking堆栈能够创build具有特定MAC地址的虚拟网卡。

集群软件创build基于虚拟MAC地址的服务的过程非常简单。 当服务出现时,它提供了一个免费的ARP包,说明在虚拟MAC地址上可以find特定的IP地址。 发生故障切换时,“closures”节点将删除其本地IP / MAC绑定,并且新节点开始侦听该虚拟MAC地址和IP组合。 没有麻烦没有大惊小怪。

集群软件使用的另一种方法是根本不用打扰虚拟MAC,而总是依靠无偿ARP。 这种系统的启动/故障切换顺序如下所示:

  1. 集群软件将IP绑定到节点A.
  2. 节点A G-ARP“192.168.244.60在02-00-ab-cd-ef-01”
  3. 子网中的所有设备都更新其ARP表。
  4. 时间stream逝。
  5. 节点A崩溃。
  6. 群集软件将IP绑定到节点B.
  7. 节点B G-ARP“192.168.244.60在02-00-ab-cd-41-ba上”
  8. 子网中的所有设备都更新其ARP表。

根据我的经验,第二种方法,纯G-ARP,是目前大多数Linux集群使用的方法。 但是,这两种方法都是有效的并且已被使用。 G-ARP方法的好处是你不必分配虚拟MAC地址。 纯虚拟MAC方法的好处在于它不依赖给定子网上的G-ARP。

这听起来像你发现很不好的阅读材料。 介意张贴参考?

一般来说:OSI图层模型解决了大多数这些问题,您几乎不需要一次处理多个图层。

一个MAC地址可能只在一个以太网段出现一次。 在物理机器上,这些机器是全球唯一的,不会出现两次(甚至不在同一台机器上的多个NIC上)。 使用虚拟机,您可以通过软件设置MAC,并且必须使用一些类似于私有IP范围的专用MAC范围。

为了IP的高可用性,在不同的主机上configurationIP就足够了。 第2层上的操作系统和networking基础设施将负责自动更新其MAC / IP映射。

但是,一些设备是固执的,需要“免费”ARP请求来强制他们更新caching。

在Linux上,我使用“ucarp”和其他脚本来自动configuration那些“集群”IP的机器。

您可能混合了两种forms的高可用性或负载平衡。

链接绑定确实(可以)将相同的IP地址分配给同一主机上的多个接口。

对于使用HA的集群负载均衡,机器全部被分配相同的IP,具有不同的MAC。 一台机器将接收所有stream量,但可以将其转发给其他机器,因为它们具有相同的IP,所以可以直接作出响应。 如果主机发生故障,则select一个新机器,并进行免费ARP以通知设备新机器具有该IP。

在某些高可用性场景下,在HA事件中,只有IP地址被备用节点带回。 在这种情况下,备节点需要广播一条未经请求的ARP报文来更新同一网段的设备的ARP表。 在收到未经请求的ARP报文时,设备通常不会直接更新自己的ARP表(这可能会使networking容易被黑客攻击),而是使对应的IP地址上的ARP表项无效。 下一次设备需要与HA服务通话时,它将执行ARP请求来获取与IP地址对应的MAC。

在某些其他高可用性scheme(如某些路由器和防火墙)中,MAC和IP地址都由备用节点收回。 这允许同一个以太网段上的客户端保持其ARP表格不变,但这并不意味着备用节点可以保存其ARP广播(或其他forms的networkingstream量)。 在这种情况下,需要ARP广播(或其他networkingstream量)来更新交换机的MAC到端口表,这样stream量不会在死设备端口上结束。

你可以阅读更多(交换机的详细内部工作)[ networking嗅探软件如何在交换机上工作? 。