2017-09-15 19 views
0

私はapache-nifiを使用しています。設定ファイルでパブリックDNS名を使用しない限り、Webサーバーを起動するときにアドレスにバインドできません。 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

多分あなたのVMの 'dns-abc'が別のIPに解決されましたか? – daggett

答えて

0
VMをクラウドで実行されている

は、そのローカルIPアドレスに自分自身のためのパブリックDNS名を解決し、VMの外のサーバーはVMのパブリックIPに同じ名前を解決します住所。 configはサーバのバインド先のローカルIPアドレスを指定しなければならず、クラスタ内の他のホストはリモートに接続する必要のあるホストアドレスと同じ設定済みのノード名を使用するため、この。

各システムで/etc/hostsを変更して、ローカルIPアドレスとして自身の名前を、パブリックIPアドレスとしてクラスタ内の他のホストを解決しました。その後、すべてのzookeeperとnifi設定ファイルにホスト名を/etc/hostsから使用できました。これは、VMが再起動されたときにIPアドレスが変更され、各VM上の単一の場所で変更するだけで済むため、私が後にしたことです。

関連する問題