这个问题可能是自我回答,但无论如何我还是被问到了。
我们正在开发基于Spring Boot 1.3.6.RELEASE和Spring-Cloud Brixton.RELEASE构建的应用程序套件。是的,我知道这不仅死了而且被埋葬了,而且生命已经完全结束。
在特定安装中,我们已在主动-被动操作模式下部署了故障转移群集管理器。我们的应用程序的批量套件作为节点和与角色相关联的一组资源进行部署。
在其中一个节点上启动时,Spring-Cloud功能会将主适配器解析为“ Windows故障转移群集虚拟适配器”。它具有169.254前缀地址。这是一个自动配置的地址。在网络接口枚举的最下方是实际的LAN连接的NIC。
由于逻辑的编写方式,填充将确定第一个接口UP,该接口具有非回送地址。
从中尝试解析主机名和IP。
尝试将该IP解析为主机名将失败,并提供“ localhost”。
由于我们尚未配置服务,否则就是这种情况。
我对此进行了一些深入研究,并确定NetworkInterface.getInterfaces()最终(在Windows上)调用了GetIFTable()。该调用的特殊之处在于它根据索引对结果进行排序。 GetIFTable的文档表明,该索引值不是持久性的,并且在将接口从启用/禁用/启用(或其他情况)切换时实际上可以更改。
在Brixton.RELEASE下,是否建议使用确保不使用群集适配器的方法,我们应该设置属性spring.cloud.inetutils.ignoredInterfaces="Microsoft Failover Cluster Virtual Adapter"
?
我们正在努力摆脱Spring-Boot 1.3.6.RELEASE / Brixton.RELEASE的影响,所以请不要仅仅提供它作为建议。
谢谢。