我正在阅读有关高可用性,我不明白以下我读:在故障转移的主要IP迁移到备份服务器,但必须MAC地址。
具体来说,我读了每台机器都有一个唯一的地址MAC,可以被机器中的所有接口使用。 我没有得到这个部分。 MAC是否属于NIC? 这句话中的接口是什么意思?
此外,在故障转移客户端必须更新其IP / MAC映射,并find3种方法,这是通过使用自定义的MAC并将其从公共IP一起移动到备份。 这怎么可能? 高可用性软件,例如Pacemaker做到这一点? 怎么样?
这本书是正确的,但有一些遗漏。
集群软件创build基于虚拟MAC地址的服务的过程非常简单。 当服务出现时,它提供了一个免费的ARP包,说明在虚拟MAC地址上可以find特定的IP地址。 发生故障切换时,“closures”节点将删除其本地IP / MAC绑定,并且新节点开始侦听该虚拟MAC地址和IP组合。 没有麻烦没有大惊小怪。
集群软件使用的另一种方法是根本不用打扰虚拟MAC,而总是依靠无偿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嗅探软件如何在交换机上工作? 。