The hypervisor

JVMd is a system daemon for managing virtual servers on a host using open source Linux/KVM. Some open source components are modified for better integration with JVM.
JVM communicates with a frontend solution and a shared database between all hosts in the clusters.
It will also communicate directly with another JVM host in case of storage migration or VM migration.


JVM is divided into clusters which may or may not be based on regions, datacenters or countries.
There are no requirements. Hosts in the same cluster can be placed anywhere in the world, but typically one would make a cluster for each city or datacenter.


Frontends

JVM has an client API which in turn are used by frontend solutions.
At present time we have made four different frontend solutions.
  1. A REST-based API service for VM automation. https://webapp.udc.no/api
  2. A more traditional VPS control panel web site. https://mail.jcloud.no/admin_vps
  3. A web shop for ordering VPS and other services. https://skyen.cloud/
  4. A more modern (work-in-progress) all-in-one webshop and VPS control panel. https://my.klikk.com/

The web shops are using the REST API to create VMs.


Security

Security precautions are done by not implementing functionality to delete any data in JVMd.  The data is instead moved to a trash-folder internally by a JVM host. After a specified amount of time, the trash-folder is emptied by the host itself and no others.
Communication between JVM hosts and frontends are done using TLS. This includes also remote KVM to virtual machines.
The network the hosts are operating management on should of course be on a firewalled network.