2017-09-15 159 views
0

我使用apache-nifi,似乎我無法綁定到啓動web服務器時的地址,除非在配置文件中使用公共DNS名稱。使用DNS名稱解析的IP地址不起作用。同樣,使用在/etc/hosts中分配的主機別名不起作用。在每種情況下,我都會在nifi日誌中看到jetty拋出的異常,並說它不能分配請求的地址。nifi不能分配請求的地址

已經沒有什麼監聽端口了,通過netstat驗證,以及當我使用DNS名稱時,沒有錯誤綁定到該地址。這是設計,還是我做錯了什麼?

以下是我的配置的詳細信息。 (我實際上正在運行一個nifi集羣,而且嵌入式zookeeper也無法綁定到IP地址或主機別名上,但可以在DNS名稱上工作。因爲如果我在集羣關閉時使用單個nifi節點發生故障,我只是顯示了nifi服務器配置。)

nifi服務器運行在具有公共dns的雲服務中的VM上。假設公共DNS名稱是「dns-abc」,它解析爲地址1.2.3.4。

如果我在nifi.properties nifi.web.http.host=1.2.3.4中指定,則綁定失敗。如果我指定nifi.web.http.host=dns-abc它會成功。於是我在/etc/hosts創建的條目,如下所示:

1.2.3.4 nifi-1 

,我在nifi.properties指定nifi.web.http.host=nifi-1,並再次綁定失敗。

編輯:這裏是堆棧跟蹤

2017-09-18 01:02:30,610 WARN [main] org.apache.nifi.web.server.JettyServer Failed to start web server... shutting down. 
java.net.BindException: Cannot assign requested address 
     at sun.nio.ch.Net.bind0(Native Method) 
     at sun.nio.ch.Net.bind(Net.java:433) 
     at sun.nio.ch.Net.bind(Net.java:425) 
     at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) 
     at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 
     at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:298) 
     at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) 
     at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
     at org.eclipse.jetty.server.Server.doStart(Server.java:431) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
     at org.apache.nifi.web.server.JettyServer.start(JettyServer.java:705) 
     at org.apache.nifi.NiFi.<init>(NiFi.java:160) 
     at org.apache.nifi.NiFi.main(NiFi.java:267) 
+0

你能否提供完整的錯誤? – daggett

+0

我編輯了問題帖子並添加了堆棧跟蹤。 – MidnightJava

+0

也許在你的虛擬機內'dns-abc'解析爲不同的IP? – daggett

回答

0

虛擬機運行在雲解析公共DNS名稱本身到其本地IP地址,以及VM外的服務器解決同名虛擬機的公網IP地址。由於配置必須指定要綁定的服務器的本地IP地址,並且羣集中的其他主機將使用與遠程連接所需的主機地址相同的已配置節點名稱,因此它僅適用於類似於DNS這個。

我修改/etc/hosts每個系統上解決自己的名稱作爲它的本地IP地址和集羣作爲其公網IP地址的其他主機。然後,我可以使用來自/etc/hosts的所有zookeeper和nifi配置文件的主機名。這是我之後的事情,因爲當VM重新啓動時,IP地址會發生變化,我只需要在每個虛擬機上的一個地方更改它們。

相關問題