I am looking into building up a network of Windows machines into a cloud-like offering. There will be multiple services and applications hosted on these machines, and with growing load additional machines need to be added and run additional instances of these scalable services and applications. With services I mean e.g. web services, resources that can be consumed by other systems. With applications I mean independently running processes that act on their own (and may consume web services).
You rightfully may ask why I won't just use a PaaS offering like Windows Azure, which does all that for me. The reason is that I need to use physical machines, e.g. to make use of GPU capabilities, which is still a very poorly developed and expensive offering in the cloud.
What I would like this "fabric" management software to do is
- Monitor existing instances (up/down status, load, resource usage, etc.).
- Deploy and activate/deactivate services and applications.
- Ideally, it could manage multiple versions of those services and applications so that I can quickly roll back from new to previous versions in case of quality issues.
- I'm pretty sure such a solution requires an agent running on each machine, which is fine, but it would be nice if this agent-based fabric is firewall-friendly (e.g. only need to open up one port).
Any ideas? Am I asking for the moon?