https://github.com/knehez/isi - folder example_2
HAProxy is an open-source software that provides High Availability services, load balancing, and proxying for TCP and HTTP-based applications. It is used to distribute incoming network traffic across multiple servers to improve performance, scalability, and reliability of applications. HAProxy acts as a reverse proxy, meaning that it receives requests from clients and forwards them to the appropriate server based on various criteria such as load balancing algorithms, server health checks, and session persistence.
docker-compose.yml
version: "3.3" services: web: build: . ports: - "5000" redis: image: "redis:alpine" haproxy: image: "haproxytech/haproxy-alpine:2.4" volumes: - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro depends_on: - web ports: - "80:80"
HAproxy config:
The following configuration sets up HAProxy to listen on port 80 for incoming HTTP traffic and distribute it across five backend servers that are checked for health before traffic is forwarded. It also sets up a stats interface on port 8404 to monitor the HAProxy instance.
global stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners log stdout format raw local0 info defaults mode http timeout client 10s timeout connect 5s timeout server 10s timeout http-request 10s log global frontend stats bind *:8404 stats enable stats uri / stats refresh 10s frontend myfrontend bind 0.0.0.0:80 mode http default_backend webservers backend webservers server s1 web:5000 check server s2 web:5000 check server s3 web:5000 check server s4 web:5000 check server s5 web:5000 check
This is a sample HAProxy configuration that defines various global settings, default settings, and frontend/backend configurations. Here's an explanation of each section:
How to run?
docker-compose up --scale web=4