이 문서에서는 부하 분산에 사용할 두 가지 Dataplan V2 네트워킹 모드와 베어메탈용 GKE 클러스터에 사용 설정하는 방법을 설명합니다. 베어메탈용 GKE 출시 버전 1.16.0 이전에는 부하 분산용 Dataplane V2 네트워킹 모드를 구성할 수 없습니다. Dataplane V2는 소스 네트워크 주소 변환(SNAT) 부하 분산만 지원합니다. 클러스터 버전 1.16.0 이상을 사용하면 클러스터를 만들 때 부하 분산 네트워크 모드를 SNAT(기본값) 또는 직접 서버 반환(DSR)으로 구성할 수 있습니다.
SNAT 부하 분산
소스 네트워크 주소 변환(SNAT)이 Dataplane V2 부하 분산용 기본 네트워크 모드입니다. 그러나 SNAT 모드에서는 클라이언트 IP 주소가 백엔드 포드에 보존되지 않습니다. 클라이언트의 패킷이 부하 분산기 노드에 도달하면 변환되어 백엔드 포드가 있는 대상 워커 노드로 전달됩니다. 백엔드 포드는 요청이 클라이언트 위치 대신 부하 분산기 노드에서 들어오는 것을 확인합니다. 따라서 응답이 부하 분산기 노드로 반환되고 역변환되어 클라이언트에 다시 전송됩니다.
SNAT 패킷 흐름
Dataplane V2 부하 분산용 SNAT 네트워킹 모드를 사용하면 외부 클라이언트에서 백엔드 포드로의 패킷 흐름은 다음과 같습니다.
LoadBalancer 유형의 서비스가 부하 분산기 노드에 할당되고 IP 주소
172.16.20.16
이 해당 노드에서 실행되는 MetalLB 스피커에 공지됩니다.Dataplane V2는 SNAT가 있는 소스 IP 주소와 포트를
<LB_NODE_IP>:52000
으로 변환하고 패킷을 워커 노드로 전달합니다.응답이 부하 분산기 노드로 다시 전송되고 대상 주소가 역변환됩니다.
다음 다이어그램에서는 SNAT 모드의 패킷 흐름을 보여줍니다.
DSR 부하 분산
직접 서버 반환(DSR)은 SNAT 부하 분산 문제를 해결합니다. DSR 모드에서 부하 분산기 노드는 IP 옵션을 사용하여 클라이언트 소스 주소를 저장합니다. 워커 노드는 원래 패킷을 복구하고 백엔드 포드로 전달할 수 있습니다. 백엔드 포드는 패킷이 부하 분산기 노드 IP 주소 대신 클라이언트 IP 주소에서 들어오는 것을 확인할 수 있습니다. 따라서 반환 패킷은 부하 분산기 노드로 다시 이동하는 대신 클라이언트 IP 주소로 직접 반환됩니다.
이 모드는 클라이언트 IP 주소 공개 상태 문제를 해결할 뿐만 아니라 부하 분산기 노드의 대역폭도 저장합니다. 반환 트래픽은 부하 분산기 노드를 통과할 필요가 없으며 부하 분산기 노드에서 더 이상 연결 추적을 수행할 필요가 없습니다. 이 방식은 메모리를 절약하고 전달 포트를 확보합니다. 다운로드 트래픽이 요청 트래픽보다 훨씬 높은 비대칭 워크로드의 경우 DSR 흐름은 대역폭을 크게 줄입니다.
DSR 패킷 흐름
Dataplane V2 부하 분산용 DSR 네트워킹 모드를 사용하면 외부 클라이언트에서 백엔드 포드로의 패킷 흐름은 다음과 같습니다.
LoadBalancer 유형의 서비스가 부하 분산기 노드에 할당되고 IP 주소
172.16.20.16
이 해당 노드에서 실행되는 MetalLB 스피커에 공지됩니다.Dataplan V2는 패킷을 워커 노드로 전달하고 IP 옵션을 사용하여 원래 클라이언트 소스 IP 주소와 포트를 저장합니다.
워커 노드의 Dataplane V2에서 패킷을 백엔드 포드로 전달합니다.
백엔드 포드에서 소스 IP 주소와 포트를 복구하고 클라이언트에 응답합니다.
다음 다이어그램에서는 DSR 모드의 패킷 흐름을 보여줍니다.
DSR 제한사항
DSR은 터널이 아닌 모드에서만 지원됩니다. 즉, 플랫 모드 네트워크 모델을 사용 설정해야 합니다. 플랫 모드 네트워크 모델을 사용 설정하는 방법은 플랫 IPv4 모드 네트워크 모델 구현을 참조하세요. 플랫 모드 네트워크 모델을 사용 설정하지 않은 경우 DSR을 사용 설정하려고 하면 실행 전 검사가 실패합니다.
DSR 모드 사용 설정
앞에서의 설명처럼 SNAT 모드는 기본적으로 사용 설정됩니다. DSR 모드를 사용 설정하려면 클러스터를 만들기 전에 다음 주석을 클러스터 구성 파일에 추가합니다. 미리보기 버전에서는 이 기능이 preview.baremetal.cluster.gke.io/dpv2-lbmode-dsr: enable
주석을 사용하여 DSR 모드를 사용 설정합니다.
DSR 모드를 중지하려면 주석을 삭제하거나 disable
로 설정합니다. 다른 값은 허용되지 않으며 유효성 검사 오류가 발생합니다.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: bm
namespace: cluster-bm
annotations:
preview.baremetal.cluster.gke.io/dpv2-lbmode-dsr: enable # valid options: enable or disable
spec:
...
클러스터가 생성된 후에는 값을 수정할 수 없습니다. 클러스터를 만들기 전에 필요에 맞는 올바른 옵션을 구성했는지 확인합니다.