탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1 네트워크 성능 관리 Oracle Solaris 11.1 Information Library (한국어) |
IPv4 및 IPv6의 경우 ILB는 단일 각 및 이중 각 토폴로지에서 Stateless DSR(Direct Server Return) 및 NAT(네트워크 주소 변환) 작동 모드를 지원합니다.
Stateless DSR 토폴로지
NAT 모드(Full-NAT 및 Half-NAT) 토폴로지
DSR 모드에서 ILB는 백엔드 서버에 대한 수신 요청의 로드 균형을 조정하지만 서버에서 클라이언트로의 반환 트래픽이 로드 균형 조정을 무시할 수 있도록 합니다. 그러나 ILB가 백엔드 서버에 대한 라우터로 사용되도록 설정할 수도 있습니다. 이 경우 백엔드 서버에서 클라이언트로의 응답은 ILB를 실행 중인 시스템을 통해 경로 지정됩니다. DSR의 현재 ILB 구현에서는 TCP 연결 추적을 제공하지 않습니다(Stateless임을 의미함). Stateless DSR을 사용할 경우 ILB는 기본 통계를 제외하고는 처리된 패킷에 대한 상태 정보를 저장하지 않습니다. ILB가 이 모드에서 상태를 저장하지 않으므로 성능은 일반적인 IP 전달 성능과 유사합니다. 이 모드는 비연결 프로토콜에 가장 적합합니다.
이점:
패킷의 대상 MAC 주소만 변경되고 서버가 직접 클라이언트에 응답하므로 NAT보다 성능이 뛰어납니다
서버 및 클라이언트 간 투명성이 완전합니다. 서버가 클라이언트 IP 주소에서 직접 연결을 확인하고 기본 게이트웨이를 통해 클라이언트에 응답합니다.
단점:
백엔드 서버가 고유 IP 주소(상태 검사용)와 가상 IP 주소(로드 균형이 조정된 트래픽용)에 모두 응답해야 합니다.
로드 밸런서가 연결 상태를 유지 관리하지 않으므로(Stateless임을 의미함) 서버를 추가하거나 제거하면 연결 장애가 발생합니다.
다음 그림은 DSR 토폴로지를 사용한 ILB 구현을 보여줍니다.
그림 10-1 DSR(Direct Server Return) 토폴로지
이 그림에서 두 백엔드 서버 모두 동일한 서브넷(192.168.1.0/24)에 ILB 상자로 있습니다. 서버는 라우터에도 연결되어 있으므로 ILB 상자에서 전달한 요청을 받은 후 클라이언트에 다시 직접 응답할 수 있습니다.
ILB는 로드 균형 조정 기능에 대해서만 독립형 모드로 NAT를 사용합니다. 이 모드에서 ILB는 헤더 정보를 재작성하고 수신 및 송신 트래픽을 처리합니다. ILB는 Half-NAT 및 Full-NAT 모드 모두로 작동합니다. 그러나 Full-NAT는 소스 IP 주소도 재작성하여 모든 연결이 로드 밸런서에서 시작되는 것으로 서버에 표시되도록 합니다. NAT는 TCP 연결 추적을 제공합니다(Stateful임을 의미함). NAT 모드는 추가 보안을 제공하므로 HTTP(Hypertext Transfer Protocol) 또는 SSL(Secure Sockets Layer) 트래픽에 가장 적합합니다.
이점:
기본 게이트웨이가 로드 밸런서를 가리키도록 변경하여 모든 백엔드 서버에서 작동합니다.
로드 밸런서가 연결 상태를 유지 관리하므로 연결 장애 없이 서버를 추가하거나 제거할 수 있습니다.
단점:
처리 시 IP 헤더가 조작되고 서버가 로드 밸런서로 응답을 보내므로 DSR에 비해 성능이 떨어집니다.
모든 백엔드 서버에서 로드 밸런서를 기본 게이트웨이로 사용해야 합니다.
일반적인 NAT 토폴로지 구현은 아래 그림에 표시되어 있습니다.
그림 10-2 NAT(Network Address Translation) 토폴로지
이 경우 VIP에 대한 모든 요청이 ILB 상자를 경유하여 백엔드 서버로 전달됩니다. NAT의 경우 백엔드 서버의 모든 응답이 ILB 상자를 경유합니다.
주의 - ILB에서 구현된 NAT 코드 경로는 Oracle Solaris의 IP 필터 기능에서 구현된 코드 경로와 다릅니다. 이러한 코드 경로를 동시에 사용하지 마십시오. |
Half-NAT 모드의 ILB 작동에서는 ILB가 패킷의 헤더에 대상 IP 주소만 재작성합니다. Half-NAT 구현을 사용하는 경우 서버가 상주하는 서브넷과 동일한 서브넷의 서비스 VIP(가상 IP) 주소에 연결할 수 없습니다. 다음 표는 클라이언트와 ILB 사이 그리고 ILB와 백엔드 서버 사이를 이동하는 패킷의 IP 주소를 보여줍니다.
표 10-1 서버 및 클라이언트가 다른 네트워크에 있는 경우 Half-NAT 구현의 요청 플로우와 응답 플로우
|
클라이언트 시스템을 서버와 동일한 네트워크에 연결하면 의도한 서버가 클라이언트에 직접 응답합니다. 4번째 단계가 발생하지 않습니다. 따라서 클라이언트에 대한 서버 응답의 소스 IP 주소가 잘못되었습니다. 클라이언트가 로드 밸런서로 연결 요청을 전송하면 의도한 서버에서 응답이 발생합니다. 그러면 클라이언트의 IP 스택이 정확하게 모든 응답을 삭제합니다.
이 경우 요청 플로우와 응답 플로우는 다음 표에 나타난 대로 진행됩니다.
표 10-2 서버 및 클라이언트가 동일한 네트워크에 있는 경우 Half-NAT 구현의 요청 플로우와 응답 플로우
|
Full-NAT 구현에서는 트래픽이 로드 밸런서를 양방향으로 통과하도록 소스 및 대상 IP 주소가 재작성됩니다. Full-NAT 토폴로지에서는 서버가 상주하는 서브넷과 동일한 서브넷에서 VIP에 연결할 수 있습니다.
다음 표는 Full-NAT 토폴로지를 사용하여 클라이언트와 ILB 사이 그리고 ILB와 백엔드 서버 사이를 이동하는 패킷의 IP 주소를 보여줍니다. ILB 상자를 사용하는 특별한 기본 경로가 서버에서 필요하지 않습니다. 그러나 Full-NAT 토폴로지에서는 관리자가 ILB에서 백엔드 서버와 통신하는 데 소스 주소로 사용할 하나의 IP 주소 또는 IP 주소 범위를 마련해 두어야 합니다. 사용되는 주소가 서브넷 C에 속한다고 가정하겠습니다. 이 시나리오에서는 ILB가 프록시로 작동합니다.
표 10-3 Full-NAT 구현의 요청 플로우와 응답 플로우
|