Multiple processing nodes

Dear all

First of all thanks a lot for all the work going behind ODM/webODM, it is incredible tool.

I am trying to host webODM in cloud server which has Ubuntu server 20.04.1 installed and has 12 cores.

I installed the webODM following the instructions here: https://github.com/OpenDroneMap/WebODM#run-it-on-the-cloud-google-compute-amazon-aws

I want to give access to multiple participants to process some data (training purpose).
For this what is the best solution?

I was wondering if having multiple nodes, and each node assigned to each participant is the right way?

There is an option called “–default-nodes” to assign number of nodes in the ./webodm.sh command.
So my question is if I create multiple processing nodes in the same machine, and multiple participants access them at the same time, will it work?

I tested for 2-5 logins at a time (different participant with unique processing nodes) and it seems to be working. But I could not find this detail in the documentation and worried, if it is a good approach?

Can anyone throw some light on this,

Many thanks in advance.
Best regards

Sajid
IHE Delft

1 Like

Sajid,

I have visited Delft a few times over the years, though I haven’t yet had the pleasure of visiting IHE Delft.

You bring up an interesting scenario, but offhand I wouldn’t bring up more than a couple of nodes on a single machine, unless that is an unusually large machine. But even then: it would be better to change the concurrency settings for that node rather than having lots of nodes on a single host.

What I think you want instead is to start WebODM on a modest, but not overly large machine. And then run ClusterODM. And then you have two options: you can spin up individual NodeODM instances that you connect in with ClusterODM, and let ClusterODM be your proxy and load balancer, or better yet, let ClusterODM automatically spin up resources on AWS that are needed at the time of the processing, and automatically destroy those resources in order to control your overall costs.

Best,
Steve

2 Likes

Hi Steve

Thank you for the detailed reply.

Before venturing ClusterODM, I was looking at the Concurrency setting with nodeODM, and I am stuck at connecting the separate processing node in webODM.

So I launched the webODM with --default-nodes 0, and launched the docker container for nodeODM separately using the following command.

docker run -d -p 3000:3000 opendronemap/nodeodm --max_concurrency 2 --max_images 1000000

Interestingly the processing node is available when I access it separately using the url “http://ip:3000”.
I could process some data too.

But when I try to add this processing node in webODM, I get the offline error “ip:3000 seems to be offline.”

I am logged in with super user permissions.

What could be going wrong here?

Many thanks for the support.

Regards

Sajid

1 Like

It could a lot of different things, but the place to start is to make sure you have the correct external IP (not the docker IP). So if your host IP is 192.168.0.5, then your address for the node will be that, with port 3000. It should look something like this:

image

I am trying with the external IP. And direct access to this processing node works.
But adding it in webODM doesn’t.

Can you cURL or wget from the machine that WebODM runs on to the address, e.g. wget 192.168.0.5:3000?

yes

wget myip:3000

works in the same machine also from another machine outside the network, if thats what you meant.

Feel free to redact, but can you screenshot your process of adding a node from start through failure?

Sure.

In the server start the docker instance for processing node using following command

docker run -d -p 3000:3000 opendronemap/nodeodm --max_concurrency 2 --max_images 1000000

Then in chrome I can access this processing node and successfully completed two tasks. See below the screenshot.

Then I am trying to add this processing node in webODM. So I launched webODM using the below command (Note that WebODM is in the same server as processing node with same external IP)

./webodm.sh restart --media-dir /mnt/mapdata/dronepilot --default-nodes 0

Then I accessed the WebODM UI in browser:

Then I added the processing node as given below:

image

But then I am getting the below shown error that the processing node is offline, which surprisingly can be accessed directly using the url - http://myip:3000

Thanks again for your time looking into this.

It looks like the error is related to having processing node and webODM in the same server.
I could successfully add another processing node in a different server with different external IP in webODM.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.