Bobcares

HAproxy option Redispatch | Guide

by | Sep 11, 2023

Learn more about HAProxy option redispatch from our experts. Our HAProxy Support team is here to help you with your questions and concerns.

HAProxy option Redispatch | Guide

In today’s digital age, high availability and fault tolerance for APIs is very important.

Many of our customers have had frustrating moments when an API goes down, leaving them with error messages and disruptions.

HAproxy option Redispatch | GuideTo avoid these issues, we can use Postgres BDR. It is a multi-master database system that can reduce single points of failure.

Today, we are going to take a look at how to achieve fault tolerance while optimizing the efficiency of database caching with HAProxy.

When designing an API the goal is to minimize the risk of single points of failure. With Postgres BDR, we can establish two backend servers, each residing on a separate physical host and with its own database. This setup offers redundancy and resilience to our API infrastructure.

However, there’s a catch. It is better to keep most API requests on one server as long as it’s available. After all, it helps make database caching more efficient.

The standard way to achieve this in HAProxy is by designating one backend server as a “backup.” Here’s how it is usually configured:


Backup server

However, during software releases or updates, when we take down one server and then the other, clients may run into 503 errors. This occurs even if there is always at least one backend server available.

Identifying the Problem

Our experts investigated this issue further by creating a client-side Bash script to simulate continuous API requests:

while true; do curl http://host/api/v1/system/health; sleep 0.5; done

In fact, during rolling updates across the servers, 1 or 2 requests consistently failed with HTTP 503 errors. This was unexpected since the “option redispatch” in HAProxy should have rerouted failed requests to the other server.

It turns out that this feature doesn’t work as expected when one backend is designated as a backup.

The Solution: Removing the Backup Option

Our experts then resolved the issue by removing the backup designation:

The Solution: Removing the Backup Option

Now, the rolling updates will work smoothly without any HTTP 503 errors.

However, we do not want requests distributed evenly between both backends.

We can achieve this with a stick-table and a server1 with a higher weight:

HAproxy option redispatch

This offers successful rolling updates of the backend servers without any HTTP 503 errors.

In brief, achieving fault tolerance for our API infrastructure is key to providing a seamless user experience.

By carefully configuring HAProxy and Postgres BDR, we can minimize the risk of downtime and maintain efficient database caching.

With the stick-table and weighted load balancing technique, we have the tools to create a robust and resilient API environment that can withstand rolling updates and maintain uninterrupted service.

[Need assistance with a different issue? Our team is available 24/7.]

Conclusion

In brief, our Support Techs demonstrated how to use the HAproxy option redispatch to deal with rolling updates and maintain uninterrupted service.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Never again lose customers to poor
server speed! Let us help you.