본문 바로가기
WIKI 기술 지식 베이스

로드 밸런싱

원문 보기 위키 갱신

로드 밸런싱 (Load Balancing)

Linkerd는 별다른 설정 없이도 요청을 여러 대상 엔드포인트에 자동으로 분산해 주는 로드 밸런싱 기능을 제공해요. 특히 HTTP, gRPC처럼 여러 연결이 맺어지는 트래픽에서 큰 힘을 발휘해요.

출처: Linkerd Load Balancing

본문

HTTP, HTTP/2, gRPC 연결의 경우 Linkerd는 별도의 설정 없이도 모든 대상 엔드포인트에 걸쳐 요청을 자동으로 로드 밸런싱해요. (TCP 연결의 경우에는 연결 자체를 밸런싱해요.)

Linkerd는 EWMA(지수 가중 이동 평균, exponentially weighted moving average) 라고 불리는 알고리즘을 사용해 가장 빠른 엔드포인트로 요청을 자동으로 보내요. 이런 로드 밸런싱 덕분에 종단 간(end-to-end) 지연 시간을 개선할 수 있어요.

서비스 디스커버리

Kubernetes에 속하지 않은 대상이라면 Linkerd는 DNS가 제공하는 엔드포인트를 기준으로 밸런싱해요.

Kubernetes 안에 있는 대상이라면 Linkerd는 Kubernetes API에서 IP 주소를 조회해요. 그 IP 주소가 Service에 해당한다면 Linkerd는 그 Service의 엔드포인트들에 걸쳐 로드 밸런싱을 수행하고, 해당 Service의 Service Profile에 담긴 정책도 적용해요. 반면 그 IP 주소가 Pod에 해당한다면 Linkerd는 로드 밸런싱이나 Service Profile 적용 없이 해당 주소로만 트래픽을 보내요.

참고

headless 서비스를 사용하는 경우에는 서비스의 엔드포인트를 가져올 수 없어요. 따라서 Linkerd는 로드 밸런싱을 수행하지 않고 대상 IP 주소로만 라우팅해요.

gRPC 로드 밸런싱

Linkerd의 로드 밸런싱은 특히 Kubernetes 안의 gRPC(또는 HTTP/2) 서비스에 유용해요. 이런 서비스에서는 Kubernetes의 기본 로드 밸런싱이 제대로 동작하지 않기 때문이에요.

더 알아보기 (Learn more)