CRPQ Checkpointing System for AWS is a php/python environment for checkpointing and restoring instances on AWS. It is based around the follow scripts:
cron_checkpoint.phpThis script is triggered periodically by a cron job and check the SQL database to see if an instance needs to be checkpointed. If it detects an instance which needs to be checkpointed it attachs a volume to the instance, triggers the local checkpointing script (checkpointProcess.py) and creates an AMI of the instancecron_restore.phpThis script is triggered periodically by a cron job and checks if an instance which should be active (via the database) have failed and restores the instance by starting a new instance attaching the volume which contains the process memory and running the restore scripts (restoreProcess.py and restoreDocker.py)CRPQ.phpThis script triggers checkpoints periodically based upon a queueing system which uses probability of failure and cost of the instance as inputs. Checkpoints are triggered via the SQL databasecheckpointProcess.pyThis script checkpoints local processes using CRIUrestoreProcess.pyThis script restores local processes using CRIUrestoreDocker.pyThis script restores local Docker Containers using CRIU Experimentalconfiguration_checkpoint.phpThis file contains configuration information for the database, mailing system and AWScriu_ssh_restore_expect.shBash script for polling an instance to determine if it has been restored so the restoreProcess.py script can be triggered.
CRIU is used for the checkpointing and restoration of processes.