# Load Balancer

A load balancer is required when operating Bindplane in high availability mode. Incoming collector and client requests will be distributed among all Bindplane servers.

### Prerequisites

The following requirements must be met by your load balancer choice:

* Support WebSocket connections
* Support TCP or HTTP load balancing
* Support TCP or HTTP health checks

### Installation

It is up to the user to deploy and manage the load balancer. If operating in a cloud environment, it is recommended that you use one of the following services.

* [Google Cloud Load Balancing](https://cloud.google.com/load-balancing?hl=en)
* [Amazon Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/)
* [Azure Load Balancer](https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-overview)

If running on-premise, we recommend:

* [HAProxy](https://www.haproxy.org/)
* [NGINX](https://www.nginx.com/)

### Configuration

The load balancer should be configured to balance requests between all of your Bindplane servers on port `3001`. If your load balancer supports sticky connections, enable it. If not, round-robin load balancing is supported.

Configure the health checks to target `/health` on port `3001`. When Bindplane is healthy, it will return a status `200 OK`.
