采用这种多 key 方案主要是考虑到以下场景:更换网卡设备
虚拟机克隆
机器搬迁
…
基本上,若在 IT 资源管理中找到 mac 地址一样的主机,可以认为就是同一主机,直接进行更新即可。那么是不是可以仅仅用 mac 来做唯一标志就可以了?如果网卡设备坏了,换上新的,mac 地址自然就变了,但机器还是同一台,所以还需要其他字段来辅助标志主机的唯一。
uuid 是由 agent 生成的,加上 agent 本身的 uuid 就可以很好地解决了更换网卡设备所带来的问题。而在发生虚拟机克隆的时候,uuid 会是一样的,这时候 gateway 会检测到一样的 uuid,gateway 就会通知最近连接的 agent 重新生成 uuid。
当 mac 和 uuid 在 IT 资源管理中都找不到时,就要判断 ip 是否能找到了,如果也找不到,明显就是一台新机器,直接执行新增主机操作就好。但要是 ip 找到了,却是麻烦事。
因为会有两种场景,一是先手动录入了主机,而录入主机时只有 ip 字段,mac 和 uuid 字段都是空的,这时候就可以直接更新了;要是 mac 和 uuid 不为空,就可能是只有 ip 相同,比如灾备环境的机器与生产环境的机器的 ip 一一对应,相同 ip 对应着两台主机(我们倾向提倡 IT 资源管理中主机的 ip 唯一),这时,就有可能也是要执行新增操作。所以,只能由用户来干预确认了。
使用 mac+uuid+ip 多 key 的方式来确定主机的唯一性,下面罗列出一些场景(☑️ :在IT资源管理中能找到,✖️: 在IT资源管理中没找到)