이야기박스

로드밸런서 inline/dsr 모드 및 remote-addr 구하기 본문

Computer & Data/Network

로드밸런서 inline/dsr 모드 및 remote-addr 구하기

박스님 2020. 6. 15. 12:34
반응형

# 개요

소프트웨어 개발자라면 누구나 사용해 보았을 로드밸런서, 그리고 로드밸런서를 지나쳐 온 요청에서 Client IP를 구하는 내용을 포스팅으로 정리해보겠습니다.

 

인프라 전문가가 아닌, 이용자의 시선에서 포스팅을 작성하였고 예제로 사용된 코드는 자바 언어를 사용하고 있지만 수도 코드에 가깝습니다.

 

# 로드밸런서란?

서버 부하 분산을 위해 사용하는 것

 

대부분 L7 로드밸런서를 사용하지만 이전에는 L4를 많이 사용하였다고 합니다. 여기서 L7/L4는 OSI Layer를 의미합니다.

OSI Layer가 궁금하시다면 이야기박스의 OSI 7 Layer 포스팅을 참고 해주세요~

 

L4와 L7은 모두 IP와 Port를 이용하여 로드 밸런싱을 하지만 L7 로드밸런서에서는 추가적으로 패킷의 정보를 이용한다고 합니다. GET/POST와 같은 Method나 프로토콜을 이용하여 밸런싱이 가능한 것 같습니다.

 

추가적으로 L4에서는 LB는 Client의 요청을 Application 계층으로 전달만 하게 되지만, L7에서는 Server 측과 별도의 TCP 세션을 생성하고 데이터를 중계하게 됩니다.

 

위와 같은 작업으로 Mega Proxy Problem을 해소할 수 있다고 하네요.

Mega Proxy Problem

 

# LB Mode

Client IP주소를 변경하게 되는 Inline(Proxy) 모드와 출발지/목적지 IP 주소를 변조하지 않는 DSR(Direct Server Return) 모드 크게 두 가지로 생각하면 쉬울 것 같습니다.

 

(이외에도 Router Mode, One Arm Mode 등.. 많은 모드가 있는 것 같습니다. 인프라 전문가가 아니다 보니,, 위 두 개만 이해하고 넘어가려고 합니다.)

 

Inline / DSR 모드에 따라서 각각 어떠한 방법으로 Client IP (Remote Addr)을 획득할 수 있는지 알아보도록 하겠습니다.

 

# DSR 모드에서 Client IP 획득하기

IP를 변조하지 않으니, Request의 Attribute에서 바로 획득이 가능합니다.

# Example
clientIp = request.getRemoteAddr();

 

# Inline 모드에서 Client IP 획득하기

XFF(X-Forwarded-For)와 같은 헤더로부터 IP를 획득이 가능합니다. 위 헤더는 로드밸런서에서 등록해준 HTTP 헤더로부터 확인이 가능합니다.

# Example
clientIp = request.getHeader("X-Forwarded-For");

 

# 참조

https://travelc.tistory.com/82

 

[System Network] L4 Mode비교(Inline vs DSR) 및 설정하기

Overview 서비스(웹서버) Load Balancing을 위한 매커니즘으로 구성환경에 따라 L4Inline Mode 또는 DSR Mode를 사용합니다. Inline vs DSR 구성 보통 서비스에서는 Inbound Traffic 대비 Outbound Traffic이 월..

travelc.tistory.com

 

https://medium.com/@pakss328/%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%84%9C%EB%9E%80-l4-l7-501fd904cf05

 

로드밸런서란?(L4, L7)

서버 부하 분산을 위해 로드밸런서를 이용한다. 근래들어 L7을 많이 이용하고 이전에 많이 사용하던 장치는 L4였다. 추상적으로만 알고 있던 L7과 L4에 대해 정리를 해보았다.

medium.com

 

http://blog.plura.io/?p=6597

 

X-Forwarded-For(XFF) 란?

X-Forwarded-For(XFF) 란? XFF는 HTTP Header 중 하나로 HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준입니다. 웹 서버나 WAS 앞에 L4 같은 Load balancers 나 Proxy server, caching server 등의 장비가 있을 경우 웹��

blog.plura.io

 

반응형