【以下的问题经过翻译处理】 背景:
我们在AWS上运行了许多Windows操作系统上的负载均衡服务器,使用C# .NET(5)。我们有一个Web服务器应用程序以及一个在同一台机器上运行的Windows服务,我们在Windows服务的日志记录方面存在问题。
问题描述:
由于我们有许多运行负载均衡的服务器,我们将日志流命名为私有IP,以区分哪台机器可能存在问题。这个私有IP是在应用程序启动时提取的(对于Windows服务和Web服务器都是如此)。通常情况下,这是成功的,但昨天我们遇到了一个问题,其中一个Windows服务日志流的标签显示为127.0.0.1,而不是本地IP号码。最终,我能够确定是哪台服务器,重新启动了Windows服务,使新的日志流名称中显示了私有IP号码。
可能的原因和解决方案:
我猜这是一个竞争条件错误。在AWS网络之前,该机器尚未收到其私有IP号码,我们的服务就要求获得它。**如果是这样,我们可以等待真实的IP出现,以确保我们在日志中获取正确的IP号码。**我有三个与此相关的问题:问题:
您是否看到除我提出的原因外,IP号码127.0.0.1出现的其他原因?
是否有比我提出的更好的解决方案?
是否有一种方法,使用AWS API之类的方式来获取服务器的公有IP?
以下是我们在这种情况下如何提取私有IP地址的代码:var hostName = System.Net.Dns.GetHostName();
var ipAddresses = System.Net.Dns.GetHostAddresses(hostName);
var ipv4Address = ipAddresses.FirstOrDefault(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);