구글 클라우드 플랫폼(GCP)을 사용하는 기업 중 많은 곳이 구글 쿠버네티스 엔진 클러스터를 여러 리전을 통해 이용하고 싶어 합니다. 여러 리전에 클러스터를 구성하는 것은 컨테이너 환경에서 운영하는 애플리케이션의 사용자 체감 성능을 일정하게 가져가는 동시에 안정성과 확장성을 확보하기 위해서죠. 이외에 중요 데이터에 대한 현지 규제 준수를 이유로 여러 곳에 클러스터를 두기도 합니다. 이처럼 여러 위치에 구글 쿠버네티스 엔진 기반 클러스터를 운영하고자 하는 기업을 위해 새로운 CLI 도구가 발표되었습니다. 그 이름은 ‘kubemci’입니다.
kubemci는 간단히 말해 구글 클라우드 로드밸런서(GCBL) 설정을 위한 도구라 보면 됩니다. 이 툴을 사용해 여러 구글 쿠버네티스 엔진 기반 클러스터를 대상으로 부하 분산 설정을 할 수 있습니다. 부하 분산의 기본 개념은 L4/L7 스위치의 GSLB(Global Server Load Balancing)과 유사합니다. 가장 가까운 위치에 있는 클러스터로 사용자의 요청을 처리한다는 개념은 크게 다르지 않아 보입니다.
“GCP의 장점 중 하나 ~ 100개가 넘는 PoP”
GCBL 설정으로 쿠버네티스 클러스터의 부하 분산을 얼마나 효율적으로 할 수 있겠어? 엄청나게 할 수 있습니다. GCP는 100군데가 넘는 PoP(Points of Presence)를 전 세계 곳곳에 확보하고 있습니다. 이를 활용하면 리전을 가로질러 효율적인 부하 분산이 가능합니다.
다시 주제로 돌아와 kubemci를 이용하는 가상 시나리오를 하나 살펴보겠습니다. 다음과 같이 도쿄, 뉴욕, 런던에 각각 클러스터를 둔 기업이 있다고 가정하죠. 이들 클러스터는 같은 서비스를 제공합니다. 관리자는 kubemci로 GCLB 인스턴스를 생성한 다음 각 클러스터를 한데 묶습니다. 설정 조건은 사용자와 가장 가까운 리전에 있는 클러스터가 요청을 처리하는 것입니다.
아래 그림의 경우 도쿄로 1000rps(requests-per-second)의 요청이 전달되었고, 뉴욕으로는 10rps, 런던으로는 1rps의 요청이 갔습니다. RTT(round trip time)이 가장 짧은 곳에서 서비스를 처리한다고 했을 때 사용자가 아시아 지역에 많은가 보네요. GCBL을 사용하면 쿠버네티스 엔진 클러스터 고가용성 보장에도 도움이 됩니다. 가령 어느 한 리전에 있는 클러스터에 장애가 발생하면? 해당 환경에 대한 헬스체크가 자동으로 이루어져 사용자의 요청을 다른 리전으로 라우팅합니다.
kubemci를 사용하고 싶다면 일단 다음 명령으로 간단히 맛을 볼 수 있습니다.
$ kubemci create my-mci –ingress=ingress.yaml \
–kubeconfig=cluster_list.yaml
더 자세한 내용은 하우투 문서를 참조 바랍니다.