Skip to content

HAProxy

Balance Options

로드 밸런싱의 경우 round robin 방식을 일반적으로 사용한다. 옵션에 적용할 수 있는 로드 밸런싱 알고리즘은 아래와 같다.

roundrobin
순차적으로 분배 (최대 연결 가능 서버 4128개) / 각 서버는 가중치에 따라 차례로 사용됨 / 처리시간이 균등하게 분산 되어 있을 때 가장 공정한 알고리즘
static-rr
서버에 부여된 가중치에 따라서 분배
leastconn
접속수가 가장 적은 서버로 분배
source
운영중인 서버의 가중치를 나눠서 접속자 IP를 해싱(hashing)해서 분배
uri
접속하는 URI를 해싱해서 운영중인 서버의 가중치를 나눠서 분배(URI의 length or depth로 해싱)
url_pattern
HTTP GET 요청에 대해서 특정 패턴이 있는지 여부 확인 후 조건에 맞는 서버로 분배 (조건 없음 -> roundrobin)
hdr
HTTP 헤더 에서 hdr(<name>)로 지정된 조건이 있는 경우에 대해서만 분배 (조건 없음 -> roundrobin)
rdp-cookie
TCP 요청에 대한 RDP 쿠키에 따른 분배

Using Docker Swarm

versions: '3'

services:
  dockerexample:
    image: neonkid/dockerexample
    ports:
      - 3000
    environments:
      - SERVICE_PORTS=3000
    deploy:
      replicas: 20
      update_config:
        parallelism: 5
        delay: 10s
      restart_policy:
        condition: on-failure
        max_attempts: 3
        window: 120s
    networks:
      - web

  proxy:
    image: dockercloud/haproxy
    depends_on:
      - dockerexample
    environment:
      - BALANCE=leastconn
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 80:80
    networks:
      - web
    deploy:
      placement:
        constraints: [node.role == manager]

networks:
  web:
    driver: overlay

Swarm HAProxy Ingress

See also

Favorite site