HAProxy is an open-source load balancer and proxy server that enables high availability and scalability for web applications. It can distribute traffic across multiple servers and monitor their health to ensure that requests are always routed to healthy servers. HAProxy is widely used by companies of all sizes to improve the performance and reliability of their web applications.
HAProxy (AlmaLinux 8)
- OS: almalinux 8
Description
Software included
Package | Version |
---|---|
Haproxy | latest |
Docker | 3.20.10 |
Docker compose | 2.12.2 |
containerd.io | 1.6.10 |
Initial start of the service
This application uses Docker to provide faster startup of the adjacency software (HAProxy) and direct use of it. This eliminates the need to familiarize yourself with its specifics in terms of configuration and installation. To start working directly with the application you need to modify your HAProxy configuration file in /opt/haproxy/conf/haproxy.cfg
and restart the running docker service. Once you've done this, you can visit the IP address that's assigned to your virtual machine in your browser to see the configuration changes you've made.
Note: By default, HAProxy can be accessed directly by IP address. To start using HAProxy with your real domain, you must first point the domain in question to your IP address and change the settings for where HAProxy opens from through its admin panel.
Quick settings and frequently asked questions
- Logging into the cloud service is done using an SSH key or password that you have specified.
- Docker is installed as recommended by the official docker documentation.
- The standard
docker
anddocker compose
commands are now available in this application. - When the virtual machine is first started, it takes a few minutes before a Docker container containing Haproxy is started.
- The Haproxy configuration file is located in
/opt/haproxy/conf/haproxy.cfg
. After modification, you need to restart the docker container with the commanddocker restart docker-haproxy-haproxy-1
for the changes to take effect. This configuration file is an example, and it will need to be configured according to your needs.
Working with Docker
The organization of this application is entirely done using Docker. In this way, we can provide you with ready-made applications faster. In addition, their configuration is more flexible and quite controllable. To be able to control this application, however, you need to know some basic Docker functionalities and features.
Restarting all services
Restarting the database and the Docker container that contains HAProxy itself along with the rest of the software can be done in two ways:
- By restarting the entire virtual machine
- Restarting the Docker containers, which is the faster option. To do this, access your machine via SSH, and run the following commands:
sudo su -
cd /opt/docker-haproxy/
docker compose restart
Recreating Docker containers
Recreation of a docker container may be necessary if you've changed the configuration inside the docker-compose.yml
file. If there are changes, please follow these steps:
cd /opt/docker-haproxy/
docker compose stop
docker compose up -d
Checking the status of the Docker application
To check, you need to run the following commands:
sudo su -
docker ps -a
Please pay attention to the STATUS
column. It should show how long the service has been running, for example Up X minutes
. If the status is Restarting
then you need to check what is wrong with the application. In such a case, you can check by following the application logs as follows:
- Get the application name that you can see in the
NAMES
column from the output of thedocker ps -a
command. View the logs with thedocker logs <NAME>
command, whereis the name of the container.
Changing settings
The settings in section Working with Docker can be set in the docker-compose.yml file. The path to it is described again in this section. To change a setting, open the configuration file and note the environment
section under haproxy
. Each configuration option must be described on a new line with a dash in front, as in the following example:
environment:
- ALLOW_EMPTY_PASSWORD=yes
Please note that the correct indentation (number of spaces) must also be observed, as this is important for yaml configuration files.