The DC/OS installation is multi-stage with many moving parts.
- Node machines are created and provisioned (master, agent-private, agent-public)
- Nodes are given IPs and added to a shared network
- SSH keys are updated
- SSL certificate authorities are updated
- Docker is configured to allow insecure registries (if configured)
- Boot machine is created and provisioned
- Bootstrap Exhibitor (Zookeeper) is started
- Nginx is started to host generated node config artifacts
- Private Docker registry is started (if configured)
- Java runtime is copied from host and installed (if configured)
- DC/OS release (
dcos_generate_config.sh
) is copied from host
- DC/OS pre-install
- DC/OS release config (
config.yaml
&ip-detect
) is generated from list of active nodes - DC/OS node config artifacts (
dcos_install.sh
& tarballs) are generated from the release and release config
- DC/OS release config (
- DC/OS install
- Node config artifacts are distributed to the nodes and installed (based on node type)
- DC/OS systemd services are started on the nodes
- DC/OS post-install
- Exhibitor starts, brings up Zookeeper
- Mesos Master starts up and registers with Zookeeper
- Mesos DNS detects Mesos Master using Zookeeper and initializes
leader.mesos
- Root Marathon detects
leader.mesos
and starts up- Root Marathon registers with the leading Mesos Master
- AdminRouter (nginx) detects
leader.mesos
starts up- DC/OS, Mesos, Marathon, and Exhibitor UIs become externally accessible
- Mesos Slaves detect
leader.mesos
and start up- Mesos Slaves register with the leading Mesos Master
- DC/OS Nodes become visible in the DC/OS UI
Ideally deployment and installation failures will be visible in the vagrant output, but sometimes failures occur in the background. This is especially true for systemd components that come up concurrently and wait for dependencies to come up.
To interrogate the system, it's possible to ssh into the machines using vagrant ssh <machine>
and view the logs of all system components with journalctl -f
.