我运行一个提供在线设施的Java应用程序。该应用程序在Ubuntu下的AWS EC2实例上运行。存在弹性IP,AWS控制台报告的外部和私有IP都是稳定的。前端访问和证书工作正常。
但是,存在与Java检测到的IP地址有关的问题。应用程序许可证进程使用IP地址生成主机ID,我发现应用程序许可证进程获取的IP地址不稳定 - 每1分钟更改一次,这会导致许可证不匹配,因为许可证与IP地址关联
使用下面的代码(由应用程序供应商提供)我记录了Java获取的IP地址(因为它们每分钟都在变化),它们与外部或私有IP地址完全不同。我发现他们解决了位于美国西海岸和美国东海岸的AWS服务器(可能是DNS服务器?)。该实例位于欧盟西部。
import java.net.*;
class IPTest {
public static void main(String[] args) {
getIPAddresses();
}
public static void getIPAddresses() {
try {
InetAddress in = InetAddress.getLocalHost();
InetAddress[] all = InetAddress.getAllByName(in.getHostName());
for (int i = 0; i < all.length; i++) {
System.out.println(all[i].getHostAddress());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我不知道这是某种AWS问题,DHCP问题,应用程序问题,还是Tomcat配置错误。我真的很感激这个帮助。
答案 0 :(得分:0)
此问题现已解决。
Java以相当复杂的方式获取IP地址,并使用主机名输出并获取IP地址。主机名指向已移至AWS Route53的域。 Java正在返回内部AWS Route53 IP地址,该地址恰好每1分钟更改一次。将主机名更改为EC2私有DNS已解决问题,Java现在正确返回EC2专用IP地址。