IT 엔지니어를 위한 네트워크

로드밸런서(Load Balancer) - Part 8(로드 밸런서 동작모드 3-DSR)

지기(ZIGI) 2024. 2. 6. 08:33

Today Keys : 로드밸런서, L4, L7, 부하분산, Load Balancer, Load Balancing, 동작 모드, DSR

본 포스팅은 'IT 엔지니어를 위한 네트워크 입문' [길벗] 서적에 포함된 '12. 로드밸런서'의 내용 중 소개 및 12.6장의 내용입니다


DSR 모드

  DSR(Direct Server Return)은 명칭 그대로 사용자의 요청이 로드 밸런서를 통해 서버로 유입된 후에 다시 로드 밸런서를 통하지 않고 서버가 사용자에게 직접 응답하는 모드입니다. 로드 밸런서에는 응답 트래픽이 유입되지 않으므로 사용자가 요청하는 패킷에 대해서만 관여합니다. DSR 모드는 응답할 때, 로드 밸런서를 경유하지 않으므로 원암으로 구성합니다.

DSR 모드는 L2 DSR과 L3 DSR로 구분되는데 L2 DSR은 실제 서버의 네트워크를 로드 밸런서 가 가진 경우이며 L3 DSR은 실제 서버의 네트워크 대역을 로드 밸런서가 가지지 않은 경우입니 다. 즉, 로드 밸런서에서 실제 서버까지의 통신이 L2 통신인지, L3 통신인지에 따라 L2 DSR과 L3 DSR로 나눌 수 있습니다.

 DSR 모드에서는 요청 트래픽만 로드 밸런서를 통해 흐르므로 로드 밸런서 전체 트래픽이 감소해 로드 밸런서 부하가 감소합니다. 특히 일반적인 서비스 트래픽인 경우, 서비스 요청 패킷보다 서 비스 응답 패킷의 크기가 더 크기 때문에 로드 밸런서의 트래픽 부하 감소에 효과적입니다. 응답 패킷의 크기가 클수록 이러한 부하 감소율은 더 커지게 되는데 예를 들어 사용자 요청에 의한 스 트리밍 서비스와 같이 응답 패킷의 트래픽이 서비스에 필요한 대역폭의 대부분을 차지하는 경우 에는 DSR 모드를 통해서 로드 밸런서를 경유하지 않고 응답 패킷의 트래픽을 전달하여 로드 밸런 서 부하 감소 효과를 극대화할 수 있습니다.

 반면, 이러한 효과가 있는 반면에 DSR 모드의 서비스 응답이 로드 밸런서를 경유하지 않으므로 문제가 발생했을 때, 문제 확인이 어렵습니다. 다른 동작 모드는 로드 밸런서 설정만 필요하지만 L2 DSR과 L3 DSR은 로드 밸런서 설정 외에 서버에서도 추가 설정이 필요합니다. L3 DSR은 윈 도 서버에서 지원하지 않으므로 서버팜에 윈도 서버가 있는 경우에는 L3 DSR을 사용할 수 없습 니다.

 

로드 밸런서가 서버 대역을 가지고 있으면 L2 DSR이고 없으면 L3 DSR이

 

여기서는 L2 DSR 기준으로 다룹니다.

DSR 모드는 다른 모드와 달리 서버에서도 추가 설정이 왜 필요한지 DSR 모드의 트래픽 흐름을 통해 알아보겠습니다.

사용자는 서비스 IP인 VIP로 서비스를 요청합니다.

로드 밸런서로 들어온 서비스 요청 패킷은 앞 에서 알아본 트랜스패런트나 라우티드 방식의 경우, 목적지 IP 주소가 로드 밸런서를 거치면서 실 제 서버의 IP로 Destination NAT가 되고 응답할 때는 다시 VIP로 Source NAT를 수행합니다.

하지만 DSR 모드에서는 아래 그림처럼 서버에서 로드 밸런서를 거치지 않고 응답해야 하므로 응답할 때, 로드 밸런서를 통한 출발지 IP를 변경하는 Source NAT를 수행할 수 없습니다.

DSR 모드에서는 서비스 응답 시 로드 밸런서를 경유하지 않으므로 응답 패킷에 대한 NAT 수행이 불가능하다

 

 Source NAT가 수행되지 않았기 때문에 사용자 입장에서는 서비스를 요청했던 IP 주소인 로드 밸런서의 서비스 VIP가 아닌 실제 서버 IP로 응답을 받습니다.

 요청했던 IP 주소와 응답을 해주 는 IP 주소가 다르기 때문에 사용자는 비정상적인 응답으로 간주하고 패킷을 처리하지 않습니다.

 그래서 DSR 모드인 경우, 로드 밸런서는 서비스를 요청할 때 목적지 IP는 실제 서버 IP로 변경하 지 않고 VIP 그대로 유지하고 목적지 MAC 주소만 실제 서버의 MAC 주소로 변경해 서버로 전송 합니다.

 서버에서는 해당 패킷을 수신할 때, 목적지 IP 주소가 서버의 주소와 맞지 않으면 폐기되 므로 루프백 인터페이스를 생성해 VIP 주소를 할당합니다.

 그리고 서비스 요청 트래픽이 들어오는 인터페이스에 설정한 IP가 아니므로 해당 인터페이스에 설정된 IP가 아닌 루프백에 설정된 IP 주소더라도 패킷을 수신할 수 있도록 설정합니다.

 마지막으로 이 VIP는 로드 밸런서와 동일한 IP 가 중복 설정된 상태이므로 ARP에 의해 중복된 IP에 대한 MAC이 갱신되지 않도록 서버에 설정 된 VIP에 대해서는 ARP 광고가 되지 않도록 합니다.

그럼 이제 DSR 모드의 실제 패킷 흐름을 살펴보겠습니다.

DSR 모드에서 서비스 요청 시의 패킷 흐름

 

사용자는 서비스 IP인 VIP 주소 10.10으로 서비스를 요청합니다.

로드 밸런서는 목적지 IP를 VIP 주소로 두고 목적지 서버의 MAC 주소만 변경해 실제 서버로 전송합니다.

실제 서버에서는 루프백 인터페이스에 VIP와 동일한 IP 주소가 설정되어 있고 목적지 IP가 이 루프백 IP와 동일한 경우에도 패킷을 수신합니다.

 

DSR 모드에서 서비스 응답 시의 패킷 흐름

 

DSR 모드의 응답은 로드 밸런서가 개입하지 않으므로 로드 밸런서를 사용하지 않는 일반 패킷과 유사하게 전달됩니다.

다만 출발지 IP가 서버의 인터페이스 IP 주소가 아닌 루프백 인터페이스의 IP 주소, 즉 사용자가 요청했던 VIP 주소로 설정해 패킷을 전송합니다.

 

앞에서 설명했듯이 DSR 모드를 사용하려면 서버에서도 다음과 같은 추가 설정이 필요합니다.

● 루프백 인터페이스 설정

● 리눅스 커널 파라미터 수정(리눅스) / 네트워크 설정 변경(윈도)