Our society relies on software applications both in our private and professional lives. Many of these software applications are interconnected to create large-scale distributed systems. Unfortunately software applications fail frequently and the cost of the resulting downtime is high. Configuration errors cause many of these failures. Moreover, the services of a distributed system interact with and depend on many other services of the distributed system and the deployment environment, increasing the impact of configuration errors.The configuration of software, and especially distributed systems, consists of many configuration parameters that need to be consistent in the entire configuration: from the parameters in an end-user application, to the parameters in a network switch of the underlying infrastructure. Every update to the configuration needs to keep all configuration parameters consistent, otherwise failures and thus downtime occurs. Configuration management tools automate the configuration and reconfiguration of software applications and their execution environment. These tools use an input specification that models the desired state of the configuration, including interdependencies between configuration parameters.Unfortunately the current state of the art in configuration management cannot model an entire distributed system. Either the configuration is managed per device or per subsystem. Therefore, system administrators still need to duplicate configuration parameters with the risk of introducing inconsistencies.This dissertation introduces a framework for integrated configuration management. The input specification of the framework is an integrated modular configuration model that contains the entire configuration of an infrastructure: all devices, all subsystems and their interdependencies. The framework uses refinements to capture all levels of abstraction, including low-level configuration artifacts such as a configuration file on a machine, as well as architectural concepts such as high-availability services with failover and replication. The integrated configuration model supports capturing all relevant relations between configuration parameters in order to keep all parameters consistent after each change. The framework generates configuration artifacts and can enforce them on real infrastructures. System administrators can use the framework to port their current ad-hoc scripts to structured, repeatable and maintainable scripts. Developers of a configuration model can use software engineering methods such as modularity, reuse and refinement. The framework approach as well as these supported software engineering methods offer a principled approach to describe and enforce complex configuration updates.A prototype implementation and three case studies validate the feasibility of the framework. Additionally, the case studies demonstrate that the framework can: (a) fully automate the configuration of a complex distributed system and its execution environment, including provisioning the underlyingvirtual machines, (b) manage a heterogeneous infrastructure from an integrated configuration model, such as network equipment and servers, and (c) automate domain-specific allocation of configuration parameters such as dual stack IP subnet allocation.
展开▼