Load balancing
Octopus Deploy can work with any http/https load balancer technology. There are plenty of options when it comes to choosing a load balancer to direct user traffic between each of the Octopus Server nodes.
Load Balancer Basics
Octopus Server provides a health check endpoint for your load balancer to ping: /api/octopusservernodes/ping
.
Making a standard HTTP GET
request to this URL on your Octopus Server nodes will return:
- HTTP Status Code
200 OK
as long as the Octopus Server node is online and not in drain mode. - HTTP Status Code
418 I'm a teapot
when the Octopus Server node is online, but it is currently in drain mode preparing for maintenance. - Anything else indicates the Octopus Server node is offline, or something has gone wrong with this node.
The Octopus Server node configuration is also returned as JSON in the HTTP response body.
We typically recommend using a round-robin (or similar) approach for sharing traffic between the nodes in your cluster, as the Octopus Web Portal is stateless.
Each node in the cluster keeps a local cache of data including user permissions. There is a known issue that occurs when a users permissions change. The local cache is only invalidated on the node where the change was made. This will be resolved in a future version of Octopus.
To work around this issue, you can configure your load balancer with session persistence. This will ensure user sessions are routed to the same node.
All package uploads are sent as a POST to the REST API endpoint /api/[SPACE-ID]/packages/raw
. Because the REST API will be behind a load balancer, you'll need to configure the following on the load balancer:
- Timeout: Octopus is designed to handle 1 GB+ packages, which takes longer than the typical http/https timeout to upload.
- Request Size: Octopus does not have a size limit on the request body for packages. Some load balancers only allow 2 or 3 MB files by default.
Third Party Load Balancers
This section contains information on how to set up third-party load balancers for use with Octopus High Availability:
- Using NGINX as a reverse proxy with Octopus
- Using IIS as a reverse proxy with Octopus
- Configuring Netscaler
Need support? We're here to help.