KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm building a monitoring tool in Erlang . When run on a cluster, it should run a set of data collection functions on all nodes and record that data using RRD on a single "recorder" node. The current version has a supervisor running on the master node ( rolf_node_sup ) which attempts to run a 2nd supervisor on each node in the cluster ( rolf_service_sup ). Each of the on-node supervisors should then start and monitor a bunch of processes which send messages back to a gen_server on the master node ( rolf_recorder ). This only works locally. No supervisor is started on any remote node. I use the following code to attempt to load the on-node supervisor from the recorder node: rpc:call(Node, supervisor, start_child, [{global, rolf_node_sup}, [Services]]) I've found a couple of people suggesting that supervisors are really only designed for local processes. E.g. Starting processes at remote nodes how: distributed supervision tree What is the most OTP way to implement my requirement to have supervised code running on all nodes in a cluster? A distributed application is suggested as one alternative to a distributed supervisor tree. These don't fit my use case. They provide for failover between nodes, but keeping code running on a set of nodes. The pool module is interesting. However, it pr
Tags (comma-separated)
Save Edits
Cancel