We are limited by budget and so have only 3 servers. We expect to get 1 more server at some point of time.
Meanwhile with 3 server we are left out with 2 options:
- On all 3 machines, install both server and clients: We get 3 servers & 3 clients
- Set 1 machine for server and other 2 as client agents.
Which set up is optimal?
(each machine will have 32gb/4cpu)
Can I question the 3 server constraint? I understand budgeting limits, but why not run three small, low cost machines as Nomad servers and then run 2-3 bigger (but not as big as 32gb/4cpu) machines as clients?
For production setups, you should really run Nomad servers and clients separately. That way you don’t have to do extra configuration on your container runtime to make sure that workloads can’t starve the control plane of resources. While a Nomad agent can run as both a server and a client, that’s not really recommended for production, as workloads should not be colocated with the control plane (and it’s the same way with Kubernetes).
In addition to @AdrienneCohea great comment, I will some other discussions around this topic:
In summary, it all depends on your specific requirements, and each choice presents their own trade-offs.
Co-locate servers and clients may impact each component performance and present a possible security issue since you will be allowing arbitrary workloads to run in servers through the clients.
Using a single server will impact your available and you will need to be extra careful with backups and restore.
You will need to asses these impacts and see which ones you are acceptable to your situation.