Skip to content

Virtual Cluster Architecture

This section describes the architecture of the Virtual Cluster up to the operating system level. This includes the configuration of the virtual network, storage, routing, network access control and management of the instances constituting the dynamic part of the Virtual Cluster. A Virtual Cluster contains at least * a service instance, * a frontend instance, * an auto-scaled backend with either session instances or compute instances or both.

Network Setup#

A Virtual Cluster is comprised of instances that are grouped into subnets related to their purpose. Each Virtual Cluster has one “frontend” subnet and can one or more “backend” subnets. Instances in the “frontend” subnet are meant to be accessible to systems which are not part of the Virtual Cluster whereas systems in the “backend” subnet(s) are not accessible directly.

./images/architecture-networking.png
Instances and subnets which are part of a Virtual Cluster.

Subnets#

  • frontend - The “frontend” subnet contains all instances which allow for incoming connections, potentially have a public IP address and, a DNS name which can be resolved by public DNS servers. The “frontend” instance located in this network serves as gateway to the Virtual Cluster, i.e., all incoming and outgoing network traffic is routed through this instance.
  • backend - The “backend” subnet(s) contains all instances which provide infrastructure-related services to the scalable backend of the cluster shown at the right-hand side of the above image or to instances in the public subnet. The number of backend subnets depends on the geographical distribution of the Virtual Cluster. A system which spans multiple availability zones or even regions has more than one “backend” subnet.

Storage Configuration#

Several block storage devices are attached to the instances of the Virtual Cluster. These devices serve the following purpose:

  • Operating System and Local Configuration Files - The block storage used for the root file system (mounted on /) stores the local program files, program libraries, and local configuration files.
  • Local Scratch Space - The block storage used to store temporary files during a computation is mounted on (/scratch) on each instance except the “service” instance.
  • Home Directories and Data Storage - The block storage holding the user data is assigned to the “service” instance, which shares it with all other instances using NFS. The home directories can be used to store data which needs to be accessible by all instances of a Virtual Cluster.
  • Jobserver Data Storage - The block storage holding the job database and file store of the Schrödinger job orchestration system is attached to the “frontend” instance.
  • Persistent Data Storage - The block storage device holding data that represent modifications made to the system after the initial deployment, e.g., user account creation. This allows for restoring the state even when a system is redeployed, e.g., user accounts which existed previously get recreated with the same user IDs.