2015-04-17 26 views
1

我運行一個提供在線設施的Java應用程序。該應用程序在Ubuntu下的AWS EC2實例上運行。有一個彈性IP,AWS控制檯報告的外部和私有IP都是穩定的。前端訪問和證書工作正常。AWS - Java每1分鐘獲得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

此問題現已解決。

Java以相當複雜的方式獲取IP地址並使用主機名出去獲取IP地址。主機名指向已移至AWS Route53的域。 Java正在返回內部AWS Route53 IP地址,每隔1分鐘發生一次更改。將主機名更改爲EC2專用DNS可以解決問題,Java現在可以正確返回EC2專用IP地址。