<commit_before>---
post_title: "An Introduction to DC/OS Components"
nav_title: Components
menu_order: 4
---
The DC/OS core components are individual services that work together to provide a single datacenter operating system. The kernel of DC/OS is [Apache Mesos](http://mesos.apache.org/) but the DC/OS is actually made up of *many* more services, including a native Marathon instance to manage processes and installable services, and Mesos-DNS for service discovery.

If you log into any host in the DC/OS cluster, you can view the currently running services by inspecting `/etc/systemd/system/dcos.target.wants/`.

```
ip-10-0-6-126 system # ls dcos.target.wants/
dcos-adminrouter-reload.service  dcos-exhibitor.service        dcos-marathon.service
dcos-adminrouter-reload.timer    dcos-gen-resolvconf.service   dcos-mesos-dns.service
dcos-adminrouter.service         dcos-gen-resolvconf.timer     dcos-mesos-master.service
dcos-cluster-id.service          dcos-history-service.service  dcos-minuteman.service
dcos-cosmos.service              dcos-keepalived.service       dcos-signal.service
dcos-ddt.service                 dcos-logrotate.service        dcos-signal.timer
dcos-epmd.service                dcos-logrotate.timer          dcos-spartan.service
```

## Admin Router Service
The admin router is our core internal load balancer that provides central authentication and proxy to DC/OS services within the cluster. Admin Router is a customized [Nginx](https://www.nginx.com/resources/wiki/) which allows us to proxy all the internal services on port `80`.


```
[Unit]
Description=Admin Router: A high performance web server and a reverse proxy server
After=dcos-gen-resolvconf.service
ConditionPathExists=/var/lib/dcos/cluster-id

[Service]
Restart=always
StartLimitInterval=0
RestartSec=5
EnvironmentFile=/etc/environment
EnvironmentFile=/opt/mesosphere/environment
Type=forking
PIDFile=/opt/mesosphere/packages/adminrouter--1ec9969794ff4fcbde235d029652679b6a51e51e/nginx/logs/nginx.pid
PrivateDevices=yes
StandardOutput=journal
StandardError=journal
ExecStartPre=/bin/ping -c1 ready.spartan
ExecStartPre=/bin/ping -c1 marathon.mesos
ExecStartPre=/bin/ping -c1 leader.mesos
ExecStart=/opt/mesosphere/packages/adminrouter--1ec9969794ff4fcbde235d029652679b6a51e51e/nginx/sbin/nginx
ExecReload=/usr/bin/kill -HUP $MAINPID
KillSignal=SIGQUIT
KillMode=mixed
```

## Cluster ID Service
The Cluster ID service allows us to generate a UUID for each cluster. If enabled, we can then use this ID to monitor cluster health remotely. This remote tracking allows our support team to better assist customers.

The cluster-id service runs an internal tool called `zk-value-consensus` which uses our internal ZooKeeper to generate a UUID that all the masters agree on. Once an agreement is reached, the ID is written to disk at `/var/lib/dcos/cluster-id`. We write it to `/var/lib/dcos` so the ID is ensured to persist cluster upgrades without changing.

```
[Unit]
Description=Cluster ID: Generates anonymous DC/OS Cluster ID
[Service]
Type=oneshot<commit_msg>changed tracking to telemetry<commit_after>---
post_title: "An Introduction to DC/OS Components"
nav_title: Components
menu_order: 4
---
The DC/OS core components are individual services that work together to provide a single datacenter operating system. The kernel of DC/OS is [Apache Mesos](http://mesos.apache.org/) but the DC/OS is actually made up of *many* more services, including a native Marathon instance to manage processes and installable services, and Mesos-DNS for service discovery.

If you log into any host in the DC/OS cluster, you can view the currently running services by inspecting `/etc/systemd/system/dcos.target.wants/`.

```
ip-10-0-6-126 system # ls dcos.target.wants/
dcos-adminrouter-reload.service  dcos-exhibitor.service        dcos-marathon.service
dcos-adminrouter-reload.timer    dcos-gen-resolvconf.service   dcos-mesos-dns.service
dcos-adminrouter.service         dcos-gen-resolvconf.timer     dcos-mesos-master.service
dcos-cluster-id.service          dcos-history-service.service  dcos-minuteman.service
dcos-cosmos.service              dcos-keepalived.service       dcos-signal.service
dcos-ddt.service                 dcos-logrotate.service        dcos-signal.timer
dcos-epmd.service                dcos-logrotate.timer          dcos-spartan.service
```

## Admin Router Service
The admin router is our core internal load balancer that provides central authentication and proxy to DC/OS services within the cluster. Admin Router is a customized [Nginx](https://www.nginx.com/resources/wiki/) which allows us to proxy all the internal services on port `80`.


```
[Unit]
Description=Admin Router: A high performance web server and a reverse proxy server
After=dcos-gen-resolvconf.service
ConditionPathExists=/var/lib/dcos/cluster-id

[Service]
Restart=always
StartLimitInterval=0
RestartSec=5
EnvironmentFile=/etc/environment
EnvironmentFile=/opt/mesosphere/environment
Type=forking
PIDFile=/opt/mesosphere/packages/adminrouter--1ec9969794ff4fcbde235d029652679b6a51e51e/nginx/logs/nginx.pid
PrivateDevices=yes
StandardOutput=journal
StandardError=journal
ExecStartPre=/bin/ping -c1 ready.spartan
ExecStartPre=/bin/ping -c1 marathon.mesos
ExecStartPre=/bin/ping -c1 leader.mesos
ExecStart=/opt/mesosphere/packages/adminrouter--1ec9969794ff4fcbde235d029652679b6a51e51e/nginx/sbin/nginx
ExecReload=/usr/bin/kill -HUP $MAINPID
KillSignal=SIGQUIT
KillMode=mixed
```

## Cluster ID Service
The Cluster ID service allows us to generate a UUID for each cluster. If enabled, we can then use this ID to monitor cluster health remotely. This remote telemetry allows our support team to better assist customers.

The cluster-id service runs an internal tool called `zk-value-consensus` which uses our internal ZooKeeper to generate a UUID that all the masters agree on. Once an agreement is reached, the ID is written to disk at `/var/lib/dcos/cluster-id`. We write it to `/var/lib/dcos` so the ID is ensured to persist cluster upgrades without changing.

```
[Unit]
Description=Cluster ID: Generates anonymous DC/OS Cluster ID
[Service]
Type=oneshot
{'fraction_non_alphanumeric': 0.08082124816685678, 'fraction_numerical': 0.02183477269023953, 'mean_word_length': 4.356020942408377, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '88970', 'n_tokens_mistral': 1944, 'n_tokens_neox': 1805, 'n_words': 588}