2017-09-15 6 views
0

저는 apache-nifi를 사용하고 있으며, 공용 DNS 이름을 사용하지 않는 구성 파일에 웹 서버를 시작할 때 주소에 바인드 할 수없는 것으로 보입니다. DNS 이름이 해석하는 IP 주소를 사용하면 작동하지 않습니다. 마찬가지로 /etc/hosts에 할당 된 호스트 별칭을 사용하면 작동하지 않습니다. 각각의 경우에 nifi 로그에서 요청 된 주소를 할당 할 수 없다는 내용의 부두가 던진 예외가 표시됩니다.nifi가 요청한 주소를 할당 할 수 없습니다.

netstat으로 확인한 것과 DNS 이름을 사용할 때 주소에 바인딩 오류가 없음으로 포트에서 수신 대기중인 것이 없습니다. 디자인에 의한 것입니까, 아니면 잘못된 것입니까?

다음은 내 설정의 세부 사항입니다. (실제로 nifi 클러스터를 실행하고 있으며 임베디드 사육사도 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을 지정하면 성공합니다.

1.2.3.4 nifi-1 

을 내가 nifi.properties에 nifi.web.http.host=nifi-1을 지정하고 다시 바인드 실패 : 다음과 같이 그럼 내가 /etc/hosts에 항목을 만들었습니다.

편집 : 여기에 스택 추적

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

Question 게시글을 편집하고 스택 추적을 추가했습니다. – MidnightJava

+0

어쩌면 다른 IP로 해결 된 'dns-abc'VM에 있을까요? – daggett

답변

0
VM이 클라우드에서 실행

가 로컬 IP 주소에 자신의 공개 DNS 이름을 확인하고, VM 외부 서버는 VM의 공용 IP에 같은 이름을 확인할 수있어 주소. config는 서버가 바인드 할 로컬 IP 주소를 지정해야하며 클러스터의 다른 호스트는 원격으로 연결해야하는 호스트 주소와 동일한 구성된 노드 이름을 사용하기 때문에 같은 DNS 작동만으로 작동합니다 이.

각 시스템에서 /etc/hosts을 수정하여 자체 이름을 로컬 IP 주소로, 클러스터의 다른 호스트를 공용 IP 주소로 확인합니다. 그런 다음 모든 사육사 및 nifi 구성 파일에 대해 호스트 이름을 /etc/hosts에서 사용할 수있었습니다. 이것은 VM이 다시 시작될 때 IP 주소가 변경되어 각 VM의 단일 위치에서 변경하기 만하면되기 때문에 내가 한 것입니다.