728x90
<심화 :: HAproxy ACL 조건 설정>
- ACL 조건: 특정 조건에 따라 요청을 필터링하고, 특정 동작을 취할 수 있도록 하는 규칙들의 목록 (경로 세부 설정)
1. haproxy.cfg 편집
ubuntu@host1:~/Labs/ch05$ cp haproxy.cfg haproxy1.cfg
>> 기존 haproxy.cfg 내용을 옮기고 새로 haproxy.cfg 생성
ubuntu@host1:~/Labs/ch05$ vi haproxy.cfg
<vi 편집내용>
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 :80
default_backend webservers
>> 80번 포트로 신호가 들어오면
myfrontend라는 이름을 가진 프론트엔드로 가서 default_backend webservers가 반응을 할 거임.
** 특정 경로 설정
acl echo-web1-item path_beg /item
acl echo-web2-item path_beg /item
acl echo-web3-basket path_beg /basket
acl echo-web4-basket path_beg /basket
use_backend echo-web1_backend if echo-web1-item
use_backend echo-web1_backend if echo-web2-item
use_backend echo-web2_backend if echo-web3-basket
use_backend echo-web2_backend if echo-web4-basket
>>echo-web1_backend에는 echo-web1-item / echo-web2-item가 있고
echo-web2_backend에는 echo-web3-basket / echo-web4-basket가 있음.
backend webservers
balance roundrobin
server s1 echo-web1-item:5678 check
server s2 echo-web2-item:5678 check
server s3 echo-web3-basket:5678 check
server s4 echo-web4-basket:5678 check
>> balance roundrobin에는 echo-web1 ~ echo-web4를 사용할 것임.
backend echo-web1_backend
server s1 echo-web1-item:5678 check
server s2 echo-web2-item:5678 check
>> echo-web1_backend에는 echo-web1-item / echo-web2-item가 있고
backend echo-web2_backend
server s3 echo-web3-basket:5678 check
server s4 echo-web4-basket:5678 check
>> echo-web2_backend에는 echo-web3-item / echo-web4-item가 있음.
>> 라운드로빈 로드밸런싱 방식을 이용하는데,
답변을 하는 서버는 echo-web1~echo-web4 모두 들어감.
echo-web1 / echo-web2는 item이고
echo-web3 / echo-web4는 basket이라
/item으로 시작하는 경로는 echo-web1 / echo-web2로 가고
/basket로 시작하는 경로는 echo-web3 / echo-web4로 감.
2. echo-web 도커 컨테이너 생성 및 구동
- echo-web1 / echo-web2는 item echo-web3 / echo-web4는 basket
ubuntu@host1:~/Labs/ch05$ docker run -d -p 6001:5678 --net=proxy-net --name=echo-web1-item hashicorp/http-echo -text="echo-web1-item"
598a7fd79944732dfae3a31bf9265cb537b25c2531aed7c4312cfb38bf1d4af9
ubuntu@host1:~/Labs/ch05$ docker run -d -p 6002:5678 --net=proxy-net --name=echo-web2-item hashicorp/http-echo -text="echo-web2-item"
e05672fcdf0dadc124609400fe15406770124c9cd36eb0fc78e606e71449fc95
ubuntu@host1:~/Labs/ch05$ docker run -d -p 6003:5678 --net=proxy-net --name=echo-web3-basket hashic
orp/http-echo -text="echo-web3-basket"
bd288a8230c136d748c3ea2fb50c7d0bc9cd180145680f98c428781b5086e604
ubuntu@host1:~/Labs/ch05$ docker run -d -p 6004:5678 --net=proxy-net --name=echo-web4-basket hashic
orp/http-echo -text="echo-web4-basket"
3. 컨테이너 가동 및 목록 확인
ubuntu@host1:~/Labs/ch05$ docker container run -d --name=haproxy-container --net=proxy-net -p 80:80
-p 8404:8404 -v $(pwd):/usr/local/etc/haproxy:ro haproxytech/haproxy-alpine:2.5
3fbe576f54a8713206cc3187aca63248d2f6fc4f29aea19d94c410c905e6ed20
<컨테이너 목록 확인>
ubuntu@host1:~/Labs/ch05$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fbe576f54a8 haproxytech/haproxy-alpine:2.5 "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8404->8404/tcp, :::8404->8404/tcp haproxy-container
fc36f9434108 hashicorp/http-echo "/http-echo -text=ec…" About a minute ago Up About a minute 0.0.0.0:6004->5678/tcp, :::6004->5678/tcp echo-web4-basket
bd288a8230c1 hashicorp/http-echo "/http-echo -text=ec…" About a minute ago Up About a minute 0.0.0.0:6003->5678/tcp, :::6003->5678/tcp echo-web3-basket
e05672fcdf0d hashicorp/http-echo "/http-echo -text=ec…" 2 minutes ago Up 2 minutes 0.0.0.0:6002->5678/tcp, :::6002->5678/tcp echo-web2-item
598a7fd79944 hashicorp/http-echo "/http-echo -text=ec…" 4 minutes ago Up 4 minutes 0.0.0.0:6001->5678/tcp, :::6001->5678/tcp echo-web1-item
4. HAproxy 결과 확인
/item으로 시작하는 경로는 echo-web1_backend로 라우팅되고,
/basket으로 시작하는 경로는 echo-web2_backend로 라우팅되도록 ACL이 설정
- basket 확인
ubuntu@host1:~/Labs/ch05$ curl localhost/basket
echo-web3-basket
ubuntu@host1:~/Labs/ch05$ curl localhost/basket
echo-web4-basket
- item 확인
ubuntu@host1:~/Labs/ch05$ curl localhost/item
echo-web1-item
ubuntu@host1:~/Labs/ch05$ curl localhost/item
echo-web2-item
'클라우드 + DevOps > Docker' 카테고리의 다른 글
Docker :: 컨테이너 볼륨volume 개념과 실습 (0) | 2024.02.26 |
---|---|
Docker :: 컨테이너CPU 자원 한계 설정 (1) | 2024.02.25 |
Docker 네트워크 실습 :: HAproxy 구성 (0) | 2024.02.23 |
Docker 네트워크 실습 :: NginX 컨테이너 리버스 프록시 구성 (0) | 2024.02.22 |
Docker 네트워크 실습 :: NginX 리버스 프록시 구성 (0) | 2024.02.21 |