The Dominator is a robust, reliable and efficient system to push operating system images to large fleet of machines (physical or virtual). The design target is that a single system and administrator can manage the content of at least 10,000 systems with negligible performance impact on the managed systems, fast response to global changes and nearly atomic changes on those systems.
The Dominator takes a radically different approach from to fleet management based on three principles:
immutable infrastructure
golden “baked” images
fast, robust transitions.
Rather than package management, the Dominator uses an image management and deployment approach.
Please see https://github.com/Cloud-Foundations/Dominator for the source code, design document, fact sheet and user guide.
The system is comprised of the following components:
an Image Server which stores images which include:
file-system trees
trigger lists which describes which services/daemons should be restarted if specified files change
a filter which lists regular expression pathnames which should not be changed
references to computed files which are dynamically generated
a Machine DataBase (MDB) which lists all the machines in the fleet and the name of the required image that should be on each machine (an enhancement is a secondary planned image for each machine)
a controller (master) system called the Dominator which;
continuously polls each sub for it’s file-system state
computes differences with the required image
directs deviant subs to fetch files from an Image Server and update its file-system
zero or more File Generator servers which serve computed file data based on the MDB data for a particular machine
a slave agent on each machine in the fleet called the subject daemon (subd) which continuously checksum scans the root file-system with built-in rate limiting so as to avoid impacting system workload
The following diagram shows how these components are connected: