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