Agent auto-detect #3536
Replies: 3 comments
-
I like the idea. When I first introduced agents, I spent a lot of time examining broadcast protocols for automating discovery, but I was not very successful. I hold two principles for Dozzle:
Regarding your solution 1, there are two problems:
However, this would lead to performance issues because Dozzle would need to ping every IP in that range, and each ping has associated latency. If there is a better way to implement agent discovery, I would love to explore it. I just can't think of any. Agents can run on different hosts and networks, making it difficult for them to discover each other. |
Beta Was this translation helpful? Give feedback.
-
All valid points. Another way I can think of is, since the agent assignment already has 2 ways of doing things (command line args and ENV), how about a third, an That really isn't "automatic" but it would be more manageable for a user with have a lot of agents. |
Beta Was this translation helpful? Give feedback.
-
What's your use case? How many agents do you have? User config is complex so it makes sense to a have file. Agents are just comma separated. I was playing around with https://github.com/schollz/croc for a while. It uses a public relay unfortunately but it works. Dozzle could do something similar where agents are registered. Do you know what podman does? I don't use it but that is the only other similar tool that has a agent. Personally, I am pretty tight on time so if comma separated works, then I'd say that's good enough until agent config gets more complicated. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Describe the feature you would like to see
Right now you add agents to the host or principal device via the
DOZZLE_REMOTE_AGENT
ENV. For multiple agents, you comma separate them.However, if you have a lot of agents, this can get out of hand.
It would be nice if the agents/principal could automatically find each other.****
Describe how you would like to see this feature implemented
I can think of a few ways to do this, but the easier way is to have the agent contact the principal.
DOZZLE_REMOTE_PRINCIPAL
that is used by the agent. It includes the URL of the principal (e.g,http://192.168.1.2:8080
).DOZZLE_REMOTE_AGENT
array/list and connects per normal.That way when I add a new Dozzle agent to the system, I don't have to edit the principal's compose.yaml and restart it (adding the agent's IP to a long list of IPs), instead I just have to point the agent to principal.
This is similar to traefik's labels but on different non-swarm nodes.
The connection is non-persistent. When you restart the principal you lose all the agents (not imported via the principal's
DOZZLE_REMOTE_AGENT
ENV), and it is up to the agent to repeat step #2.Describe any alternatives you've considered
Alternatively, the
DOZZLE_REMOTE_AGENT
ENV could accept an IP range (e.g.,192.168.1.0/24:7007
) and the principal could poll the range to see if an agent exists. Again, adding any found to the internal representation of theDOZZLE_REMOTE_AGENT
ENV.Beta Was this translation helpful? Give feedback.
All reactions