Product description

HAProxy is free, open source software that provides a high availability load balancer and proxy server for TCP and HTTP-based applications that spreads requests across multiple servers.

Architecture

HAProxy  uses the following conceptual model:

  • Frontend instance (n) <-> (n) Backend instance <-> (n) Server
    or
  • Listen instance (n) <-> (n) Server

This model translates into the BMC Discovery load balancer model:

  • Frontend instance -> Load Balancer Service
  • Listen instance -> Load Balancer Service and Load Balancer Pool
  • Backend instance -> Load Balancer Pool
  • Server -> Load Balancer Member

Load Balancer Model

 

The HAProxy_LoadBalancer pattern builds the BMC Discovery load balancer model based on additional details obtained via ssh.

All the information about configured elements is obtained from the main configuration file haproxy.cfg (location is obtained from the main process arguments)

The HAProxy software loadbalancer is modeled as a Software Instance  linked to a Load Balancer Instance.


HAProxy3.png

Software Instance Triggers

 

PatternTrigger NodeAttributeConditionArgument
HAProxy_LoadBalancerDiscoveredProcesscmdmatchesunix_cmd "haproxy"


Versioning

Active

HAProxy_LoadBalancer pattern will run "haproxy -v" command

Package

HAProxy_LoadBalancer pattern will look for the package matching regex "haproxy$"

Modeled Components

Software Instance

The pattern creates a Software Instance with the following attributes:

AttributesValue
keyA hash of the host key and load balancer type.
typeA software instance  type.
nameA %si_name% %product_version% on %host.name%.
versionA version of the software instance.

Load Balancer Instance

The pattern creates a Load Balancer Instance with the following attributes:

AttributesValue
keyA hash of the device key and load balancer type.
typeA load balancer type.
nameA %LB_TYPE% on %host.name%.
versionA version of the software instance.

The pattern models a network service relationship between the Software Instance and the Load Balancer Instance.

Load Balancer Service

The pattern creates a Load Balancer Service with the following attributes:

AttributesValue
key

A hash of the front end or listen node name , ip address, and port.

nameA front end or listen node name.
ip_addrA front end or listen node IP address.
portA front end or listen node port.
protocolA front end or listen node protocol type.
stateA front end or listen node state.
dns_namesA dns name of a front end or listen node IP address.
_config_hashContains a hash of the front end or listen node name, IP address, port, ,protocol.

The pattern models a containment relationship between the Load Balancer Instance and a Load Balancer Service.

The pattern also models a containment relationship between the Load Balancer Service and a Load Balancer Pool.

Load Balancer Pool

The pattern creates a Load Balancer Pool with the following attributes:

AttributesValue
keyA hash of the backend or listen name and host key.
nameA pool name.
protocol

A protocol used.

algorithmA algorithm used.
_config_hashContains a hash of the pool name, state mode  and algorithm.

The pattern models a containment relationship between the Load Balancer Instance and a Load Balancer Pool.

Load Balancer Member

The pattern creates a Load Balancer Member  for every server and populates the following attributes:

AttributesValue
key

A hash name, IP address and port of the real server.

ip_addrA server IP address.
portA server port.
nameA server name.

The pattern models a containment relationship between the Load Balancer Pool and a Load Balancer Member.

Was this page helpful? Yes No Submitting... Thank you
  • No labels
© Copyright 2019 BMC Software, Inc.