Idiomatic way to create dispatch system?

I am trying to create a dispatcher where a job is created by the user and sent to a node on the cluster based on information about the nodes known by the dispatcher. My main problem is trying to design how the application should be structured and released. In general, I want the application running on a number of nodes, with the worker supervisor running on all nodes and the dispatcher server running on one node with failover to other nodes.

Is there a suggested way to do this? I am not sure on where to split the failed over vs distributed logic and how to structure the program.