Support Questions

Find answers, ask questions, and share your expertise

Multi Host Nifi Cluster Deployment using Docker

avatar
Super Guru

Hi ,

I haven been playing with nifi on docker lately and its been quite the challenge and the learning experience. To best  understand how to utilize docker for nifi, Im hoping the community can help me with addressing the following observations\questions:

 

1- Most of the examples I found on the internet including the nifi official docker page seem to be suitable for single host deployment ! Im finding this is strange - unless Im missing something - but doesnt that defeat the purpose of having cluster with no single point of failure ? What are the the scenarios where someone wants to deploy single host multiple container cluster vs multiple host single container ?

 

2. Getting to understand docker networking I found that if I want to create multi host cluster and have the cluster to have visibility  to our work network then the ideal way to do it is using "host" networking,  is this correct or is there a better way (maybe using overlay networking with swarm? if I do that later then how Im going to access none docker servers on my network?

 

3. If "host" networking is one of the options, then why the official nifi docker image doent mention how to see the https host name as one of the environment propeties  similar to what we do locally by setting "nifi.web.https.host" in the nifi.properties ?  using other sites\images I found the property  "NIFI_WEB_HTTPS_HOST"  can be used fort that which works ! Is there another way of setting the host?

 

4. Initially I was trying to use  embedded zookeeper setup but I found that it doesnt work no matter how hard I tried. I found a lot people recommending using external zookeeper which what I ended up doing. Actually it turns  out there is Jira bug for the problem I was faciing but its not resolved despite its been open for couple years! Why is that and is it ever going to be fixed or the recommendation is to use external zookeeper? if so at least that should have been mentioned somewhere.

 

5. Are the environment variables listed in the official docker page cover everything or there is more?  where we can find comprehensive list of all the environment properties? I can see for example this image seem to list more env properties.

 

6. This is really important because I struggled the most with: How do we go about setting the nodes identity so that they are  included in the authorizers.xml file? I could not find any clear instruction on this and I was getting the "Untrusted Proxy ". The only way I was able to get it to work is to manually update this file (using docker cp) but I had to also delete the generated users.xml and authorizations.xml files while the container is running because it seems you cant do it while container is stopped. I dont think this is the proper way of doing it and I hope there is better way that can be done in the yml file itself.

 

I really appreciate the community feedback on this specially from the expert like @MattWho , @steven-matison, @pvillard 

Thanks

5 REPLIES 5

avatar
Super Guru

Hi ,

Im still looking for some help\guidance on this @MattWho , @steven-matison , @pvillard  , please. I also have another question regarding docker desktop:

 Is there any images out there or instructions to show if nifi cluster can be deployed on windows DockerDesktop under Host mode . I have been playing with for couple days and I could not get it to work. when I try to set the Load Balancer Host or the hTTPS Host to the host machine IP I keep getting "Cannot Bind this Address" error? If someone was able to do it or know how please please do share.

@VidyaSargur

 

avatar
New Contributor

Hi,

Did you ever get Docker to run NiFi on a non localhost setting "NIFI_WEB_HTTPS_HOST=" as your own hostname, preferably as a "Standalone Instance secured with HTTPS and Mutual TLS Authentication" as described in https://hub.docker.com/r/apache/nifi ?

I always get the error:

ERROR [main] org.apache.nifi.web.server.JettyServer Failed to start Server
java.io.IOException: Failed to bind to myhostname:8443/<unresolved>:8443

I also get the message

INFO [main] o.a.nifi.web.server.HostHeaderHandler 11 valid values for HTTP Request Host Header: 127.0.0.1, 127.0.0.1:8443, localhost, localhost:8443, [::1], [::1]:8443, c864f1c4159e, c864f1c4159e:8443, 172.17.0.2, 172.17.0.2:8443,

when I don't set my own host name, so it's setting a lot of host values and I can't tell if by my attempting to overwrite them with my host name that conflicts are occurring.

Thanks!

avatar
Community Manager

@ckumar @ArtiW @bbahamondes Hi! Do you have any insights here? Thanks!


Regards,

Diana Torres,
Community Moderator


Was your question answered? Make sure to mark the answer as the accepted solution.
If you find a reply useful, say thanks by clicking on the thumbs up button.
Learn more about the Cloudera Community:

avatar
Super Guru

Hi @Emery ,

Unfortunately no I have not been able to do it and if you are using windows docker desktop I don't think it can be done. One way around it is to use Nginx Reverse proxy but it's not easy process to follow and I wasn't able to implement either. If you are ever able to get it working please do share your findings.

avatar
New Contributor

Hi Samsal,

That's very unfortunate. I've attempted the Mac version. All examples I've found by others, whether written or on youtube, only demonstrate setting it up with a localhost. This slightly older example (https://www.youtube.com/watch?v=LanpbWR7Gv8) of using certificates with multiple users is great (it passes over a few minor modifications), and would be better if it also demonstrated setting it up using a host name other than localhost, because I can't think of a use case with multiple users calling localhost, however it doesn't make use of Docker either.

I hope someone else chimes in here and offers us some guidance for a very typical installation, in my opinion.

Thanks for your response!