상세 컨텐츠

본문 제목

25.03.05. Longest Match Rules, 로드밸런서 구성하기

AWS CLOUD SCHOOL 9기

by AI Engineer crystal 2025. 3. 5. 23:26

본문

Longest Match Rules

네트워크 라우팅 및 방화벽에서 중요한 역할을 하며, 주어진 목적지 IP 주소에 대해 가장 긴 접두사를 가진 규칙이나 경로를 선택합니다. 이를 통해 네트워크에서 보다 세부적인 제어를 할 수 있고, 충돌을 최소화하여 효율적인 트래픽 흐름과 보안을 구현할 수 있습니다.

[user1@rocky1 ~]$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  _gateway (192.168.0.1)  37.176 ms  37.128 ms  37.052 ms
 2  118.218.200.1 (118.218.200.1)  36.902 ms  48.635 ms  36.653 ms
 3  100.73.21.97 (100.73.21.97)  36.535 ms  48.255 ms  48.146 ms
 4  10.44.249.10 (10.44.249.10)  53.950 ms 10.44.249.22 (10.44.249.22)  36.080 ms 10.44.249.18 (10.44.249.18)  35.964 ms
 5  10.222.18.128 (10.222.18.128)  35.845 ms 10.222.18.146 (10.222.18.146)  35.754 ms 10.222.18.136 (10.222.18.136)  35.645 ms
 6  10.222.8.187 (10.222.8.187)  47.335 ms 10.222.8.191 (10.222.8.191)  44.841 ms 10.222.8.187 (10.222.8.187)  44.669 ms
 7  209.85.149.104 (209.85.149.104)  75.046 ms 142.250.162.182 (142.250.162.182)  74.917 ms 142.250.163.66 (142.250.163.66)  74.773 ms
 8  * * 192.178.110.61 (192.178.110.61)  74.345 ms
 9  dns.google (8.8.8.8)  74.307 ms 64.233.175.247 (64.233.175.247)  74.211 ms  74.099 ms

[user1@rocky2 ~]$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  _gateway (211.183.3.2)  2.448 ms  2.379 ms  2.346 ms
 2  * * *
 3  * * *

 

Three shake hands

  1. client IP(1.1.1.1)이 web으로 SYN 보냄 ⇒ TCP를 사용하여 보냄 SYN 0번
    • TCP: mtu 사이즈(인터페이스를 통과가능한 단위: 1500byte)로 signal에 번호를 담아 보냄, 연결을 지향
    • UDP: 번호를 매기지 않아 단방향으로 무조건 밀어넣음
  2. web은 ACK 수신하였다는 신호로 ACK 1번 보내면서 SYN 0번을 보냄
  3. client가 이에 ACK 1번 보내면서 session이 형성됨

http

  1. method: GET ⇒ client가 web에게 데이터 요청 + window size(사이즈에 맞게 확인 후 ack 요청)
  2. well known port: ~65535번까지 사용
  3. web에서는 IP(192.16.8.1)를 먼저 통과해서 port(80: http, 22: ssh)를 향해 감
  4. 80 port를 통과한 뒤 /var/www/html 로 넘어감
  5. 167 line에 있는 DirectoryIndex에 있는 파일들을 순서대로 찾아가며 반환해서 보여줌

로드밸런서 구성하기

  1. HAProxy
  2. Nginx
  3. ALB, NLB @ AWS
    1. ALB(Application LB): http/https → IP, TCP(Port 번호 등), Data를 확인 가능
      1. host: www.test.com
      2. full request uri: www.test.com/blog, www.test.com/news
    2. NLB(Network LB) → IP, TCP(Port 번호 등) 확인 가능
dnf -y install haproxy
vi /etc/haproxy/haproxy.cgf
systemctl start haproxy

global  # HAProxy 시스템에 대한 설정값
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy  
   stats timeout 30s
   user haproxy    
   group haproxy   
   daemon         

defaults
   log global  # 로그정보는 global 을 따른다
   mode http              # tcp 를 사용하는 로드밸런싱 모드
   option httplog        # 기본 로그는 SIP, DIP
   option dontlognull    # 스캔등에 대한 정보는 로그화하지 않음
   timeout connect 5s  # 백엔드 서버로 연결 시도 시 최대 5초 대기
   timeout client 1m  # 클라이언트가 1분 동안 아무런 데이터도 보내지 않으면 연결 종료
   timeout server 1m  # 서버가 1분 동안 응답하지 않으면 연결 종료

frontend http_front
   bind *:80
   stats uri /haproxy?stats  #<http://lb주소>(211.186.3.101)/haproxy?stats 에서 확인
   default_backend http_back

backend http_back
   balance roundrobin
   server rocky2.crys.pri 211.186.3.102:80 check
   server rocky3.crys.pri 211.186.3.103:80 check

관련글 더보기