Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Installing AppFormix for OpenStack in HA


HA Design Overview

AppFormix Platform can be deployed to multiple hosts for high availability (HA). Platform services continue to communicate using an API proxy that listens on a virtual IP address. Only one host will have the virtual IP at a time, and so only one API proxy will be the “active” API proxy at a time.

The API proxy is implemented by HAProxy. HAProxy is configured to use services in active-standby or load-balanced active-active mode, depending on the service.

At most, one host will be assigned the virtual IP at any given time. This host is considered the “active” HAproxy. The virtual IP address is assigned to a host by keepalived, which uses VRRP protocol for election.

Services are replicated in different modes of operation. In the “active-passive” mode, HAProxy sends all requests to a single “active” instance of a service. If the service fails, then HAProxy will select a new “active” from the other hosts, and begin to send requests to the new “active” service.In the “active-active” mode, HAProxy load balances requests across hosts on which a service is operational.

AppFormix Platform can be deployed in a 3-node, 5-node, or 7-node configuration for high availability.


Each host, on which AppFormix Platform is installed, has the following requirements.

Hardware Requirements

  • CPU: 8 cores (virtual or physical)

  • Memory: 32 GB

  • Storage: 100 GB (recommended)

Software Requirements

  • Docker 17.03.1-ce, installed on the Platform Host(s).

  • Python "docker" package 3.7.1, installed on the Platform Host(s).

  • Ansible 2.3.0 - 2.7.6, installed on a host that has SSH access to Platform Hosts and compute hosts to which AppFormix will be deployed.

  • httplib2 must be installed on the host where Ansible is executed.


  • One virtual IP address to be shared among all the Platform Hosts. This IP address should not be used by any host before installation. It should have reachability from all the Platform Hosts after installation.

  • Dashboard client (in browser) must have IP connectivity to the virtual IP.

  • IP addresses for each Platform Host for installation and for services running on these hosts to communicate.

  • keepalived_vrrp_interface for each Platform Host which would be used for assigning virtual IP address. Details on how to configure this interface is described in the sample_inventory section.

  • The installer node needs to download the following packages from

    • appformix-openstack-images-<version>.tar.gz

    • appformix-platform-images-<version>.tar.gz

    • appformix-dependencies-images-<version>.tar.gz

AppFormix Agent Supported Platforms

AppFormix Agent runs on a host to monitor resource consumption of the host itself and the virtual machines and containers executing on that host.

  • Ubuntu 14.04

  • Red Hat Enterprise Linux 7.1

  • Red Hat Enterprise Linux 6.5, 6.6

  • CentOS 7.1

  • CentOS 6.5, 6.6

Installing AppFormix for High Availability

To install AppFormix to multiple hosts for high availability:

  1. Install Ansible on the installer node. Ansible will install docker and docker-py on the appformix_controller.

    For Ansible 2.3:

  2. Install python and python-pip on all the Platform Hosts so that Ansible can run between the installer node and the appformix_controller node.
  3. Install python pip package on the hosts where AppFormix Agents run.
  4. To enable passwordless login to all Platform Hosts by Ansible, create an SSH public key on the node where Ansible playbooks are run and then copy the key to all the Platform Hosts.
  5. Use the sample_inventory file as a template to create a host file. Add all the Platform Hosts and compute hosts details.

    Note: In the case of 5-node or 7-node deployment, list all the nodes under appformix_controller.

  6. At top-level of the distribution, create a directory named group_vars and then create a file named all inside this directory.

    Add the following entries to the newly created all file:


    In AppFormix version 3.2.0, support for monitoring Openstack Octavia LoadBalancer services has been added. To enable this service monitoring, provide Octavia service's endpoint as variable appformix_octavia_endpoint_url in the group_vars/all file. For example:

  7. Copy and source the openrc file from the OpenStack controller node (/etc/contrail/openrc) to the AppFormix Controller to authenticate the adapter to access admin privileges over the controller services.
  8. Run Ansible with the created inventory file.
  9. If running the playbooks as root user then this step can be skipped. As a non-root user (for example. “ubuntu”), the user “ubuntu” needs access to the docker user group. The following command adds the user to the docker group.

If step 8. is being done with offline installation and failed due to step 8. not being done, then the appformix *.tar.gz need to be removed from the /tmp/ folder on the appformix_controller node. This is the workaround required as of version 2.11.1.