Hybrid Cloud Setup with Virtualmin – How to Integrate for Scalability and Redundancy?

Hello everyone,

I’m currently in the process of setting up a hybrid cloud infrastructure for a small business, and I’m hoping to leverage Virtualmin for managing the web servers. The goal is to maintain a local on-premises server while also utilizing cloud resources (AWS or DigitalOcean) for scalability and redundancy. However, I’m running into a few questions about the best practices for configuring Virtualmin in such an environment.

We are planning to host several websites on a single Virtualmin-managed server, with the primary web server located on premises. However, we also want to use a hybrid cloud model where cloud instances automatically scale up during traffic spikes, and fallback to the on-premise server in case of any cloud failure or performance degradation. For example, if the local server experiences high traffic or downtime, cloud-based resources should pick up the load seamlessly.

Here are a few of my questions:

  1. Cloud Integration: What are the best ways to integrate Virtualmin with cloud environments like AWS or DigitalOcean? I’m interested in setting up automatic backups to cloud storage as well as ensuring that additional virtual hosts are easy to add and manage across both environments.
  2. Load Balancing: Are there any recommended configurations for load balancing between the on-premises and cloud servers? Should I use a third-party load balancer, or can Virtualmin itself handle the routing?
  3. Failover Setup: What is the easiest way to set up failover between the local and cloud servers using Virtualmin? In case of server failure, I want the cloud resources to take over without any manual intervention.
  4. Performance Monitoring: Are there tools or integrations within Virtualmin that can help with monitoring the performance of both the local and cloud servers in a hybrid cloud setup? I want to keep track of server health and resource usage to make sure the load is distributed effectively.

Thanks in advance for your support!

  1. Cloud Storage Providers | Virtualmin — Open Source Web Hosting Control Panel
  2. Virtualmin does not provide any tools for load-balancing, aside from either web server supporting proxying, including in load balancing configurations (but Virtualmin does not automate that…you’d need to create your own configuration, either manually or via Server Templates).
  3. Probably DNS. Failover from one network to another is much more difficult to handle seamlessly than failover within a network you control. Again, Virtualmin doesn’t try to address the problem of failover.
  4. There are a variety of tools in Virtualmin and Webmin for status and resource usage monitoring (including graphs and alerts and such), but for a large distributed deployment, you may want something extra like Prometheus for metrics, Loki for log ingestion, and Grafana for charting.

I will also point out that failover and load balancing is a problem that involves your application(s) much more than Virtualmin, though you do need to sync the config files for the web server and applications across your nodes. The applications needs to be able to work in a load balanced configuration, which is often a big ask. Failover to a secondary, backup, node in the event of failure of the primary node is much simpler than load balancing, but still a little bit complicated to do in a way that is safe and doesn’t lose data. Mostly these questions are outside the control of Virtualmin (it’s about the apps and storage). Cloudmin-managed Virtualmin instances can have data synced across multiple Virtualmin machines, though it’s just a dumb copy…which you could also do with something like rsync.

And, again splitting across multiple networks makes it harder to do any of this stuff. A distributed filesystem, like ceph, works better with close nodes. Having a bunch of stuff in the cloud and a bunch of stuff locally is, by virtue of physics, going to be sluggish.

1 Like

By on-prem are you thinking of having the server at your offices? Another option would be to look at putting a server in a data center and co-locate or even rent a dedicated server?