summaryrefslogtreecommitdiffstats
path: root/platform_base_installation/consul.md
diff options
context:
space:
mode:
Diffstat (limited to 'platform_base_installation/consul.md')
-rw-r--r--platform_base_installation/consul.md44
1 files changed, 44 insertions, 0 deletions
diff --git a/platform_base_installation/consul.md b/platform_base_installation/consul.md
new file mode 100644
index 0000000..82f2f61
--- /dev/null
+++ b/platform_base_installation/consul.md
@@ -0,0 +1,44 @@
+### Consul configuration for ECOMP and DCAE controllers
+
+#### Version and source
+This installation uses Consul 0.8.3.
+
+Consul is an open source project, and it can be built from source. For this project, however, we are using a binary distribution provided by Hashicorp (the company responsible for Consul development), pulled from https://releases.hashicorp.com/consul/0.8.3/consul_0.8.3_linux_amd64.zip. The zip file contains a single file, the consul
+binary executable.
+
+
+#### How the installation works
+The installation is driven by a Cloudify blueprint ([`consul_cluster.yaml`](./consul_cluster.yaml)) with a set of inputs describing the OpenStack environment (typically generated by running the `configure-dcae` command as described in
+the [installation instructions](./install.md)).
+
+The blueprint creates three virtual machines, each running Ubuntu 16.04. The blueprint includes an initial shell script that runs when the VM is first booted (the so-called `cloud-init` script). This shell script:
+- creates the `/opt/consul/bin`, `/opt/consul/data`, and `/opt/consul/config`, and `/opt/consul/data` directories
+- installs the consul binary in `/opt/consul/bin/consul`.
+- creates a Consul configuration file and installs it in `/opt/consul/config/consul.json`.
+- creates a `systemd` unit file that contains instructions for starting Consul when the system boots and stores it in
+`/lib/systemd/system/consul.service`. The Consul software is started in `server` mode.
+- enables the Consul service so that `systemd` will start it on boot.
+- explicitly starts the Consul service.
+
+The blueprint launches two VMs in parallel. It does not attempt to launch the third VM until the first two have started and their private IP addresses are known.
+
+The initialization script for the third VM has one additional step, at the very end. The script issues a `consul join` command targeting the first two machines. This creates the cluster.
+
+After Cloudify finishes with the installation, the [`installer` script](./installer) waits for the Consul API to become available on the first Consul server, and then attempts to register Cloudify Manager as an [external service](https://www.consul.io/docs/guides/external.html) in Consul. It also puts the address of the first server into the `/opt/env.ini` file on the Cloudify Manager host. (It puts in one address to maintain consistency with the earlier installation process that installed a single Consul server in a Docker container. Certain plugins rely on this entry in `/opt/env.ini`, and they expect a single address. This will eventually change.)
+
+#### Managing Consul
+We don't anticipate a need for hands-on management of Consul. When a Consul VM is rebooted, Consul will start automatically and will rejoin the Consul cluster.
+
+If there's a need to look more closely at what's going on with a Consul VM, logging in and becoming root provides access to the `systemd` tools. In particular:
+
+- `systemctl stop consul` will stop the consul service.
+- `systemctl start consul` with start the consul service.
+- `journalctl -u consul` will show the log for the consul service.
+- `journalctl -u consul -f` will "tail" the log for the consul service.
+
+The crucial files for Consul are located in:
+- `/opt/consul/config/config.json` - the Consul configuration file. See the [Consul documentation of configuration options](https://www.consul.io/docs/agent/options.html).
+- `lib/systemd/system/consul.service` - the `systemd` unit file for the Consul service.
+- `/opt/consul/data` - directory where Consul stores its persistent data.
+
+Note that the Consul instances communicate with each other over the OpenStack private network--that is, they use private addresses, rather than the floating IP addresses, to contact each other.