DC/OS is composed of many open source microservice components meticulously tuned and configured to work together.
From the top, DC/OS is a batteries-included container platform that handles container orchestration, package management, and security.
From the bottom, DC/OS is an operating system built on top of Apache Mesos that handles cluster management and software defined networking while simplifying logging and metrics collection.
Cluster Management
DC/OS provides a way to view and operate a large number of individual machine-level systems as a single cluster-level system. It hides the complexity of Mesos, the distributed systems kernel, with higher level abstractions, interfaces, and tools. Cluster management is the core of that functionality, including the kernel, its dependencies, and its user interfaces.
Apache Mesos
Description: Mesos manages resources and tasks as a distributed systems kernel. Mesos Master exposes scheduler, executor, and operator interfaces to facilitate cluster management. Mesos Agent manages individual executors, tasks, and resources on each [DC/OS agent node](/1.9/overview/concepts/#dcos-agent-node). Mesos Agent Public is a Mesos Agent configured to run on [DC/OS public agent nodes](/1.9/overview/concepts/#public-agent-node).
System Service(s):
dcos-mesos-master.service
dcos-mesos-slave.service
dcos-mesos-slave-public.service
See Also: [Docs](http://mesos.apache.org/), [Source](https://github.com/apache/mesos)
Exhibitor and Apache Zookeeper
Description: Zookeeper stores cluster state. Exhibitor manages Zookeeper and provides a management web interface.
System Service(s):
dcos-exhibitor.service
See Also: [Exhibitor Source](https://github.com/Netflix/exhibitor), [Exhibitor Wrapper Source](https://github.com/mesosphere/exhibitor-dcos), [Zookeeper Docs](https://zookeeper.apache.org/), [Zookeeper Source](https://github.com/apache/mesos)
DC/OS Installer
Description: The DC/OS Installer (dcos_generate_config.sh) generates install artifacts and installs DC/OS. As part of the install process on each node, the DC/OS Download service downloads the install artifacts from the bootstrap machine and the DC/OS Setup service installs components using PkgPanda.
System Service(s):
dcos-download.service
dcos-setup.service
See Also: [Docs](/1.9/administration/installing/), [Source](https://github.com/dcos/dcos)
DC/OS GUI
Description: The DC/OS GUI (web interface) is a browser-based system dashboard and control center.
System Service(s): N/A – The GUI is served by Admin Router.
See Also: [Docs](/1.9/usage/webinterface/), [Source](https://github.com/dcos/dcos-ui)
DC/OS CLI
Description: The DC/OS CLI is a terminal-based remote client.
System Service(s): N/A – The CLI is a user downloadable binary.
See Also: [Docs](/1.9/usage/cli/), [Source](https://github.com/dcos/dcos-cli)
Container Orchestration
Container orchestration is the continuous, automated scheduling, coordination, and management of containerized processes and the resources they consume.
DC/OS includes built-in orchestration of the most commonly used high level container-based abstractions: jobs and services. Many use cases are handled directly by these basic abstractions, but they also enable the deployment of custom schedulers for tasks that require more flexible programmatic lifecycle management automation.
Marathon
Description: Marathon orchestrates long-lived containerized services (apps and pods).
System Service(s):
dcos-marathon.service
See Also: [Docs](https://mesosphere.github.io/marathon/), [Source](https://github.com/mesosphere/marathon)
Metronome
Description: Metronome orchestrates short-lived, scheduled or immediate, containerized jobs.
System Service(s):
dcos-metronome.service
See Also: [Docs](/1.9/usage/jobs/), [Source](https://github.com/dcos/metronome)
Container Runtimes
Container runtimes execute and manage machine level processes in isolated operating system level environments.
DC/OS supports multiple container runtimes using Mesos’ containerizer abstraction.
Mesos Container Runtime
Description: Mesos Container Runtime (Mesos Containerizer) is a logical component built-in to the Mesos Agent, not technically a separate process. It containerizes Mesos tasks with configurable isolators. Mesos Container Runtime is often called the Mesos Universal Container Runtime because it supports multiple image formats, including Docker images without using Docker Engine.
System Service(s): N/A – The runtime is part of Mesos Agent.
See Also: [Mesos Containerizer Docs](http://mesos.apache.org/documentation/latest/mesos-containerizer/)
Docker Engine
Description: Docker Engine is not installed by the DC/OS Installer, but rather is a system dependency that runs on each node. Mesos Agent also includes a separate logical component called Docker Containerizer which delegates the containerization of Mesos task to Docker Engine.
System Service(s):
docker.service
See Also: [Docker Containerizer Docs](http://mesos.apache.org/documentation/latest/docker-containerizer/), [Docker Engine Docs](https://docs.docker.com/engine/), [Docker Engine Source](https://github.com/docker/docker/)
Docker GC
NEW IN 1.9.0
Description: Docker GC periodically garbage collects Docker containers and images.
System Service(s):
dcos-docker-gc.service
dcos-docker-gc.timer
See Also: [Source](https://github.com/spotify/docker-gc)
Logging and Metrics
No software runs perfectly, especially not the first time. Distribute tasks across a cluster and the normal patterns of analyzing and debugging these services become tedious and painful. So DC/OS includes several components to help ease the pain of debugging distributed systems by aggregating, caching, and streaming logs, metrics, and cluster state metadata.
DC/OS Diagnostics
Description: The DC/OS Diagnostics service aggregates and exposes system component health. DC/OS Diagnostics is also known as DC/OS Distributed Diagnostics Tool (3DT).
System Service(s):
dcos-3dt.service
dcos-3dt.socket
See Also: [Source](https://github.com/dcos/3dt)
DC/OS Log
NEW IN 1.9.0
Description: The DC/OS Log service exposes component, container, and task logs.
System Service(s):
dcos-log-master.service
dcos-log-master.socket
dcos-log-agent.service
dcos-log-agent.socket
See Also: [Source](https://github.com/dcos/dcos-log)
Logrotate
Description: Logrotate manages rotation, compression, and deletion of historical log files.
System Service(s):
dcos-logrotate-master.service
dcos-logrotate-master.timer
dcos-logrotate-agent.service
dcos-logrotate-agent.timer
See Also: [Docs](http://www.linuxcommand.org/man_pages/logrotate8.html), [Source](https://github.com/logrotate/logrotate)
DC/OS Metrics
NEW IN 1.9.0
Description: The DC/OS Metrics service exposes host, container, and task metrics.
System Service(s):
dcos-metrics-master.service
dcos-metrics-master.socket
dcos-metrics-agent.service
dcos-metrics-agent.socket
See Also: [Source](https://github.com/dcos/dcos-metrics)
DC/OS Signal
Description: The DC/OS Signal service reports cluster telemetry and analytics to help improve DC/OS. Administrators can [opt-out of telemetry](/1.9/administration/installing/opt-out/#telemetry) at install time.
System Service(s):
dcos-signal.service
dcos-signal.timer
See Also: [Source](https://github.com/dcos/dcos-signal)
DC/OS History
Description: The DC/OS History service caches and exposes historical system state to facilitate cluster usage statistics in the GUI.
System Service(s):
dcos-history.service
See Also: [Source](https://github.com/dcos/dcos/tree/master/packages/dcos-history/extra)
Networking
In a world where machines are are given numbers instead of names, tasks are scheduled automatically, dependencies are declaratively defined, and services run in distributed sets, network administration also needs to be elevated from plugging in cables to configuring software-defined networks. To accomplish this, DC/OS includes a fleet of networking components for routing, proxying, name resolution, virtual IPs, load balancing, and distributed reconfiguration.
Admin Router
Description: Admin Router exposes a unified control plane proxy for components and services using [NGINX](https://www.nginx.com/). Admin Router Agent proxies node-specific health, logs, metrics, and package management internal endpoints.
System Service(s):
dcos-adminrouter.service
dcos-adminrouter-reload.service
dcos-adminrouter-reload.timer
dcos-adminrouter-agent.service
dcos-adminrouter-agent-reload.service
dcos-adminrouter-agent-reload.timer
See Also: [Source](https://github.com/dcos/adminrouter)
Mesos DNS
Description: Mesos DNS provides domain name based service discovery within the cluster.
System Service(s):
dcos-mesos-dns.service
See Also: [Docs](http://mesosphere.github.io/mesos-dns/), [Source](https://github.com/mesosphere/mesos-dns)
Spartan
Description: Spartan forwards DNS requests to multiple DNS servers. Spartan Watchdog restarts Spartan when it is unhealthy.
System Service(s):
dcos-spartan.service
dcos-spartan-watchdog.service
dcos-spartan-watchdog.timer
See Also: [Source](https://github.com/dcos/spartan)
Generate resolv.conf
Description: Generate resolv.conf configures network name resolution ([systemd-resolved](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html)) by updating /etc/resolv.conf to facilitate DC/OS’s software defined networking.
System Service(s):
dcos-gen-resolvconf.service
dcos-gen-resolvconf.timer
See Also: [Source](https://github.com/dcos/dcos/blob/master/packages/spartan/extra/gen_resolvconf.py)
Minuteman
Description: Minuteman provides distributed [Layer 4](https://en.wikipedia.org/wiki/Transport_layer) virtual IP load balancing.
System Service(s):
dcos-minuteman.service
See Also: [Docs](/1.9/usage/service-discovery/load-balancing-vips/), [Source](https://github.com/dcos/minuteman)
Navstar
Description: Navstar orchestrates virtual overlay networks using [VXLAN](https://en.wikipedia.org/wiki/Virtual_Extensible_LAN).
System Service(s):
dcos-navstar.service
See Also: [Source](https://github.com/dcos/navstar)
Erlang Port Mapping Daemon
Description: Erlang Port Mapping Daemon (EPMD) maps symbolic names to machine addresses, facilitating named virtual IPs.
System Service(s):
dcos-epmd.service
See Also: [Source](https://github.com/erlang/epmd)
Package Management
Just as machine operating systems need package management to install, upgrade, configure, and remove individual applications and services, a datacenter operating system needs package management to do the same for distributed services. In DC/OS there are two levels of package management: machine-level for components; and cluster-level for user services.
Cosmos
Description: Cosmos installs and manages DC/OS packages from [DC/OS package repositories](/1.9/usage/repo/), such as [Mesosphere Universe](https://github.com/mesosphere/universe).
System Service(s):
dcos-cosmos.service
See Also: [Source](https://github.com/dcos/cosmos)
Pkgpanda
Description: Pkgpanda installs and manages DC/OS components.
System Service(s):
dcos-pkgpanda-api.service
dcos-pkgpanda-api.socket
See Also: [Source](https://github.com/dcos/dcos/tree/master/pkgpanda)
IAM and Security
Identity management in DC/OS is delegated to external identity providers, taking advantage of existing infrastructure to reduce the cost and time to market. Security is provided via OAuth authentication and enforced at the edge by Admin Router’s reverse proxy.
DC/OS Authentication
Description: The DC/OS Authentication (OAuth) service authenticates users using [OpenID Connect](http://openid.net/connect/) and [Auth0](https://auth0.com/).
System Service(s):
dcos-oauth.service
See Also: [Source](https://github.com/dcos/dcos-oauth)
Storage
DC/OS provides multiple different ways to provision and allocate disk space and volumes to tasks. One of those methods, external persistent volumes, is managed by its own component.
REX-Ray
Description: REX-Ray orchestrates provisioning, attachment, and mounting of external persistent volumes.
System Service(s):
dcos-rexray.service
See Also: [Docs](http://rexray.readthedocs.io/), [Source](https://github.com/codedellemc/rexray)
Legacy Component Changes
The Cluster ID service was removed in DC/OS 1.9.0. The universally unique identifier (UUID) for each cluster is now generated by the DC/OS Setup service.
The Mesos Persistent Volume Discovery service was removed in DC/OS 1.9.0. Detection of mounted disk resources is now handled by the DC/OS Setup service.
Sockets and Timers
Several components are configured to use systemd sockets which allows them to be started on-demand when a request comes in, rather than running continuously and consuming resources unnecessarily. While these sockets are separate systemd units they are not considered separate components.
Several components are configured to use systemd timers which allows them to be periodically executed or restarted. Periodic execution avoids continuous execution and consuming resources unnecessarily. Periodic restarting allows for picking up new configurations from downstream dependencies, like time-based DNS cache expiration. While these timers are separate systemd units they are not considered separate components.
Component Installation
DC/OS components are installed, upgraded, and managed by pkgpanda, a package manager for systemd units.
To see the full list of packages managed by the DC/OS installer, see the packages directory of the DC/OS source repository.
Systemd Services
Most DC/OS components run as systemd services on the DC/OS nodes.
To see a list of the systemd components running on any particular node, list the contents of the /etc/systemd/system/dcos.target.wants/ directory or execute systemctl | grep dcos- to see their current status.
Master Node
Private Agent Node
Public Agent Node
The post Components appeared first on Mesosphere DC/OS Documentation.