OpenAperture

Cloud Application Management Platform

OpenAperture is a free, open-source hybrid cloud management platform that delivers software quickly and consistently regardless of location or workload. This future-ready platform from Lexmark Enterprise Software provides a comprehensive management system to handle the six pillars of cloud management – provisioning, deployment, monitoring, maintenance, security and metering.


Communication / Messaging


OpenAperture is designed to work in a centralized Cloud as well as on-premesis, as one fluid system. As such, a communication protocol was needed that could communicate with Etcd Clusters that lived publically privately. With the exception of the REST interface defined in Manager, all components communicate with each other via the AMQP protocol. The current implementation is built on top of federated RabbitMQ clusters, but that's not required.


Terminology

Messaging provides the following abstractions:



In the event of a loss of connection to a Broker, Messaging will attempt several reconnects before attempting to connect to the failover Broker/Exchange. If you have specifying a failover Broker, be sure that the broker has the designated failover Exchange present.

In OpenAperture terms, Brokers are the gateway to Exchanges. Exchanges can be considered “geographies”. If using RabbitMQ, the brokers may be federated, but that’s not a requirement of the overall system. By default, Messaging assumes that every Exchange is accessible by any other Exchange directly. However, that’s clearly not going to work for everyone; if you are running a separate Broker (i.e. a Broker on a customer site, in a separate data center, etc…), you simply need to specify a Messaging Exchange Broker relationship so that Messaging knows how to resolve to the correct connection options.

RabbitMQ Configuration

Currently configuration must be setup in AMQP first, and then mirrored into OpenAperture before OA attempts to connect (i.e. exchanges and queues are not automatically declared). Exchanges may be defined to meet the needs of your system, but the following structure is recommended. Each System Component has at least one queue that must be defined in AMQP. The following AMQP queues are utilized by OpenAperture:


Here’s an example configuration that could be created for AWS:


System Components on startup are configured to register themselves with a Broker and Exchange (specified in the environment config).

When a message is published, it’s published to a specific broker and exchange combination. Modules resolve their connection options dynamically by looking up their current Broker (source Broker) and Exchange (source Exchange) and comparing to the new Exchange (target Exchange). When publishing to an exchange, the “root exchange” is used. For example, if you specify a hierarchy looking like:



The message will be published to exchange AWS, with a routing key:

When subscribing to messages, the components will use the queue name specified in the environment config to receive messages.