AWS - Java每1分钟获得一次IP地址更改

时间:2015-04-17 09:07:40

标签: java tomcat amazon-web-services amazon-ec2 ip-address

我运行一个提供在线设施的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配置错误。我真的很感激这个帮助。

1 个答案:

答案 0 :(得分:0)

此问题现已解决。

Java以相当复杂的方式获取IP地址,并使用主机名输出并获取IP地址。主机名指向已移至AWS Route53的域。 Java正在返回内部AWS Route53 IP地址,该地址恰好每1分钟更改一次。将主机名更改为EC2私有DNS已解决问题,Java现在正确返回EC2专用IP地址。