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.
HAProxy uses the following conceptual model:
This model translates into the BMC Discovery 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.
Pattern | Trigger Node | Attribute | Condition | Argument |
---|---|---|---|---|
HAProxy_LoadBalancer | DiscoveredProcess | cmd | matches | unix_cmd "haproxy" |
HAProxy_LoadBalancer pattern will run "haproxy -v" command
HAProxy_LoadBalancer pattern will look for the package matching regex "haproxy$"
The pattern creates a Software Instance with the following attributes:
Attributes | Value |
---|---|
key | A hash of the host key and load balancer type. |
type | A software instance type. |
name | A %si_name% %product_version% on %host.name%. |
version | A version of the software instance. |
The pattern creates a Load Balancer Instance with the following attributes:
Attributes | Value |
---|---|
key | A hash of the device key and load balancer type. |
type | A load balancer type. |
name | A %LB_TYPE% on %host.name%. |
version | A version of the software instance. |
The pattern models a network service relationship between the Software Instance and the Load Balancer Instance.
The pattern creates a Load Balancer Service with the following attributes:
Attributes | Value |
---|---|
key | A hash of the front end or listen node name , ip address, and port. |
name | A front end or listen node name. |
ip_addr | A front end or listen node IP address. |
port | A front end or listen node port. |
protocol | A front end or listen node protocol type. |
state | A front end or listen node state. |
dns_names | A dns name of a front end or listen node IP address. |
_config_hash | Contains 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.
The pattern creates a Load Balancer Pool with the following attributes:
Attributes | Value |
---|---|
key | A hash of the backend or listen name and host key. |
name | A pool name. |
protocol | A protocol used. |
algorithm | A algorithm used. |
_config_hash | Contains 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.
The pattern creates a Load Balancer Member for every server and populates the following attributes:
Attributes | Value |
---|---|
key | A hash name, IP address and port of the real server. |
ip_addr | A server IP address. |
port | A server port. |
name | A server name. |
The pattern models a containment relationship between the Load Balancer Pool and a Load Balancer Member.