Page tree
    Skip to end of metadata
    Go to start of metadata

    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.

    • No labels