KR20220110329A - 멀티 클러스터 인그레스 - Google Patents

멀티 클러스터 인그레스 Download PDF

Info

Publication number
KR20220110329A
KR20220110329A KR1020227025648A KR20227025648A KR20220110329A KR 20220110329 A KR20220110329 A KR 20220110329A KR 1020227025648 A KR1020227025648 A KR 1020227025648A KR 20227025648 A KR20227025648 A KR 20227025648A KR 20220110329 A KR20220110329 A KR 20220110329A
Authority
KR
South Korea
Prior art keywords
application level
cluster
level requests
requests
load balancing
Prior art date
Application number
KR1020227025648A
Other languages
English (en)
Other versions
KR102508398B1 (ko
Inventor
만조트 파화
매튜 델리오
보웨이 두
로히트 람쿠마르
닉힐 진달
크리스티안 벨
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020237007705A priority Critical patent/KR102604082B1/ko
Publication of KR20220110329A publication Critical patent/KR20220110329A/ko
Application granted granted Critical
Publication of KR102508398B1 publication Critical patent/KR102508398B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

애플리케이션 요청들을 로드 밸런싱하기 위한 방법(500)은 사용자(12)에 의해 배포된 소프트웨어 애플리케이션(124)을 호스팅하는 한 세트의 목적지 클러스터들(120)에 대한 액세스를 관리하는 멀티 클러스터 서비스 (210)에 대한 로드 밸런싱 구성(132)을 수신하는 단계를 포함한다. 멀티 클러스터 서비스는 한 세트의 목적지 클러스터들에 걸쳐 애플리케이션 레벨 트래픽을 로드 밸런싱하기 위해 로드 밸런싱 구성을 사용한다. 각각의 목적지 클러스터는 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 및 개개의 지리적 영역(121)을 포함한다. 이 방법은 또한, 목적지 클러스터들에 걸쳐 호스팅되는 소프트웨어 애플리케이션 쪽으로 지향되는 애플리케이션 레벨 요청(30)을 수신하는 단계를 포함한다. 애플리케이션 레벨 요청은 클라이언트(10)로부터 수신되고, 클라이언트와 연관된 지리적 위치(34) 및 호스트 이름(32)을 포함한다. 이 방법은 또한, 요청의 지리적 위치 및 클러스터들의 개개의 지리적 위치들에 기초하여 클러스터들 중 하나에 요청을 라우팅하는 단계를 포함한다.

Description

멀티 클러스터 인그레스{MULTI-CLUSTER INGRESS}
[0001] 본 개시내용은 컨테이너화 오케스트레이션(containerized orchestration) 시스템을 위한 멀티 클러스터 인그레스(multi-cluster ingress)에 관한 것이다.
[0002] (분산 시스템들을 통한) 일부 클라우드 기반 서비스들은 컨테이너화 오케스트레이션 시스템들을 제공한다. 이러한 시스템들은 낮은 오버헤드 및 높은 확장성을 갖는 가상 머신과 같은 격리 능력들을 제공함으로써 소프트웨어가 개발, 배포(deploy) 및 유지되는 방식을 개조하였다. 소프트웨어 애플리케이션들은 보안 실행 환경들(예컨대, 컨테이너들 또는 포드(pod)들)에서 실행되고, 콜로케이트(co-locate)된 포드들은 클러스터들로 그룹화될 수 있으며, 각각의 클러스터는 다른 클러스터들로부터 격리된다. 로드 밸런서(Load Balancer)들은 일반적으로 클러스터 내의 포드들에 걸친 트래픽 및 워크로드들의 분산을 개선하는 데 사용된다. 계층 7(L7) 로드 밸런싱(즉, 애플리케이션 계층)이 메시지들의 실제 콘텐츠를 로드 밸런싱한다. 예를 들어, L7 로드 밸런서는 HTTP(HyperText Transfer Protocol) 또는 HTTPS(HyperText Transfer Protocol Secure) 상에서 동작할 수 있고, 메시지의 콘텐츠에 대한 라우팅 결정들을 내릴 수 있다. 컨테이너화 오케스트레이션 시스템들을 위한 로드 밸런서들은 통상적으로 단일 클러스터 상에서 동작하는 L7 로드 밸런서들이다.
[0003] 본 개시내용의 일 양상은 멀티 클러스터 컨테이너화 오케스트레이션 시스템에 걸쳐 애플리케이션 요청들을 로드 밸런싱하기 위한 방법을 제공한다. 이 방법은, 데이터 처리 하드웨어에서, 사용자에 의해 배포된 소프트웨어 애플리케이션을 호스팅하는 한 세트의 목적지 클러스터들에 대한 액세스를 관리하는 멀티 클러스터 서비스에 대한 로드 밸런싱 구성을 수신하는 단계를 포함한다. 멀티 클러스터 서비스는 한 세트의 목적지 클러스터들에 걸쳐 소프트웨어 애플리케이션과 연관된 애플리케이션 레벨 트래픽을 로드 밸런싱하기 위해 로드 밸런싱 구성을 사용하도록 구성된다. 각각의 목적지 클러스터는 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너, 및 한 세트의 목적지 클러스터들 내의 목적지 클러스터들 중 다른 하나와 연관된 적어도 하나의 다른 지리적 영역과 동일한 또는 상이한 개개의 지리적 영역을 포함한다. 이 방법은 또한, 데이터 처리 하드웨어에서, 한 세트의 목적지 클러스터들에 걸쳐 호스팅되는 소프트웨어 애플리케이션 쪽으로 지향되는 애플리케이션 레벨 요청을 수신하는 단계를 포함한다. 애플리케이션 레벨 요청은 클라이언트로부터 수신되고, 클라이언트와 연관된 지리적 위치 및 호스트 이름을 포함한다. 이 방법은 또한, 데이터 처리 하드웨어에 의해, 애플리케이션 레벨 요청의 지리적 위치 및 한 세트의 목적지 클러스터들의 개개의 지리적 영역들에 기초하여 한 세트의 목적지 클러스터들 내의 목적지 클러스터들 중 하나에 애플리케이션 레벨 요청을 라우팅하는 단계를 포함한다.
[0004] 본 개시내용의 구현들은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 애플리케이션 레벨 요청을 라우팅하는 단계는, 한 세트의 목적지 클러스터들의 개개의 지리적 영역들에 기초하여, 한 세트의 목적지 클러스터들 중 어느 목적지 클러스터가 애플리케이션 레벨 요청의 클라이언트와 연관된 지리적 위치에 가장 가까운지를 결정하는 단계, 및 개개의 지리적 영역을 갖는 한 세트의 목적지 클러스터들 중 애플리케이션 레벨 요청의 클라이언트와 연관된 지리적 위치에 가장 가까운 목적지 클러스터에 애플리케이션 레벨 요청을 라우팅하는 단계를 포함한다. 일부 예들에서, 애플리케이션 레벨 요청을 라우팅하는 단계는, 멀티 클러스터 서비스에 의해 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터에 대해 지정된 개개의 로드 밸런싱 속성들에 추가로 기초한다. 수신된 로드 밸런싱 구성은 멀티 클러스터 서비스를 고유하게 식별하는 사용자 파생(user-derived) 서비스 이름을 포함할 수 있다.
[0005] 일부 구현들에서, 이 방법은, 데이터 처리 하드웨어에 의해, 멀티 클러스터 서비스에 대한 애플리케이션 레벨 트래픽을 서빙할 클러스터 레지스트리로부터 클러스터들을 선택하기 위해 멀티 클러스터 서비스에 의해 지정된 클러스터 선택 기준들을 식별하는 단계, 및 데이터 처리 하드웨어에 의해, 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터가 멀티 클러스터 서비스에 의해 지정된 클러스터 선택 기준들을 충족시키는 하나 이상의 라벨들의 개개의 세트를 갖는 것에 기초하여 클러스터 레지스트리로부터 한 세트의 목적지 클러스터들을 선택하는 단계를 포함한다. 멀티 클러스터 서비스에 의해 지정된 클러스터 선택 기준들은 하나 이상의 동등성 기반 매칭 요건들 또는 하나 이상의 세트 기반 매칭 요건들 중 적어도 하나를 포함할 수 있다. 선택적으로, 이 방법은 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터에 대해, 데이터 처리 하드웨어에 의해 목적지 클러스터 내의 대응하는 파생 서비스를 인스턴스화(instantiate)하는 단계를 더 포함한다. 파생 서비스는 엔드포인트들의 그룹을 포함하는 대응하는 네트워크 엔드포인트 그룹(NEG: network endpoint group)을 생성하도록 구성된다. 엔드포인트들의 그룹 내의 각각의 엔드포인트는 목적지 클러스터의 개개의 컨테이너와 연관되며, 애플리케이션 레벨 트래픽을 개개의 컨테이너에 직접 분배하기 위한 개개의 포트 및 개개의 IP(internet protocol) 어드레스를 포함한다.
[0006] 각각의 대응하는 파생 서비스는 일부 구현들에서, 다른 파생 서비스들의 파생 서비스 이름들과는 다른 고유 파생 서비스 이름을 포함한다. 파생 서비스 이름은 트리밍(trim)된 서비스 이름 부분 및 고유 해시 부분을 갖는다. 트리밍된 서비스 이름 부분은 멀티 클러스터 서비스의 사용자 파생 서비스 이름을 포함하고, 고유 해시 부분은 멀티 클러스터 서비스의 사용자 파생 서비스 이름의 고유 해시를 포함한다. 일부 예들에서, 이 방법은 애플리케이션 레벨 요청을 수신하는 것에 대한 응답으로, 데이터 처리 하드웨어에 의해 URL(uniform resource locator) 매핑에 액세스하는 단계를 더 포함한다. URL 매핑은 하나 이상의 목적지 클러스터들의 서비스에 매핑되는 하나 이상의 호스트 이름들의 리스트를 지정한다. 이 방법은 또한, 데이터 처리 하드웨어에 의해, 수신된 애플리케이션 레벨 요청의 호스트 이름이 URL 매핑에 의해 지정된 하나 이상의 호스트 이름들의 리스트 내의 호스트 이름들 중 하나를 포함하는지 여부를 결정하는 단계, 및 수신된 애플리케이션 레벨 요청의 호스트 이름이 리스트 내의 호스트 이름들 중 하나를 포함할 때, 데이터 처리 하드웨어에 의해, 수신된 애플리케이션 레벨 요청을 서비스에 포워딩하는 단계를 포함한다.
[0007] 애플리케이션 레벨 트래픽은 HTTP(HyperText Transfer Protocol)를 포함할 수 있다. 애플리케이션 레벨 트래픽은 또한, HTTPS(HyperText Transfer Protocol Secure) 프로토콜을 포함할 수 있다. 애플리케이션 레벨 요청의 적어도 일부는 선택적으로 TLS(transport layer security) 프로토콜을 포함한다. 일부 구현들에서, 이 방법은, 애플리케이션 레벨 요청을 라우팅하기 전에 그리고 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터에 대해, 데이터 처리 하드웨어에 의해, 현재 목적지 클러스터로 라우팅되는 애플리케이션 레벨 요청들의 수가 최대 요청 레이트를 충족하는지 여부를 결정하는 단계, 및 애플리케이션 레벨 요청들의 수가 최대 요청 레이트를 충족할 때, 목적지 클러스터로의 애플리케이션 레벨 요청의 라우팅을 막는 단계를 더 포함한다.
[0008] 본 개시내용의 다른 양상은 멀티 클러스터 컨테이너화 오케스트레이션 시스템에 걸쳐 애플리케이션 요청들을 로드 밸런싱하기 위한 시스템을 제공한다. 이 시스템은 데이터 처리 하드웨어 및 데이터 처리 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는 데이터 처리 하드웨어 상에서 실행될 때, 데이터 처리 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장한다. 이 동작들은 사용자에 의해 배포된 소프트웨어 애플리케이션을 호스팅하는 한 세트의 목적지 클러스터들에 대한 액세스를 관리하는 멀티 클러스터 서비스에 대한 로드 밸런싱 구성을 수신하는 동작을 포함한다. 멀티 클러스터 서비스는 한 세트의 목적지 클러스터들에 걸쳐 소프트웨어 애플리케이션과 연관된 애플리케이션 레벨 트래픽을 로드 밸런싱하기 위해 로드 밸런싱 구성을 사용하도록 구성된다. 각각의 목적지 클러스터는 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너, 및 한 세트의 목적지 클러스터들 내의 목적지 클러스터들 중 다른 하나와 연관된 적어도 하나의 다른 지리적 영역과 동일한 또는 상이한 개개의 지리적 영역을 포함한다. 이 동작들은 또한, 한 세트의 목적지 클러스터들에 걸쳐 호스팅되는 소프트웨어 애플리케이션 쪽으로 지향되는 애플리케이션 레벨 요청을 수신하는 동작을 포함한다. 애플리케이션 레벨 요청은 클라이언트로부터 수신되고, 클라이언트와 연관된 지리적 위치 및 호스트 이름을 포함한다. 이 동작들은 또한, 애플리케이션 레벨 요청의 지리적 위치 및 한 세트의 목적지 클러스터들의 개개의 지리적 영역들에 기초하여 한 세트의 목적지 클러스터들 내의 목적지 클러스터들 중 하나에 애플리케이션 레벨 요청을 라우팅하는 동작을 포함한다.
[0009] 이 양상은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 애플리케이션 레벨 요청을 라우팅하는 동작은, 한 세트의 목적지 클러스터들의 개개의 지리적 영역들에 기초하여, 한 세트의 목적지 클러스터들 중 어느 목적지 클러스터가 애플리케이션 레벨 요청의 클라이언트와 연관된 지리적 위치에 가장 가까운지를 결정하는 동작, 및 개개의 지리적 영역을 갖는 한 세트의 목적지 클러스터들 중 애플리케이션 레벨 요청의 클라이언트와 연관된 지리적 위치에 가장 가까운 목적지 클러스터에 애플리케이션 레벨 요청을 라우팅하는 동작을 포함한다. 일부 예들에서, 애플리케이션 레벨 요청을 라우팅하는 동작은, 멀티 클러스터 서비스에 의해 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터에 대해 지정된 개개의 로드 밸런싱 속성들에 추가로 기초한다. 수신된 로드 밸런싱 구성은 멀티 클러스터 서비스를 고유하게 식별하는 사용자 파생 서비스 이름을 포함할 수 있다.
[0010] 일부 구현들에서, 이 동작들은 멀티 클러스터 서비스에 대한 애플리케이션 레벨 트래픽을 서빙할 클러스터 레지스트리로부터 클러스터들을 선택하기 위해 멀티 클러스터 서비스에 의해 지정된 클러스터 선택 기준들을 식별하는 동작, 및 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터가 멀티 클러스터 서비스에 의해 지정된 클러스터 선택 기준들을 충족시키는 하나 이상의 라벨들의 개개의 세트를 갖는 것에 기초하여 클러스터 레지스트리로부터 한 세트의 목적지 클러스터들을 선택하는 동작을 포함한다. 멀티 클러스터 서비스에 의해 지정된 클러스터 선택 기준들은 하나 이상의 동등성 기반 매칭 요건들 또는 하나 이상의 세트 기반 매칭 요건들 중 적어도 하나를 포함할 수 있다. 선택적으로, 이 동작들은 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터에 대해, 목적지 클러스터 내의 대응하는 파생 서비스를 인스턴스화하는 동작을 더 포함한다. 파생 서비스는 엔드포인트들의 그룹을 포함하는 대응하는 네트워크 엔드포인트 그룹(NEG)을 생성하도록 구성된다. 엔드포인트들의 그룹 내의 각각의 엔드포인트는 목적지 클러스터의 개개의 컨테이너와 연관되며, 애플리케이션 레벨 트래픽을 개개의 컨테이너에 직접 분배하기 위한 개개의 포트 및 개개의 IP(internet protocol) 어드레스를 포함한다.
[0011] 각각의 대응하는 파생 서비스는 일부 구현들에서, 다른 파생 서비스들의 파생 서비스 이름들과는 다른 고유 파생 서비스 이름을 포함한다. 파생 서비스 이름은 트리밍된 서비스 이름 부분 및 고유 해시 부분을 갖는다. 트리밍된 서비스 이름 부분은 멀티 클러스터 서비스의 사용자 파생 서비스 이름을 포함하고, 고유 해시 부분은 멀티 클러스터 서비스의 사용자 파생 서비스 이름의 고유 해시를 포함한다. 일부 예들에서, 이 동작들은 애플리케이션 레벨 요청을 수신하는 것에 대한 응답으로 URL(uniform resource locator) 매핑에 액세스하는 동작을 더 포함한다. URL 매핑은 하나 이상의 목적지 클러스터들의 서비스에 매핑되는 하나 이상의 호스트 이름들의 리스트를 지정한다. 이 동작들은 또한, 수신된 애플리케이션 레벨 요청의 호스트 이름이 URL 매핑에 의해 지정된 하나 이상의 호스트 이름들의 리스트 내의 호스트 이름들 중 하나를 포함하는지 여부를 결정하는 동작, 및 수신된 애플리케이션 레벨 요청의 호스트 이름이 리스트 내의 호스트 이름들 중 하나를 포함할 때, 수신된 애플리케이션 레벨 요청을 서비스에 포워딩하는 동작을 포함한다.
[0012] 애플리케이션 레벨 트래픽은 HTTP(HyperText Transfer Protocol)를 포함할 수 있다. 애플리케이션 레벨 트래픽은 또한, HTTPS(HyperText Transfer Protocol Secure) 프로토콜을 포함할 수 있다. 애플리케이션 레벨 요청의 적어도 일부는 선택적으로 TLS(transport layer security) 프로토콜을 포함한다. 일부 구현들에서, 이 동작들은, 애플리케이션 레벨 요청을 라우팅하기 전에 그리고 한 세트의 목적지 클러스터들 내의 각각의 목적지 클러스터에 대해, 현재 목적지 클러스터로 라우팅되는 애플리케이션 레벨 요청들의 수가 최대 요청 레이트를 충족하는지 여부를 결정하는 동작, 및 애플리케이션 레벨 요청들의 수가 최대 요청 레이트를 충족할 때, 목적지 클러스터로의 애플리케이션 레벨 요청의 라우팅을 막는 동작을 더 포함한다.
[0013] 본 개시내용의 하나 이상의 구현들의 세부사항들은 아래 첨부 도면들 및 설명에서 제시된다. 다른 양상들, 특징들 및 이점들은 설명 및 도면들로부터 그리고 청구항들로부터 자명해질 것이다.
[0014] 도 1은 컨테이너화 오케스트레이션 시스템의 다수의 클러스터들에 걸쳐 애플리케이션 레벨 트래픽을 로드 밸런싱하기 위한 예시적인 시스템의 개략도이다.
[0015] 도 2는 도 1의 시스템의 예시적인 멀티 클러스터 제어기의 개략도이다.
[0016] 도 3a 및 도 3b는 네트워크 엔드포인트 그룹들을 포함하는 컨테이너 로드 밸런서의 예시적인 컴포넌트들의 개략도들이다.
[0017] 도 4는 도 1의 시스템의 예시적인 멀티 클러스터 인그레스의 개략도이다.
[0018] 도 5는 컨테이너화 시스템들에서 자원들을 보존하기 위한 예시적인 방법의 흐름도이다.
[0019] 도 6은 본 명세서에서 설명되는 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0020] 다양한 도면들에서 동일한 참조 심벌들은 동일한 엘리먼트들을 표시한다.
[0021] 컨테이너화 애플리케이션들, 및 컨테이너화 애플리케이션들을 오케스트레이팅하는 시스템들은, 적어도 부분적으로는 원격 및 분산 컴퓨팅의 진보들로 인해 점점 더 대중화되고 있다. 컨테이너화 애플리케이션들(즉, 가상화)은 격리된 사용자 또는 애플리케이션 공간 인스턴스들의 존재를 허용한다. 각각의 인스턴스(즉, 컨테이너)는 실행하는 데 필요한 모든 자원들(예컨대, 저장, 네트워크 액세스 등)에 대한 액세스를 갖는 각자의 개인용 컴퓨터로서 애플리케이션에 나타날 수 있다. 그러나 컨테이너들 내의 애플리케이션들은 오직 그 개개의 컨테이너에 할당된 자원들을 보고 액세스하는 것만이 가능할 것이다. 이는 분산 또는 클라우드 환경에서 애플리케이션들의 보안, 이동성, 스케일링 및 업그레이드를 가능하게 한다.
[0022] 컨테이너는 통상적으로 단일 애플리케이션 또는 프로세스 또는 서비스로 제한될 것이다. 일부 컨테이너-오케스트레이션 시스템들은 가장 작은 이용 가능한 컴퓨팅 유닛으로서 포드들을 배치한다. 포드는 하나 이상의 컨테이너들의 그룹이며, 포드 내의 각각의 컨테이너는 격리 경계들(예컨대, IP 어드레스)을 공유한다. 제어기들은 포드들의 자원들을 제어한다. 제어기들은 포드들, 컨테이너들 및 자원들의 건전성을 모니터링하는 것(그리고 필요하다면 포드들/컨테이너들을 재생성하는 것)을 담당한다. 제어기들은 또한 포드들의 복제 및 스케일링뿐만 아니라 (포드에 대한) 외부 이벤트들에 대한 모니터링을 담당한다.
[0023] 포드들은 통상적으로 일시적이고 대체 가능한 자원들이기 때문에, 이들은 빈번하게 생성되고 파괴(즉, 스케일 인(scale in) 또는 스케일 아웃(scale out))된다. 일부 포드들(즉, 백엔드들)이 다른 포드들(즉, 프론트엔드들)에 기능을 제공하기 때문에, 어느 백엔드들이 프론트엔드에 대한 필수 기능을 제공하는지를 프론트엔드들이 추적할 수 있게 하도록 서비스들이 생성된다. 서비스는 포드들의 논리적 세트 및 이들에 액세스하기 위한 정책을 정의하는 추상화(abstraction)이다. 즉, 백엔드들을 대응하는 프론트엔드에 연결하는 하나 이상의 포드들이 서비스의 타깃이 된다. 서비스는 선택 기준들과 일치하는 포드들을 타깃으로 할 수 있다. 일부 예들에서, 선택 기준들은 라벨 선택을 포함한다. 즉, 포드들은 라벨들을 포함할 수 있고, 서비스는 동등성 기반 또는 세트 기반 라벨 매칭에 의해 원하는 포드들을 선택할 수 있다.
[0024] 단일 물리적 머신(즉, 컴퓨터 또는 서버)이 하나 이상의 컨테이너들(예컨대, 포드들)을 호스팅한다. 컨테이너-오케스트레이션 시스템은 종종, 물리적 머신들의 클러스터를 사용하여 다수의 포드들에 걸쳐 다수의 컨테이너화 애플리케이션들을 조정할 것이다. 통상적으로, 클러스터 내의 각각의 머신은 마스터 서버로서 기능하는 하나 이상의 머신들 및 노드들로서 기능하는 나머지 머신들과 콜로케이트된다(즉, 머신들은 지리적으로 서로 근처에 위치됨). 마스터 서버는 예컨대, 클라이언트들에 대한 API(application programming interface)를 노출시키고, 노드들을 헬스 점검(health check)하고, 통신을 오케스트레이팅하고, 스케줄링하는 등을 통해 클러스터에 대한 1차 제어 평면 및 게이트웨이로서 작용한다. 노드들은 로컬 및 외부 자원들을 사용하는 워크로드(workload)들의 수락 및 실행을 담당하고, 각각의 노드는 마스터 서버에 의해 명령되는 대로 컨테이너들을 생성 및 파괴한다. 클라이언트들은 마스터 서버와 (예컨대, 직접적으로 또는 라이브러리들을 통해) 통신함으로써 클러스터와 상호 작용한다. 클러스터 내의 노드들은 일반적으로 마스터 서버에 의해 허용되는 것을 제외하고 클러스터 외부의 접촉으로부터 격리되고 분리된다.
[0025] 로드 밸런싱은 다수의 컴퓨팅 자원들에 걸친 워크로드들의 분배를 개선하며, 컨테이너-오케스트레이션 시스템들의 분산 특성으로 인해, 분산 시스템들은 종종 계층 7(L7) 로드 밸런싱을 구현한다. 계층 7 로드 밸런싱은 고레벨 애플리케이션 계층(즉, 계층 7)에서 동작하며, 이는 송신된 메시지들의 실제 콘텐츠를 수반한다. 인터넷 상의 웹사이트 트래픽에 대한 지배적인 L7 프로토콜들은 HTTP(HyperText Transfer Protocol) 및 HTTPS(HyperText Transfer Protocol Secure)이다. 높은 레벨 때문에, L7 로드 밸런서들은 다른 계층 로드 밸런서(예컨대, 계층 4 로드 밸런서들)보다 더 정교한 방식으로 네트워크 트래픽을 라우팅할 수 있다. 일반적으로, L7 로드 밸런서는 네트워크 트래픽을 종료하고 트래픽 내의 메시지 콘텐츠를 분석한다. 그런 다음, L7 로드 밸런서는 메시지의 콘텐츠에 기초하여(예컨대, HTTP 쿠키에 기초하여) 트래픽을 라우팅할 수 있다. 그 다음, L7 밸런서는 적절한 목적지 노드에 대한 새로운 접속을 생성할 수 있다.
[0026] 현재의 컨테이너-오케스트레이션 시스템들은 통상적으로 단일 클러스터를 타깃으로 하는 L7 로드 밸런싱만을 제공한다. 즉, 각각의 클러스터는 개개의 구성을 요구하는 개별 로드 밸런서를 요구하며, 트래픽은 단일 클러스터 내에서만 밸런싱될 수 있다. 트래픽을 적절한 클러스터(예컨대, 소스 클라이언트에 지리적으로 가장 가까운 클러스터)로 라우팅하기 위해, 개별 도메인들이 필요할 수 있다. 예를 들어, asia.shopping.com은 아시아에 위치된 클러스터로 라우팅될 수 있는 한편, europe.shopping.com은 유럽의 클러스터로 라우팅될 수 있다. 따라서 이는 컨테이너-오케스트레이션 시스템에서 다수의 클러스터들에 걸쳐 고도로 이용 가능하고 글로벌하게 분산된 L7 서비스들을 서빙할 수 있는 로드 밸런서에 대해 유리할 것이다. 이 예를 계속하면, 다수의 클러스터들을 서비스하는 로드 밸런서는 클러스터들의 용량 및/또는 HTTP(S) 요청의 소스에 기초하여, shopping.com에 대한 HTTP(S) 요청을 아시아의 클러스터 또는 유럽의 클러스터에 라우팅할 수 있다.
[0027] 본 명세서의 구현들은 한 세트의 목적지 클러스터들에 걸쳐 소프트웨어 애플리케이션과 연관된 애플리케이션 레벨 트래픽을 로드 밸런싱하기 위한 컨테이너-오케스트레이션 시스템의 멀티 클러스터 로드 밸런서에 관한 것이다. 멀티 클러스터 로드 밸런서는 한 세트의 목적지 클러스터들에 대한 액세스를 관리하는 멀티 클러스터 서비스에 대한 로드 밸런싱 구성을 수신한다. 본 명세서에서 사용되는 바와 같이, 로드 밸런싱 구성은 인그레스 구성으로 지칭될 수 있다. 각각의 목적지 클러스터는 보안 실행 환경(즉, 다른 포드들 또는 클러스터들로부터 적어도 부분적으로 격리됨) 및 개개의 지리적 영역에서 소프트웨어 애플리케이션을 실행하는 적어도 하나의 포드를 포함한다. 일부 시나리오들에서, 적어도 하나의 포드/컨테이너는 비-보안 환경에서 소프트웨어 애플리케이션을 실행한다. 각각의 클러스터는 상이한 지리적 영역을 가질 수 있다. 멀티 클러스터 로드 밸런서는 한 세트의 목적지 클러스터들에 걸쳐 호스팅되는 소프트웨어 애플리케이션 쪽으로 지향되는 애플리케이션 레벨 요청을 수신하고, 로드 밸런서는 애플리케이션 레벨 요청의 지리적 위치 및 한 세트의 목적지 클러스터들의 개개의 지리적 영역들에 기초하여 목적지 클러스터들 중 하나에 애플리케이션 레벨 요청을 라우팅한다. 따라서 로드 밸런서는 다수의 클러스터들을 타깃으로 하는 한편, 모든 클러스터들에 걸쳐 단일 관리 포인트 및 구성을 제공한다. 로드 밸런서는 컨테이너-네이티브(container-native) 로드 밸런싱(즉, 포드들에 직접 트래픽을 분배함)을 이용할 수 있고, 클러스터가 오프라인이 된다면 호스팅된 서비스들에 대한 높은 이용 가능성을 제공한다.
[0028] 이제 도 1을 참조하면, 일부 구현들에서, 예시적인 시스템(100)은 원격 시스템(114)을 포함한다. 원격 시스템(114)은 확장 가능(scalable)/탄력적 컴퓨팅 자원들(118)(예컨대, 데이터 처리 하드웨어) 및/또는 저장 자원들(116)(예컨대, 메모리 하드웨어)을 갖는 분산 시스템(예컨대, 클라우드 환경), 단일 컴퓨터 또는 다수의 컴퓨터들일 수 있다. 원격 시스템(114)은 네트워크(112a)를 통해 하나 이상의 클러스터들(120, 120a-n)과 통신하고, 각각의 클러스터(120)는 하나 이상의 애플리케이션들(124)을 각각 실행하는 하나 이상의 포드들(122, 122a-n)을 포함한다. 본 명세서의 예들은 하나 이상의 포드들(122)을 포함하는 클러스터들(120)을 설명하지만, 클러스터들(120)은 본 개시내용의 범위를 벗어나지 않으면서 하나 이상의 소프트웨어 애플리케이션들(124)을 실행하기 위한 임의의 타입의 컨테이너들을 포함할 수 있다. 일부 예들에서, 클러스터들(120) 중 하나 이상의 일부 또는 전부가 원격 시스템(114) 상에서 실행된다. 일부 포드들(122)은 동일한 애플리케이션들(124)을 실행할 수 있는 한편, 동일한 클러스터(120) 또는 상이한 클러스터(120) 내의 일부 포드들(122)이 상이한 애플리케이션들(124)을 실행할 수 있다. 예를 들어, 각각의 클러스터(120)는 쇼핑 애플리케이션(124)을 실행하는 포드들(122)을 포함할 수 있다. 서비스(123)는 동일한 클러스터(120) 내의 다수의 포드들(122) 상에서 실행되는 하나 이상의 애플리케이션들(124)을 나타낸다. 이전 예를 계속하기 위해, 쇼핑 서비스(123)는 다수의 포드들(122) 상에서 실행되고 있는 쇼핑 애플리케이션(124)을 사용할 수 있다. 예를 들어, 쇼핑 애플리케이션(124)을 실행하는 모든 포드들(122)이 쇼핑 서비스(123)와 연관될 수 있고, 각각의 개별 포드(122)는 쇼핑 서비스(123)를 사용하기 위한 요청(30)을 이행하기 위한 대체 가능한 자원일 수 있다.
[0029] 각각의 클러스터(120)는 또한 개개의 지리적 영역(121, 121a-n)과 연관된다. 예를 들어, 클러스터(120a)는 아시아의 지리적 영역(121a)과 연관될 수 있고, 클러스터(120b)는 유럽의 지리적 영역(121b)과 연관될 수 있으며, 클러스터(120n)는 북미의 지리적 영역(121n)과 연관될 수 있다. 즉, 각각의 클러스터(120)는 클러스터(120)가 물리적으로 위치되는 지리적 영역(121)과 연관될 수 있다. 각각의 클러스터(120)는 상이한 지리적 영역(121)에 위치될 수 있지만, 일부 예들에서는, 다수의 클러스터들(120)이 동일한 지리적 영역(121)을 공유한다.
[0030] 원격 시스템(114)은 또한 네트워크(112b)를 통해 하나 이상의 클라이언트들(10, 10a-n)과 통신한다. 네트워크들(112a, 112b)은 동일한 네트워크 또는 상이한 네트워크들일 수 있다. 각각의 클라이언트(10)는 임의의 적절한 컴퓨팅 디바이스, 이를테면 데스크톱 워크스테이션, 랩톱 워크스테이션, 모바일 디바이스(예컨대, 스마트폰 또는 태블릿), 웨어러블 디바이스, 스마트 가전, 스마트 디스플레이 또는 스마트 스피커에 대응할 수 있다. 클라이언트들은 네트워크(112b)를 통해 원격 시스템(114)에 애플리케이션 레벨 요청들(30, 30a-n)을 송신한다. 애플리케이션 레벨 요청들(30)은 애플리케이션 프로토콜의 메시지들에 대응한다. 예를 들어, 애플리케이션 레벨 요청들(30)은 HTTP 또는 HTTPS 메시지들을 포함할 수 있다. 즉, 애플리케이션 레벨 요청들(30)은 클라이언트들(10)로부터의 HTTP(S) 요청 메시지들에 대응할 수 있다. 선택적으로, 애플리케이션 레벨 요청들(30)은 추가 통신 보안을 제공하기 위해 TLS 프로토콜을 포함할 수 있다.
[0031] 원격 시스템(114)은 일부 예들에서, 애플리케이션 레벨 요청들(30) 및 로드 밸런싱 구성(예컨대, 인그레스 구성)(132)을 수신하는 멀티 클러스터 로드 밸런서(130)를 실행하며, 로드 밸런싱 구성(132)은 애플리케이션 레벨 요청들(30)을 로드 밸런싱하도록 로드 밸런서(130)를 구성한다. 각각의 애플리케이션 레벨 요청(30)은 소스 클라이언트(10)와 연관된 지리적 위치(34) 및 호스트 이름(32)을 포함한다. 호스트 이름(32)은 목적지 네트워크 호스트(즉, 공통 인증 하의 하나 이상의 컴퓨터들)를 식별하는 선택 기준(예컨대, 라벨)에 대응한다. 예컨대, http://my-shop.com은 HTTP 프로토콜 및 my-shop.com의 호스트 이름을 표시하는 URL(Uniform Resource Locator)이다. 지리적 위치(34)는 개개의 클라이언트(10)의 물리적 위치(예컨대, IP(internet protocol) 어드레스)에 대응한다. 일부 애플리케이션 레벨 요청들(30)은 추가로 경로명(33)을 포함할 수 있는데, 예컨대 http:/my-shop.com/sports URL은 my-shop.com의 호스트 이름 및 /sports의 경로명을 표시한다.
[0032] 로드 밸런서(130)는 사용자(12)에 대한 소프트웨어 애플리케이션(124)을 호스팅하는 (목적지 클러스터들(120)로도 또한 지칭되는) 클러스터들(120)에 대한 액세스를 관리한다. 즉, 로드 밸런싱 구성(예컨대, 인그레스 구성)(132)에 의해 제공되는 구성을 사용하여, 로드 밸런서(130)는 목적지 클러스터들(120) 상의 소프트웨어 애플리케이션(124) 쪽으로 지향되는 애플리케이션 레벨 요청들(30)을 수신하고, 애플리케이션 레벨 요청(30)의 지리적 위치(34) 및 목적지 클러스터들(120)의 개개의 지리적 영역들(121)에 기초하여 각각의 애플리케이션 레벨 요청(30)을 목적지 클러스터들(120) 중 하나에 라우팅한다. 예를 들어, 개개의 애플리케이션 레벨 요청(30)과 연관된 지리적 위치(34)가 애플리케이션 레벨 요청(30)이 북미로부터 발생했음을 표시할 때, 로드 밸런서(130)는 애플리케이션 레벨 요청(30)을 대응하는 지리적 영역(121n)(즉, 북미)을 갖는 클러스터(120n)에 라우팅할 수 있다.
[0033] 도 1을 계속 참조하면, 일부 구현들에서, 멀티 클러스터 제어기(200)는 로드 밸런싱 구성(132)을 수신하고, 로드 밸런싱 구성(132)을 사용하여 멀티 클러스터 인그레스(400)를 구성한다. 멀티 클러스터 제어기(200)에 의해 구성된 멀티 클러스터 인그레스(400)는 클러스터들(120) 상에서 실행되는 소프트웨어 애플리케이션들(124)에 대한 URL 경로들의 매핑(즉, URL 매핑(410))을 포함한다. 즉, 멀티 클러스터 인그레스(400)가 개개의 클러스터(120)의 개개의 포드(122) 내에서 실행되는 개개의 소프트웨어 애플리케이션(124) 쪽으로 지향되는 애플리케이션 레벨 요청(30)을 수신하면, 멀티 클러스터 인그레스(400)는 URL 매핑(410)을 사용하여, 애플리케이션 레벨 요청(30)의 지리적 위치(34) 및 연관된 소프트웨어 애플리케이션(124)을 기초로 애플리케이션 레벨 요청(30)을 적절한 클러스터(120)에 라우팅한다. 사용자(12)는 애플리케이션들(124) 또는 서비스들(123)을 호스팅하기 위한 목적지 클러스터들(120)의 생성자에 대응할 수 있다. 이에 따라, 사용자(12)는 로드 밸런싱 구성(132)을 멀티 클러스터 로드 밸런서(130)의 멀티 클러스터 제어기(200)에 제공할 수 있다.
[0034] 이제 도 2를 참조하면, 멀티 클러스터 제어기(200)는 일부 예들에서, 로드 밸런싱 구성(132)의 멀티 클러스터 서비스(210)의 수신을 담당한다. 예컨대, 멀티 클러스터 로드 밸런서(130)는 로드 밸런싱 구성(132)에 기초하여 멀티 클러스터 서비스(210)를 인스턴스화할 수 있다. 멀티 클러스터 서비스(210)는 다수의 클러스터들(120)에 걸쳐 있는 자원을 표현한다. 일부 예들에서, 로드 밸런싱 구성(132)은 멀티 클러스터 서비스(210)를 고유하게 식별하는 사용자 파생 서비스 이름(211)(즉, 사용자(12)에 의해 파생된 서비스 이름)을 포함한다. 멀티 클러스터 서비스(210)는 일부 구현들에서, 어느 클러스터들(120)이 목적지 클러스터들(120)인지 그리고 목적지 클러스터들(120)의 로드 밸런싱 특성들을 정의하는 클러스터 선택 섹션(212)을 포함한다. 즉, 클러스터 선택 섹션(212)은 멀티 클러스터 서비스(210)에 대한 애플리케이션 레벨 트래픽(즉, 애플리케이션 레벨 요청들(30))을 서빙할 알려진 클러스터 리스트(125)로부터 클러스터들(120)을 선택하기 위해 멀티 클러스터 서비스(210)에 의해 지정된 클러스터 선택 기준들(213)을 식별한다. 알려진 클러스터 리스트(125)는 알려진 클러스터들(120)의 레지스트리를 포함할 수 있거나, 단순히 원격 시스템(114)의 저장 자원들(116) 상에 저장될 수 있으며 사용자(12)가 소유/생성한 또는 액세스한 복수의 클러스터들을 포함할 수 있는 클러스터 레지스트리를 의미할 수 있다. 그런 다음, 클러스터 선택 기준들(213)을 사용하여, 멀티 클러스터 제어기(200)는 멀티 클러스터 서비스(210)에 의해 지정된 클러스터 선택 기준들(213)을 충족하는 하나 이상의 라벨들(216)의 개개의 세트를 갖는 각각의 목적지 클러스터(120)에 기초하여 클러스터 레지스트리(125)로부터 한 세트의 목적지 클러스터들(120)을 선택한다. 즉, 선택된 클러스터들(120)은 클러스터들(120)이 모든 클러스터들(120)에 걸쳐 유닛으로서 선택될 수 있게 하기 위해 공통 세트의 라벨들(216)을 공유할 수 있다. 선택적으로, 멀티 클러스터 서비스(210)에 의해 지정된 클러스터 선택 기준들(213)은 하나 이상의 동등성 기반 매칭 요건들(예컨대, 환경 = 생산) 또는 하나 이상의 세트 기반 매칭 요건들(예컨대, (생산, qa)의 환경)) 중 적어도 하나를 포함한다.
[0035] 멀티 클러스터 서비스(210)는 또한, 멀티 클러스터 제어기(200)가 각각의 목적지 클러스터(120) 및 로드 밸런서(130)에서 인스턴스화/생성하는 서비스(220)를 정의하는 서비스 템플릿(214)을 포함할 수 있다. 일부 예들에서, 멀티 클러스터 서비스(210)를 정의함으로써, 멀티 클러스터 제어기(200)는 목적지 클러스터들(120)에서 파생 서비스들(220)을 자동으로 인스턴스화할 수 있다. 도시된 예에서, 멀티 클러스터 제어기(200)는 (클러스터 선택 섹션(212) 및 서비스 템플릿(214)과 함께) 멀티 클러스터 서비스(210)를 수신하고, 각각의 목적지 클러스터(120a, 120b, 120c)에서 대응하는 파생 자원(즉, 쇼핑 서비스(220))을 인스턴스화한다. 멀티 클러스터 제어기(200)는 (예컨대, 서비스들(220)을 생성, 동기화 및 삭제하는) 파생 서비스들(220)의 전체 라이프 사이클을 자동으로 관리할 수 있다. 멀티 클러스터 제어기(200)는 CRUD(create, read, update, and delete) 동작들을 사용하여 파생 서비스들(220)을 인스턴스화 및 관리할 수 있다. 따라서 멀티 클러스터 서비스(210)(예컨대, 쇼핑 서비스)에 대응하는 애플리케이션 레벨 요청들(30)이 멀티 클러스터 인그레스(400)를 통해 적절한 목적지 클러스터(120)의 파생 서비스(220)로 라우팅될 수 있다.
[0036] 각각의 대응하는 파생 서비스(220)는 다른 파생 서비스들(220)의 파생 서비스 이름들(221)과는 다른 고유 파생 서비스 이름(221)을 포함할 수 있다. 예를 들어, 파생 서비스 이름(221)은 트리밍된 서비스 이름 부분 및 고유 해시 부분을 갖는다. 트리밍된 서비스 이름 부분은 멀티 클러스터 서비스(210)의 사용자 파생 서비스 이름(211)을 포함할 수 있고, 고유 해시 부분은 멀티 클러스터 서비스(210)의 사용자 파생 서비스 이름의 고유 해시를 포함할 수 있다. 각각의 파생 서비스(220)에 대한 개개의 고유 파생 서비스 이름(221)은 사용자 정의 서비스들(123)의 이름들과의 충돌을 피할 수 있다.
[0037] 일부 예들에서, 파생 서비스들(220)은 엔드포인트들(231, 231a-n)의 그룹을 포함하는 대응하는 네트워크 엔드포인트 그룹(NEG)(230)을 생성한다. 엔드포인트들(231)의 그룹 내의 각각의 엔드포인트(231)는 대응하는 목적지 클러스터(120)의 개개의 포드(122)와 연관된다. 각각의 엔드포인트(231)는 개개의 포드(122)에 애플리케이션 레벨 트래픽(즉, 요청들(30))을 직접 분배하기 위한 개개의 포트(244) 및 개개의 IP(internet protocol) 어드레스(242)를 포함한다. 즉, NEG들(230)은 백엔드 서비스들에 대한 백엔드로서 동작하는 클러스터 자원들에 대한 IP 어드레스(242) 및 포트(244) 조합들의 집합들을 표현하는 자원들이며, 각각의 IP 어드레스(242) 및 포트(244) 조합은 네트워크 엔드포인트(231)로 지칭된다. NEG들(230)은 백엔드 서비스들, 이를테면 HTTP(S), TCP(Transmission Control Proxy) 프록시 및 SSL 프록시 로드 밸런서들에서 백엔드들로서 사용될 수 있다. NEG 백엔드들은 IP 어드레스들(242) 및 포트들(244)을 지정함으로써 포드들(122) 내에서 실행되는 애플리케이션들 또는 컨테이너들 간에 세분화된 방식으로 트래픽을 분배하는 것을 가능하게 한다. 동일한 클러스터(120) 내의 엔드포인트들(231)(예컨대, 포드들(122))이 NEG(230)에 할당될 수 있다. NEG(230)는 컨테이너 로드 밸런서(240)(즉, 클러스터(120) 내의 머신들 또는 포드들(122) 간에 트래픽을 밸런싱하기 위한 로드 밸런서) 내의 백엔드 서비스들에 대한 백엔드로서의 역할을 할 수 있다. 각각의 목적지 클러스터(120)는 개개의 NEG(230)를 프로그래밍하기 위한 대응하는 NEG 제어기(232)를 포함할 수 있다.
[0038] 다른 예들에서, 클러스터들(120)은 NEG들(230) 대신에 인스턴스 그룹들을 구현한다. NEG들(230)과 유사한 인스턴스 그룹들은 단일 엔티티로서 엔드포인트들(예컨대, 가상 머신 인스턴스들)의 집합을 함께 그룹화하고, IP 테이블들을 사용함으로써 요청들(30)을 적절한 엔드포인트로 라우팅한다. 인스턴스 그룹은 자동 스케일링(auto scaling)을 이용하는 또는 자동 스케일링 없는 관리형 인스턴스 그룹 또는 비관리형 인스턴스 그룹일 수 있다.
[0039] 인스턴스 그룹들 대신 NEG들(230)을 구현할 때, 멀티 클러스터 제어기(200)는 시스템(100)의 다른 컴포넌트들에 의한 용이한 검색을 위해 각각의 NEG(230)의 이름들(즉, 라벨들)을 저장할 수 있다. 각각의 NEG(230)는 NEG 제어기(232)에 의해 관리되는 방화벽을 포함하여, 각각의 NEG가 고유 세트의 포트들(244)을 개방하게 할 수 있다. 대안으로 또는 추가로, 멀티 클러스터 제어기(200)는 모든 각각의 목적지 클러스터(120)의 포트 범위들에 영향을 주는 방화벽 제어기를 인스턴스화할 수 있다. 예를 들어, 방화벽 제어기는 전체 포트 범위가 개방됨을 보장할 수 있고, 이어서 각각의 개별 NEG 제어기(232)가 각자의 포트 범위를 맞춤화하는 것을 가능하게 할 수 있다.
[0040] 이제 도 3a 및 도 3b를 참조하면, 일부 예들에서, 원격 시스템(114)은 추가 컴포넌트들을 실행하여 컨테이너 로드 밸런서(240)를 구현한다. 예를 들어, 포워딩 규칙(310)은 개개의 클러스터(120)의 글로벌 외부 IP 어드레스로부터의 애플리케이션 레벨 요청들(30)을 적절한 타깃 프록시(320)(도 3a)로 지향시킬 수 있다. 포워딩 규칙(310)은 IP 어드레스, 포트 및 프로토콜에 의한 요청들(30)을 타깃 프록시(320), URL 매핑(330)(예컨대, URL 매핑(410)) 및 하나 이상의 백엔드 서비스들(340), 즉 서비스(들)(123)(도 1)로 구성된 로드 밸런싱 구성으로 라우팅한다. 각각의 포워딩 규칙(310)은 클러스터(120)에 대한 단일 글로벌 IP 어드레스를 제공할 수 있다. 타깃 프록시(320)는 클라이언트들(10)로부터의 접속들(예컨대, HTTP 및 HTTPS 접속들)을 종료한다. 타깃 프록시(320)는 각각의 수신된 요청(30)을 URL 매핑(330)에 대해 체크하여, 어느 백엔드 서비스(340)가 요청(30)에 적절한지를 결정한다. HTTPS 접속들을 라우팅할 때, 타깃 프록시(320)는 로드 밸런서(240)와 클라이언트(10) 간의 통신들을 인증하기 위한 하나 이상의 SSL(Secure Sockets Layer) 인증서를 포함할 수 있다.
[0041] 도 3b에 도시된 바와 같이, IP 테이블 규칙들을 통해 트래픽을 (동일한 노드/가상 머신에 있을 수 있는 또는 없을 수 있는) 컨테이너들(예컨대, 포드들)(122)로 라우팅하는 인스턴스 그룹들과 달리, NEG들(230)은 트래픽(즉, 요청들(30))을 수신해야 하는 컨테이너들(예컨대, 포드들)(122)에 트래픽이 직접 라우팅될 수 있게 하며, 이는 여분의 네트워크 홉(hop)을 제거한다. 감소된 네트워크 홉들은 네트워크의 레이턴시 및 스루풋 모두를 개선한다.
[0042] URL 매핑(330)은 적절한 백엔드 서비스들(340)로의 요청들(30)의 URL 기반 라우팅을 위한 매칭 패턴들을 정의한다. 일부 예들에서, 디폴트 서비스(340)는 지정된 호스트 규칙 또는 경로 매칭 규칙과 일치하지 않는 임의의 요청들(30)을 취급하도록 정의된다. 선택적으로, 멀티 클러스터 제어기(200)는 목적지 클러스터들(120)에 파생 디폴트 서비스를 생성할 수 있다. 요청들(30)의 콘텐츠 기반 라우팅을 위해, URL 매핑(330)은 URL 컴포넌트들을 조사하여 요청들(30)을 상이한 세트들의 백엔드들(340)에 전송함으로써 요청들(30)을 분할한다. URL 매핑(330)으로부터 다수의 백엔드 서비스들(340)이 참조될 수 있다.
[0043] 백엔드 서비스들(340)은 착신 요청들(30)을 부착된 NEG들(230)의 하나 이상의 엔드포인트들에 지향시킨다. 백엔드 서비스(340)는 예를 들어, 그에 부착된 백엔드들의 서빙 용량, 구역 및 인스턴스 헬스에 기초하여, 각각의 요청(30)을 접속된 NEG들(230) 중 하나의 NEG의 적절한 엔드포인트로 지향시킨다. 엔드포인트 서빙 용량은 CPU 또는 RPS(requests per second)(즉, 엔드포인트가 초당 처리할 수 있는 요청들의 양(30))에 기반할 수 있다. 각각의 백엔드 서비스(340)는 또한 NEG들(230)의 엔드포인트들에 대해 어떤 헬스 점검들을 수행할지를 지정할 수 있다.
[0044] 이제 도 4를 참조하면, 멀티 클러스터 제어기(200)는 멀티 클러스터 인그레스(400), 및 사용자 파생 서비스 이름(211)을 사용하여 멀티 클러스터 인그레스(400)에 의해 정의된 멀티 클러스터 서비스(210)를 관리한다. 멀티 클러스터 인그레스(400)는 계층 7 프로토콜 및 종료 설정들(예컨대, TLS(Transport Layer Security) 인증서들)을 포함하고, URL 매핑(410)은 목적지 클러스터들(120) 상에서 실행되는 하나 이상의 서비스들(123)에 매핑되는 하나 이상의 호스트 이름들(412) 및/또는 URL 경로들의 리스트를 지정한다. 각각의 목적지 클러스터(120)는 멀티 클러스터 서비스(210)와 통신하는 개개의 파생 서비스(220)를 포함한다. 멀티 클러스터 제어기(200)가 수신하는 소프트웨어 애플리케이션(124)(또는 서비스(123)) 쪽으로 지향되는 각각의 애플리케이션 레벨 요청(30)에 대해, 멀티 클러스터 제어기(200)는 수신된 애플리케이션 레벨 요청(30)의 호스트 이름(32)이 URL 매핑(410)에 의해 지정된 하나 이상의 호스트 이름들(412)의 리스트 내의 호스트 이름들(412) 중 하나를 포함하는지 여부를 결정한다. 대신에 또는 추가로, 제어기(200)는 수신된 애플리케이션 레벨 요청(30)의 URL 경로(33)가 URL 매핑(410)에 의해 지정된 경로들(413)의 리스트 내의 경로들 중 하나를 포함하는지 여부를 결정할 수 있다. 수신된 애플리케이션 레벨 요청(30)의 호스트 이름(32)(및/또는 경로(33))이 리스트 내의 호스트 이름들(412)(및/또는 경로들(413)) 중 하나를 포함할 때, 멀티 클러스터 제어기(200)는 수신된 애플리케이션 레벨 요청(30)을 애플리케이션(124) 또는 서비스(123)(예컨대, 쇼핑 서비스)와 연관된 멀티 클러스터 서비스(210)에 포워딩한다. 여기서 멀티 클러스터 서비스 제어기(200)는, 배포된 서비스(123)를 실행하는 목적지 클러스터들(120, 120a-c) 중 하나의 목적지 클러스터의 개개의 목적지 서비스(220)에 대한 수신된 애플리케이션 레벨 요청(30)을 로드 밸런싱하는 임무를 맡는다. 일부 구현들에서, 멀티 클러스터 서비스 제어기(200)는 목적지 클러스터들(120)의 각각의 지리적 영역들(121a-c)에 기초하여, 어느 목적지 클러스터(120)가 요청(30)의 지리적 위치(34)(예컨대, 요청(30)을 송신한 클라이언트(10)와 연관된 위치(34))에 가장 가까운지를 결정한다. 멀티 클러스터 제어기(200)는 멀티 클러스터 서비스(210)에 의해 정의된 라우팅 결정들을 통해, 애플리케이션 레벨 요청(30)의 클라이언트(10)와 연관된 지리적 위치(34)에 가장 가까운 개개의 지리적 영역(121)을 갖는 목적지 클러스터(120)에 애플리케이션 레벨 요청(30)을 라우팅할 수 있다.
[0045] 도시된 예에서, 클라이언트(10a)는 도쿄에 위치되고, 클라이언트(10b)는 산호세에 위치되며, 클라이언트(10c)는 보스턴에 위치된다. 추가로, 쇼핑 서비스(123)를 실행하는 한 세트의 목적지 클러스터들(120)은 도쿄의 지리적 영역(121a)과 연관된 제1 클러스터(120a), 샌프란시스코의 지리적 영역(121b)과 연관된 제2 클러스터(120b), 및 뉴욕 시티의 지리적 영역(121c)과 연관된 제3 클러스터(120c)를 포함한다. 각각의 클라이언트(10a, 10b, 10c)는 제어기(200)에 의해 수신된 개개의 애플리케이션 레벨 요청(30a, 30b, 30c)을 송신한다. 제어기(200)는 요청들(30)과 연관된 지리적 위치(34)(즉, 도쿄, 산호세 및 보스턴)에 기초하여, 요청(30a)을 클러스터(120a)에, 요청(30b)을 클러스터(120b)에, 그리고 요청(30c)을 클러스터(120c)에 라우팅한다. 일부 예들에서, 멀티 클러스터 제어기(200)는 가장 낮은 레이턴시(즉, 요청(30)이 클라이언트(10)로부터 개개의 클러스터(120)로 이동하는 데 걸리는 시간의 양)와 연관된 클러스터(120)에 기초하여 각각의 요청(30)을 라우팅한다. 즉, 각각의 목적지 클러스터(120)는 클라이언트(10)로부터의 개개의 레이턴시를 가지며, 멀티 클러스터 제어기(200)는 임의의 주어진 시간 인스턴스에서 각각의 목적지 클러스터(120)의 가장 낮은 레이턴시로 요청(30)을 클러스터(120)에 라우팅할 수 있다. 다른 예들에서, 멀티 클러스터 제어기(200)는 요청의 지리적 위치(34)와 연관되는 영역 라벨과 클러스터(120)의 지리적 영역(121)과 연관되는 영역 라벨을 매칭시키는 동등성에 기초하여 각각의 요청을 라우팅한다. 예컨대, 요청(30)은 "아시아"에 대응하는 영역 라벨을 포함할 수 있고, 멀티 클러스터 인그레스(400)는 매칭 영역 라벨(즉, "아시아")을 갖는 클러스터에 요청(30)을 라우팅할 수 있다.
[0046] 일부 예들에서, 제어기(200)는 멀티 클러스터 서비스(210)에 의해 지정된 개개의 로드 밸런싱(LB: load balancing) 속성들(420)에 기초하여 요청들(30)을 라우팅한다. 예를 들어, 애플리케이션 레벨 요청들(30)은 항상 가장 가까운(즉, 지리적으로 가장 가까운) 이용 가능한 클러스터(120)로 라우팅될 수 있다. 일부 구현들에서, 클러스터들(120)은 클라이언트 수요를 수용하도록 자동으로 스케일링될 것이다(예컨대, 각각의 클러스터(120) 내의 컨테이너들(예컨대, 포드들)(122)의 수를 증가 또는 감소시킬 것이다). 이 예에서, 각각의 클러스터는 실제로 무한한 자원들을 가지며, 따라서 클라이언트들(10)은 항상 가장 가까운 클러스터(120)로 라우팅될 것이다. 클라이언트 수요에 기초하여 클러스터 단위로 자원들의 수를 자동으로 스케일링함으로써, 클러스터(120)당 이용량(즉, 총 이용 가능한 자원들 대비 사용 중인 자원들의 퍼센티지)이 높게 유지된다. 도 4의 예에서, 클러스터들(120)이 클라이언트 수요를 수용할 무제한의 용량을 갖는 경우, 클러스터들(120)은 로드 밸런서(130)가 산호세 및 보스턴으로부터보다 도쿄로부터 더 많은 수의 애플리케이션 레벨 요청들(30)(즉, 초당 요청들)을 수신하고 있을 때, 도쿄의 지리적 영역(121a) 내의 제1 클러스터(120a)가 자원들/컨테이너들(122)(예컨대, 포드들)의 수를 스케일 업(scale up)하여 최종 사용자 수요의 증가를 충족시킬 수 있도록 동적으로 스케일링하여 최종 사용자 수요를 충족시킬 수 있다. 다른 지리적 영역들(121b, 121c) 내의 제2 클러스터(120b) 및 제3 클러스터(120c) 중 적어도 하나는 또한, 대응하는 지리적 위치들(34)에서의 최종 사용자 요구에 기초하여 스케일 다운(scale-down)될 수 있다. 로드 밸런서(130)가 요청들(30)을 가장 가까운 지리적 영역(121)으로 라우팅하는 이러한 자동 스케일링 시나리오들에서, 클러스터들(120)은 상태 기반(stateful) 서비스들(123)을 제공하기 위해 서로 간에 상태를 동기화할 것이 요구될 수 있다. 로드 밸런서(130)는 클러스터들(120) 각각에서의 동적 용량에 기초하여 계속해서 업데이트할 수 있다.
[0047] 다른 구현들에서, 클러스터들(120)은 고정된 자원 용량을 갖는다(즉, 클러스터들(120)이 스케일링되지 않음). 이러한 상황에서, 애플리케이션 레벨 요청(30)을 라우팅하기 전에, 멀티 클러스터 제어기(200)는 각각의 목적지 클러스터(120)에 대해, 목적지 클러스터(120)에 현재 라우팅된 애플리케이션 레벨 요청들(30)(예컨대, 초당 요청들)의 수가 최대 요청 레이트를 충족하는지 여부를 결정한다. 애플리케이션 레벨 요청들(30)의 수가 최대 요청 레이트를 충족할 때, 멀티 클러스터 제어기(200)는 목적지 클러스터(120)로의 애플리케이션 레벨 요청(30)의 라우팅을 막는다. 즉, 로드 밸런싱 속성들(420)은 최대 요청 레이트들(즉, 최대 RPS)을 포함할 수 있고, 이러한 상황에서, 위에서 논의된 바와 같이 지리적 영역(121)에 기반한 가장 가까운 클러스터가 자신의 임계 RPS를 충족하거나 초과했다면, 멀티 클러스터 인그레스(400)는 (예컨대, 레이턴시 또는 영역 라벨들에 기초하여) 요청(30)을 다음으로 가장 가까운 클러스터(120)로 라우팅할 수 있다. 두 번째로 가장 가까운 클러스터(120)가 또한 자신의 최대 RPS를 초과했다면, 멀티 클러스터 인그레스(400)는 세 번째로 가장 가까운 클러스터(120)로 이동할 수 있는 식이다. 더욱이, 목적지 클러스터들(120) 중 적어도 하나와 연관된 고정된 자원 용량은 다른 목적지 클러스터들(120)과 연관된 고정된 자원 용량들과는 다를 수 있다.
[0048] 로드 밸런싱 속성들(420)은 추가로 또는 대안으로, 애플리케이션 레벨 요청들(30)이 요청(30)을 수용할 용량을 갖는 가장 가까운 지리적 클러스터(120)로 라우팅되게 하는 멀티 클라우드 및/또는 하이브리드 로드 밸런싱 속성들을 포함할 수 있다. 클러스터(120)는 다른 클라우드 컴퓨팅 네트워크에 있거나 심지어 애플리케이션 레벨 요청(30)이 발생한 것과 동일한 지리적 위치(34)(예컨대, 구내(on-premises))에 있을 수 있다. 이는, 단일 클라우드 컴퓨팅 네트워크에서 다수의 지역적 정전(regional outage)들에 대해 탄력적인 고도로 이용 가능한 서비스들을 가능하게 하고, 새로운 클라우드 컴퓨팅 네트워크의 론치(launch)를 용이하게 한다.
[0049] 각각의 클러스터(120)는 개별화된 로드 밸런싱 속성들(420)을 수신할 수 있거나, 동일한 속성들(420)이 모든 목적지 클러스터들(120)에 적용될 수 있다. 사용자(12)가 로드 밸런싱 속성들(420)을 제공하지 않으면, 멀티 클러스터 인그레스(400)는 디폴트 거동(예컨대, 가장 낮은 레이턴시를 갖는 클러스터(120))에 기초하여 라우팅할 수 있다.
[0050] 일부 구현들에서, 로드 밸런싱 속성들(420)은 데이터 지역성(data-locality) 라우팅 속성들을 포함한다. 즉, 로드 밸런싱 속성들은 HTTP(S) 헤더 정보(예컨대, HTTP 쿠키들)에 기초하여 애플리케이션 레벨 요청들(30)을 클러스터(120)에 라우팅할 수 있다. 이는 클라이언트들(10)이 자신들의 애플리케이션 레벨 요청들(30)을 이미 그들의 데이터를 호스팅하고 있는 클러스터들(120)의 지리적 위치들/구역들(121)로 라우팅되게 하고, 임의의 데이터 상주(residency) 요건들 또는 법들을 충족시키는 것을 도울 수 있게 한다. 이에 따라, 한 세트의 목적지 클러스터들(120)에 걸쳐 실행되는 기본 서비스(123)에 대해 단일 IP 어드레스만이 공개될 필요가 있다. 데이터 상주는 일반적으로, 클라이언트 데이터가 특정 국가의 경계들 내에서 처리 및/또는 저장되어야 한다는 요건들로서 정의된다. 선택적으로, 클러스터들(120)은 클라이언트들(10)의 다수의 세트들을 동시에 서빙하기 위해 데이터를 서로 간에 동기화한다. 여기서 자원들/컨테이너들/포드들(122)은 최종 사용자 요구에 기초하여 개개의 클러스터들 내에서 스케일 업 또는 다운될 수 있다. 동기화된 데이터는 또한, 클러스터(120)가 고장 나거나 아니면 비정상적인 경우에 애플리케이션 레벨 요청들(30)이 대안적인 클러스터들(120)로 재라우팅될 수 있게 한다. 로드 밸런싱 속성들(420)은, HTTP 쿠키들 또는 지오-헤더(geo-header)들과 같은 HTTP(S) 헤더 정보에 기초하여 단일 클러스터 내의 서비스들에 애플리케이션 레벨 요청들(30)이 라우팅되는 클라이언트 기반 라우팅을 포함한다. 이는 로드 밸런서(130)가 클라이언트들(10)을 쉽게 그룹화하고 상이한 서비스들로 라우팅할 수 있게 한다.
[0051] 로드 밸런싱 속성들(420)은 또한 트래픽 분할을 위한 속성들을 포함할 수 있다. 트래픽 분할 속성들은 로드 밸런서(130)가 사용자(12)에 의해 정의된 클러스터들(120) 사이의 퍼센티지(%) 분할 또는 RPS 비에 기초하여 애플리케이션 레벨 요청들(30)을 클러스터들(120)에 라우팅할 수 있게 한다. 즉, 각각의 클러스터에는 (예컨대, 사용자(12)에 의해) 총 트래픽의 퍼센티지(즉, 애플리케이션 레벨 요청들(30))가 할당될 수 있고, 제어기(200)는 할당된 퍼센티지들에 기초하여 애플리케이션 레벨 요청들(30)을 클러스터(120)에 랜덤하게 라우팅할 수 있다. 새로운 지리적 영역(121)의 클러스터(120)가 느리게 띄워질 수 있기 때문에(즉, 시간 경과에 따라 증가하는 작은 퍼센티지로 시작하고, 간혹 카나리 배포(canary deployment)로 지칭됨), 그러한 트래픽 분할은 새로운 지리적 영역(121)의 클러스터(120)로의 워크로드들의 마이그레이션(migration)을 용이하게 한다. 트래픽 분할을 위한 속성들을 지정하는 로드 밸런싱 속성들(420)은 다중 영역 분할 또는 영역 내 분할을 가능하게 할 수 있다. 다중 영역 분할에서, 트래픽이 지리적 영역들(121)에 걸쳐 분할될 수 있다. 이에 따라, 주어진 지리적 영역(34) 내의 동일한 클라이언트(10)로부터의 다수의 애플리케이션 레벨 요청들(30)이 하나보다 많은 지리적 영역(121) 내의 클러스터들(120)로 라우팅될 수 있다. 예컨대, 보스턴의 클라이언트(10c)는 다수의 애플리케이션 레벨 요청들(30)을 발행할 수 있으며, 이로써 로드 밸런서(130)가 이러한 요청들(30)의 일부를 뉴욕 시티와 연관된 지리적 영역(121c)의 제3 목적지 클러스터(120c)에 라우팅하고, 이러한 요청들(30)의 나머지 부분을 도쿄와 연관된 지리적 영역(121a)의 제1 목적지 클러스터(120a)에 라우팅한다. 영역 내 분할에서는, 트래픽이 동일한 지리적 영역(121) 내에서만 분할될 수 있다. 즉, 애플리케이션 레벨 요청들(30)은 영역 내 분할에 의해, 동일한 지리적 영역(121) 내에서만 분할될 수 있는 한편, 교차 영역 트래픽은 영향을 받지 않는다. 예컨대, 도쿄의 클라이언트들(10)은 아시아와 연관된 지리적 영역(121)에 위치된 2개의 개별 클러스터들(120) 간에 분할될 수 있지만, 유럽과 연관된 지리적 영역(121)을 갖는 클러스터로는 라우팅되지 않을 수 있다. 로드 밸런싱 속성들(420)은 또한 클러스터 내 트래픽 분할을 가능하게 할 수 있다. 클러스터 내 트래픽 분할에 의해, 애플리케이션 레벨 요청들(30)은 할당된 퍼센티지들(즉, 로드 밸런싱 속성들(420)에 의해 할당됨)에 기초하여 단일 클러스터(120) 내의 서비스들로 랜덤하게 라우팅될 수 있다. 이는 예를 들어, 서비스들의 새로운 버전들의 테스트를 가능하게 한다. 즉, 서비스의 새로운 버전이 테스트를 위해 적은 퍼센티지의 트래픽으로 라우팅될 수 있는 한편, 대부분의 트래픽은 서비스의 오리지널 버전으로 라우팅된다.
[0052] 도 5는 멀티 클러스터 컨테이너화 오케스트레이션 시스템(100)에 걸쳐 애플리케이션 레벨 요청들(30)을 로드 밸런싱하기 위한 예시적인 방법(500)의 흐름도이다. 이 방법(500)은 도 1 - 도 4를 참조하여 설명될 수 있다. 이 방법(500)은 동작(502)에서, 데이터 처리 하드웨어(118)에서, 사용자(12)에 의해 배포된 소프트웨어 애플리케이션(124)을 호스팅하는 한 세트의 목적지 클러스터들(120)에 대한 액세스를 관리하는 멀티 클러스터 로드 밸런서(130)에 대한 로드 밸런싱 구성(132)을 수신하는 것으로 시작된다. 멀티 클러스터 로드 밸런서(130)는 한 세트의 목적지 클러스터들(120)에 걸쳐 소프트웨어 애플리케이션(124)과 연관된 애플리케이션 레벨 트래픽(30)을 로드 밸런싱하기 위해 로드 밸런싱 구성(132)을 사용하도록 구성된다. 각각의 목적지 클러스터(120)는 소프트웨어 애플리케이션(124)을 실행하는 적어도 하나의 컨테이너(122), 및 한 세트의 목적지 클러스터들 내의 목적지 클러스터들(120) 중 다른 하나와 연관된 적어도 하나의 다른 지리적 영역(121)과 동일한 또는 상이한 개개의 지리적 영역(121)을 포함한다.
[0053] 동작(504)에서, 이 방법(500)은 데이터 처리 하드웨어(118)에서, 한 세트의 목적지 클러스터들(120)에 걸쳐 호스팅되는 소프트웨어 애플리케이션(124) 쪽으로 지향되는 애플리케이션 레벨 요청(30)을 수신하는 단계를 포함한다. 애플리케이션 레벨 요청(30)은 클라이언트(10)로부터 수신되고, 클라이언트(10)와 연관된 지리적 위치(34) 및 호스트 이름(32)을 포함한다. 애플리케이션 레벨 요청(30)은 또한 경로명(33)을 포함할 수 있다. 동작(506)에서, 이 방법(500)은 데이터 처리 하드웨어(118)에 의해, 애플리케이션 레벨 요청(30)의 지리적 위치(34) 및 한 세트의 목적지 클러스터들(120)의 개개의 지리적 영역들(121)에 기초하여 한 세트의 목적지 클러스터들 내의 목적지 클러스터들(120) 중 하나에 애플리케이션 레벨 요청(30)을 라우팅하는 단계를 포함한다.
[0054] 도 6은 본 문헌에서 설명되는 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스(600)의 개략도이다. 컴퓨팅 디바이스(600)는 랩톱들, 데스크톱들, 워크스테이션들, 개인용 디지털 보조기기들, 서버들, 블레이드 서버들, 메인프레임들 및 다른 적절한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 나타내는 것으로 의도된다. 여기에 도시된 컴포넌트들, 이들의 접속들 및 관계들, 그리고 이들의 기능들은 단지 예시로 여겨지며, 본 문서에서 설명 및/또는 청구된 발명들의 구현들을 제한하는 것으로 여겨지는 것은 아니다.
[0055] 컴퓨팅 디바이스(600)는 프로세서(610), 메모리(620), 저장 디바이스(630), 메모리(620)와 고속 확장 포트들(650)에 접속되는 고속 인터페이스/제어기(640), 및 저속 버스(670)와 저장 디바이스(630)에 접속되는 저속 인터페이스/제어기(660)를 포함한다. 컴포넌트들(610, 620, 630, 640, 650, 660) 각각은 다양한 버스들을 사용하여 상호 접속되고, 공통 마더보드 상에 또는 다른 방식들로 적절하게 장착될 수 있다. 프로세서(610)는 메모리(620)에 또는 저장 디바이스(630) 상에 저장된 명령들을 포함하여 컴퓨팅 디바이스(600) 내에서 실행하기 위한 명령들을 처리하여, 고속 인터페이스(640)에 결합된 디스플레이(680)와 같은 외부 입력/출력 디바이스 상에 GUI(graphical user interface)에 대한 그래픽 정보를 디스플레이할 수 있다. 다른 구현들에서는, 다수의 메모리들 및 다수의 타입들의 메모리와 함께 다수의 프로세서들 및/또는 다수의 버스들이 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(600)이 접속될 수 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크, 블레이드 서버들의 그룹 또는 다중 프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[0056] 메모리(620)는 컴퓨팅 디바이스(600) 내에 비-일시적으로 정보를 저장한다. 메모리(620)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(620)는 컴퓨팅 디바이스(600)에 의한 사용을 위해 일시적 또는 영구적으로 프로그램들(예컨대, 명령들의 시퀀스들) 또는 데이터(예컨대, 프로그램 상태 정보)를 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 비휘발성 메모리의 예들은 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예컨대, 통상적으로 부팅 프로그램들과 같은 펌웨어에 사용됨)을 포함한다(그러나 이에 한정되는 것은 아님). 휘발성 메모리의 예들은 RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory)뿐만 아니라 디스크들 또는 테이프들을 포함한다(그러나 이에 한정된 것은 아님).
[0057] 저장 디바이스(630)는 컴퓨팅 디바이스(600)에 대한 대용량 저장소를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(630)는 컴퓨터 판독 가능 매체이다. 다양한 서로 다른 구현들에서, 저장 디바이스(630)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성들의 디바이스들을 포함하는 디바이스들의 어레이일 수 있다. 추가 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어로 유형적으로 구현된다. 컴퓨터 프로그램 제품은 실행될 때, 앞서 설명한 것들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 메모리(620), 저장 디바이스(630), 또는 프로세서(610) 상의 메모리와 같은 컴퓨터 판독 가능 또는 기계 판독 가능 매체이다.
[0058] 고속 제어기(640)는 컴퓨팅 디바이스(600)에 대한 대역폭 집약적 동작들을 관리하는 한편, 저속 제어기(660)는 더 낮은 대역폭 집약적 동작들을 관리한다. 이러한 임무들의 할당은 단지 예시일 뿐이다. 일부 구현들에서, 고속 제어기(640)는 메모리(620)에, (예컨대, 그래픽 프로세서 또는 가속기를 통해) 디스플레이(680)에, 그리고 (도시되지 않은) 다양한 확장 카드들을 수용할 수 있는 고속 확장 포트들(650)에 결합된다. 일부 구현들에서, 저속 제어기(660)는 저장 디바이스(630) 및 저속 확장 포트(690)에 결합된다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(690)는 하나 이상의 입력/출력 디바이스들, 이를테면 키보드, 포인팅 디바이스, 스캐너, 또는 네트워킹 디바이스, 이를테면 스위치 또는 라우터에 예컨대, 네트워크 어댑터를 통해 결합될 수 있다.
[0059] 컴퓨팅 디바이스(600)는 도면에 도시된 바와 같이, 다수의 서로 다른 형태들로 구현될 수 있다. 예를 들어, 이는 표준 서버(600a)로서 또는 그러한 서버들(600a)의 그룹으로 여러 번, 랩톱 컴퓨터(600b)로서, 또는 랙(rack) 서버 시스템(600c)의 일부로서 구현될 수 있다.
[0060] 본 명세서에서 설명된 시스템들 및 기법들의 다양한 구현들은 디지털 전자 및/또는 광학 회로, 집적 회로, 특수 설계된 ASIC(application specific integrated circuit)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 이들에 데이터 및 명령들을 송신하도록 결합된, 특수 또는 범용일 수 있는 적어도 하나의 프로그래밍 가능 프로세서를 포함하는 프로그래밍 가능 시스템 상에서 실행 가능하고 그리고/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0061] 소프트웨어 애플리케이션(즉, 소프트웨어 자원)은 컴퓨팅 디바이스가 작업을 수행하게 하는 컴퓨터 소프트웨어를 의미할 수 있다. 일부 예들에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로 지칭될 수 있다. 예시적인 애플리케이션들은 시스템 진단 애플리케이션들, 시스템 관리 애플리케이션들, 시스템 유지 보수 애플리케이션들, 워드 프로세싱 애플리케이션들, 스프레드시트 애플리케이션들, 메시징 애플리케이션들, 미디어 스트리밍 애플리케이션들, 소셜 네트워킹 애플리케이션들 및 게임 애플리케이션들을 포함하지만 이에 제한되는 것은 아니다.
[0062] (프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로도 또한 알려진) 이러한 컴퓨터 프로그램들은 프로그램가능 프로세서에 대한 기계 명령들을 포함하며, 고레벨 절차적 그리고/또는 객체 지향 프로그래밍 언어로, 그리고/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용된 바와 같이, "기계 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"라는 용어들은 기계 판독 가능 신호로서 기계 명령들을 수신하는 기계 판독 가능 매체를 포함하여, 프로그래밍 가능한 프로세서에 기계 명령들 및/또는 데이터를 제공하는 데 사용되는 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독 가능 매체, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광 디스크들, 메모리, PLD(Programmable Logic Device)들)를 의미한다. "기계 판독 가능 신호"라는 용어는 기계 명령들 및/또는 데이터를 프로그래밍 가능 프로세서에 제공하는 데 사용되는 임의의 신호를 의미한다.
[0063] 본 명세서에서 설명한 프로세스들 및 논리 흐름들은 입력 데이터에 대해 동작하여 출력을 발생시킴으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는, 데이터 처리 하드웨어로도 또한 지칭되는 하나 이상의 프로그래밍 가능 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 특수 목적 로직 회로, 예컨대 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은 예로서, 범용 및 특수 목적의 마이크로프로세서들 모두, 그리고 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서 그리고 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대 자기, 마그네토 광 디스크들, 또는 광 디스크들을 포함하거나, 이들로부터 데이터를 수신하고 또는 이들에 데이터를 전송하도록, 또는 둘 다를 위해 동작 가능하게 결합될 것이다. 그러나 컴퓨터가 이러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체들은 예로서 반도체 메모리 디바이스들, 예컨대 EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대 내부 하드 디스크들 또는 착탈식 디스크들; 마그네토 광 디스크들; 그리고 CD ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태들의 비휘발성 메모리, 매체들 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 특수 목적 로직 회로에 포함될 수 있다.
[0064] 사용자와의 상호 작용을 제공하기 위해, 본 개시내용의 하나 이상의 양상들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예컨대 CRT(cathode ray tube), LCD(liquid crystal display) 모니터 또는 터치 스크린, 그리고 선택적으로는, 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드와 포인팅 디바이스, 예컨대 마우스 또는 트랙볼을 갖는 컴퓨터 상에 구현될 수 있다. 다른 종류들의 디바이스들이 사용자와의 상호 작용을 제공하는 데 역시 사용될 수 있는데; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예컨대 시각적 피드백, 청각적 피드백 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 이러한 디바이스로부터 문서들을 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써 사용자와 상호 작용할 수 있다.
[0065] 다수의 구현들이 설명되었다. 그럼에도, 본 개시내용의 사상 및 범위를 벗어나지 않으면서 다양한 변형들이 이루어질 수 있다고 이해될 것이다. 이에 따라, 다른 구현들이 다음의 청구항들의 범위 내에 있다.

Claims (22)

  1. 데이터 프로세싱 하드웨어에 의해 수행되는 컴퓨터로 구현되는 방법으로서,
    하나 이상의 클라이언트들로부터, 분산형 시스템의 다수의 지역적 구역(regional zone)들에서 호스팅되는 소프트웨어 애플리케이션으로 향하는 복수의 애플리케이션 레벨 요청들을 수신하는 단계 ― 상기 다수의 지역적 구역들의 각각의 지역적 구역은 개별 노드 그룹을 정의하는 컨테이너 포드(container pod)들의 대응하는 클러스터를 포함하고, 상기 대응하는 클러스터는 상기 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드를 포함함 ―;
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 다수의 지역적 구역들 중 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 단계;
    상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드(traffic load)를 충족할 수 있는지 여부를 결정하는 단계; 및
    상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드를 충족할 수 없는 경우, 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화(instantiate)함으로써 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹을 스케일링하는 단계
    를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하는,
    방법.
  3. 제1항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 복수의 애플리케이션 레벨 요청들을 가장 가까운 지리적으로 이용가능한 컨테이너 포드들의 클러스터로 라우팅하는,
    방법.
  4. 제1항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 하나 이상의 클라이언트들 중 개별 클라이언트에 의해 수립되는,
    방법.
  5. 제1항에 있어서,
    상기 특정 지역적 구역은 상기 하나 이상의 애플리케이션 레벨 요청들의 지리적 위치에 기초하는,
    방법.
  6. 제1항에 있어서,
    각각의 개별 노드 그룹은 멀티-클러스터 서비스에 의해 중앙식으로 관리되는,
    방법.
  7. 제1항에 있어서,
    상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화하는 것은, 개별 새로운 컨테이너 포드에 상기 소프트웨어 애플리케이션을 생성하도록 구성된 론치 템플릿(launch template)를 이용하여 상기 하나 이상의 새로운 컨테이너 포드들을 생성하는 것을 포함하는,
    방법.
  8. 제1항에 있어서,
    상기 개별 노드 그룹은 애플리케이션 레벨 트래픽을 하나 이상의 컨테이너 포드들로 직접 배포하기 위한 개별 포트 및 개별 인터넷 프로토콜(IP) 어드레스를 포함하는,
    방법.
  9. 제1항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTP(HyperText Transfer Protocol)를 포함하는,
    방법.
  10. 제1항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTPS(HyperText Transfer Protocol Secure)를 포함하는,
    방법.
  11. 제1항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청의 적어도 일부는 TLS(transport layer security) 프로토콜을 포함하는,
    방법.
  12. 데이터 프로세싱 하드웨어 및 상기 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함하는 시스템으로서,
    상기 메모리 하드웨어는, 상기 데이터 프로세싱 하드웨어에 의해 실행될 때, 상기 데이터 프로세싱 하드웨어로 하여금 하기의 동작들을 수행하게 하는 명령어들을 저장하고 있고, 상기 동작들은:
    하나 이상의 클라이언트들로부터, 분산형 시스템의 다수의 지역적 구역(regional zone)들에서 호스팅되는 소프트웨어 애플리케이션으로 향하는 복수의 애플리케이션 레벨 요청들을 수신하는 동작 ― 상기 다수의 지역적 구역들의 각각의 지역적 구역은 개별 노드 그룹을 정의하는 컨테이너 포드(container pod)들의 대응하는 클러스터를 포함하고, 상기 대응하는 클러스터는 상기 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드를 포함함 ―;
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 다수의 지역적 구역들 중 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 동작;
    상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드(traffic load)를 충족할 수 있는지 여부를 결정하는 동작; 및
    상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드를 충족할 수 없는 경우, 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화(instantiate)함으로써 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹을 스케일링하는 동작
    을 포함하는,
    시스템.
  13. 제12항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하는,
    시스템.
  14. 제12항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 복수의 애플리케이션 레벨 요청들을 가장 가까운 지리적으로 이용가능한 컨테이너 포드들의 클러스터로 라우팅하는,
    시스템.
  15. 제12항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 하나 이상의 클라이언트들 중 개별 클라이언트에 의해 수립되는,
    시스템.
  16. 제12항에 있어서,
    상기 특정 지역적 구역은 상기 하나 이상의 애플리케이션 레벨 요청들의 지리적 위치에 기초하는,
    시스템.
  17. 제12항에 있어서,
    각각의 개별 노드 그룹은 멀티-클러스터 서비스에 의해 중앙식으로 관리되는,
    시스템.
  18. 제12항에 있어서,
    상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화하는 것은, 개별 새로운 컨테이너 포드에 상기 소프트웨어 애플리케이션을 생성하도록 구성된 론치 템플릿(launch template)를 이용하여 상기 하나 이상의 새로운 컨테이너 포드들을 생성하는 것을 포함하는,
    시스템.
  19. 제12항에 있어서,
    상기 개별 노드 그룹은 애플리케이션 레벨 트래픽을 하나 이상의 컨테이너 포드들로 직접 배포하기 위한 개별 포트 및 개별 인터넷 프로토콜(IP) 어드레스를 포함하는,
    시스템.
  20. 제12항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTP(HyperText Transfer Protocol)를 포함하는,
    시스템.
  21. 제12항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTPS(HyperText Transfer Protocol Secure)를 포함하는,
    시스템.
  22. 제12항에 있어서,
    상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청의 적어도 일부는 TLS(transport layer security) 프로토콜을 포함하는,
    시스템.
KR1020227025648A 2019-04-01 2019-11-21 멀티 클러스터 인그레스 KR102508398B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237007705A KR102604082B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/372,220 2019-04-01
US16/372,220 US10887380B2 (en) 2019-04-01 2019-04-01 Multi-cluster ingress
KR1020217031819A KR102425996B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스
PCT/US2019/062652 WO2020205006A1 (en) 2019-04-01 2019-11-21 Multi-cluster ingress

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217031819A Division KR102425996B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237007705A Division KR102604082B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스

Publications (2)

Publication Number Publication Date
KR20220110329A true KR20220110329A (ko) 2022-08-05
KR102508398B1 KR102508398B1 (ko) 2023-03-08

Family

ID=68848510

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020237007705A KR102604082B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스
KR1020217031819A KR102425996B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스
KR1020227025648A KR102508398B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020237007705A KR102604082B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스
KR1020217031819A KR102425996B1 (ko) 2019-04-01 2019-11-21 멀티 클러스터 인그레스

Country Status (6)

Country Link
US (3) US10887380B2 (ko)
EP (1) EP3949341A1 (ko)
JP (3) JP7101319B2 (ko)
KR (3) KR102604082B1 (ko)
CN (2) CN113906723B (ko)
WO (1) WO2020205006A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12019607B2 (en) * 2018-12-14 2024-06-25 Salesforce, Inc. Methods, apparatuses, and computer program products for management of and search index generation based on geographically distributed data
US11539675B2 (en) 2018-06-06 2022-12-27 Slack Technologies, Llc Encryption key management for international data residency
US11949739B2 (en) 2018-12-14 2024-04-02 Salesforce, Inc. Methods, apparatuses, and computer program products for management of data deletion requests based on geographically distributed data
US10887380B2 (en) * 2019-04-01 2021-01-05 Google Llc Multi-cluster ingress
US11522913B1 (en) 2019-09-03 2022-12-06 Rapid7, Inc. Simplifying networking setup complexity for security agents
US11201897B1 (en) * 2019-09-03 2021-12-14 Rapid7, Inc. Secure multiplexed routing
US11297036B1 (en) 2019-09-03 2022-04-05 Rapid7, Inc. Single whitelisted ingress endpoint on 1 and 2 way TLS connections
US11157304B2 (en) * 2019-11-01 2021-10-26 Dell Products L.P. System for peering container clusters running on different container orchestration systems
US11165860B2 (en) * 2019-11-01 2021-11-02 Uber Technologies, Inc. Dynamically computing load balancer subset size in a distributed computing system
EP4078901A4 (en) 2020-04-01 2023-10-11 VMWare, Inc. AUTOMATIC DEPLOYMENT OF NETWORK ELEMENTS FOR HETEROGENEOUS COMPUTING ELEMENTS
US12088737B2 (en) * 2020-07-02 2024-09-10 EMC IP Holding Company LLC Method to establish an application level SSL certificate hierarchy between master node and capacity nodes based on hardware level certificate hierarchy
US11803408B2 (en) 2020-07-29 2023-10-31 Vmware, Inc. Distributed network plugin agents for container networking
US11863352B2 (en) * 2020-07-30 2024-01-02 Vmware, Inc. Hierarchical networking for nested container clusters
WO2022031835A1 (en) * 2020-08-05 2022-02-10 Avesha, Inc. Networked system for real-time computer-aided augmentation of live input video stream
US11388234B2 (en) * 2020-10-19 2022-07-12 Hewlett Packard Enterprise Development Lp Infrastructure for deploying a security information and event management application on a container platform
US12003385B2 (en) 2021-03-02 2024-06-04 Cisco Technology, Inc. Dynamic network routing based on application load
WO2022186986A1 (en) * 2021-03-02 2022-09-09 Cisco Technology, Inc. Dynamic network routing based on application load
US11303712B1 (en) * 2021-04-09 2022-04-12 International Business Machines Corporation Service management in distributed system
US11805073B2 (en) 2021-05-03 2023-10-31 Avesha, Inc. Controlling placement of workloads of an application within an application environment
US11729296B2 (en) * 2021-05-25 2023-08-15 Vmware, Inc. Dynamically scaling control plane for ingress services for large numbers of applications with minimal traffic disruption
US11675804B2 (en) * 2021-08-18 2023-06-13 Jpmorgan Chase Bank, N.A. Systems and methods for universal data ingestion
US11372820B1 (en) 2021-08-19 2022-06-28 Snowflake Inc. Zone balancing in a multi cluster database system
US20230073891A1 (en) * 2021-09-09 2023-03-09 Beijing Bytedance Network Technology Co., Ltd. Multifunctional application gateway for security and privacy
CN114374696A (zh) * 2021-12-15 2022-04-19 深圳前海微众银行股份有限公司 一种容器负载均衡方法、装置、设备及存储介质
US11902245B2 (en) 2022-01-14 2024-02-13 VMware LLC Per-namespace IP address management method for container networks
US11800335B2 (en) * 2022-01-19 2023-10-24 Vmware, Inc. Predictive scaling of application based on traffic at another application
CN114500545B (zh) * 2022-01-24 2024-07-26 杭州博盾习言科技有限公司 适用于容器的网络负载均衡方法、装置及电子设备
CN114745380B (zh) * 2022-03-29 2024-02-06 阿里巴巴(中国)有限公司 基于服务网格的跨私网多集群管理方法及装置
KR20230174137A (ko) * 2022-06-20 2023-12-27 삼성전자주식회사 컨테이너 기반 다중 클러스터 환경에서 데이터 동기화를 위한 방법 및 장치
US20240031291A1 (en) * 2022-07-25 2024-01-25 Vmware, Inc. Load balancing over tunnel endpoint groups
CN115314432A (zh) * 2022-07-30 2022-11-08 济南浪潮数据技术有限公司 一种跨集群应用路由访问方法、系统、设备及介质
US12066806B2 (en) * 2022-09-22 2024-08-20 Rockwell Automation Technologies, Inc. Chainable and nested edge for industrial automation device analytics
US11848910B1 (en) 2022-11-11 2023-12-19 Vmware, Inc. Assigning stateful pods fixed IP addresses depending on unique pod identity
US11831511B1 (en) 2023-01-17 2023-11-28 Vmware, Inc. Enforcing network policies in heterogeneous systems
CN118400436B (zh) * 2024-06-21 2024-09-17 杭州悦数科技有限公司 一种基于http2进行图数据库请求路由的负载均衡方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100084601A (ko) * 2008-06-25 2010-07-27 엔조스탄카토 다기능 텔레커뮤니케이션 장치

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US6006264A (en) * 1997-08-01 1999-12-21 Arrowpoint Communications, Inc. Method and system for directing a flow between a client and a server
US6223209B1 (en) * 1997-09-30 2001-04-24 Ncr Corporation Distributed world wide web servers
US6134588A (en) * 1997-11-12 2000-10-17 International Business Machines Corporation High availability web browser access to servers
US6578066B1 (en) * 1999-09-17 2003-06-10 Alteon Websystems Distributed load-balancing internet servers
US6754699B2 (en) * 2000-07-19 2004-06-22 Speedera Networks, Inc. Content delivery and global traffic management network system
US8756342B1 (en) * 2000-02-07 2014-06-17 Parallel Networks, Llc Method and apparatus for content synchronization
US20040205693A1 (en) * 2001-04-23 2004-10-14 Michael Alexander Resource localization
US7512702B1 (en) * 2002-03-19 2009-03-31 Cisco Technology, Inc. Method and apparatus providing highly scalable server load balancing
US6856991B1 (en) * 2002-03-19 2005-02-15 Cisco Technology, Inc. Method and apparatus for routing data to a load balanced server using MPLS packet labels
US7349402B2 (en) * 2002-03-25 2008-03-25 Nokia Corporation Communication system and method to be performed in a communication system
US7243351B2 (en) * 2002-12-17 2007-07-10 International Business Machines Corporation System and method for task scheduling based upon the classification value and probability
KR101044182B1 (ko) * 2003-03-06 2011-06-28 마이크로소프트 코포레이션 시스템의 검증을 용이하게 하는 방법, 소프트웨어 애플리케이션의 검증을 용이하게 하는 장치 및 컴퓨터 판독 가능 기록 매체
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
US8296388B2 (en) * 2005-07-18 2012-10-23 Microsoft Corporation Cross-application encoding of geographical location information
US20080086523A1 (en) * 2006-08-18 2008-04-10 Akamai Technologies, Inc. Method of data collection in a distributed network
US8631147B2 (en) * 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US8135013B2 (en) * 2007-04-06 2012-03-13 International Business Machines Corporation Internet protocol switch and use of the switch for switching a frame
JP2008299617A (ja) 2007-05-31 2008-12-11 Toshiba Corp 情報処理装置、および情報処理システム
CN101557344A (zh) * 2009-05-21 2009-10-14 南昌航空大学 一种基于空间地理位置的动态负载均衡方法
US10191778B1 (en) * 2015-11-16 2019-01-29 Turbonomic, Inc. Systems, apparatus and methods for management of software containers
US20110035497A1 (en) * 2009-08-05 2011-02-10 Dynamic Network Services, Inc. System and method for providing global server load balancing
ES2734904T3 (es) * 2009-08-25 2019-12-12 Bond Tv Llc Un método y sistema para distribuir datos a un usuario final
US9600341B2 (en) * 2009-09-14 2017-03-21 Red Hat, Inc. Transaction sticky load balance policies
US20110276679A1 (en) * 2010-05-04 2011-11-10 Christopher Newton Dynamic binding for use in content distribution
US8719415B1 (en) * 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
EP2663929B1 (en) * 2011-01-12 2018-08-29 Level 3 Communications, LLC Customized domain names in a content delivery network (cdn)
JP5743589B2 (ja) 2011-02-18 2015-07-01 キヤノン株式会社 Webサービスシステム、サーバ管理装置およびWebサービス提供方法
US20120226721A1 (en) * 2011-03-02 2012-09-06 Texas Instruments Incorporated Systems, apparatuses and methods for preserving geographic metadata
US8694647B2 (en) * 2011-03-18 2014-04-08 Microsoft Corporation Read-only operations processing in a paxos replication system
JP5828681B2 (ja) 2011-05-31 2015-12-09 キヤノン株式会社 設定値管理装置及びその制御方法、並びにプログラム
US9967353B2 (en) * 2011-09-23 2018-05-08 Tara Chand Singhal Systems and methods for faster download of digital content in mobile wireless devices
US9392010B2 (en) * 2011-11-07 2016-07-12 Netflow Logic Corporation Streaming method and system for processing network metadata
US9372735B2 (en) * 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool
SG10201708442PA (en) * 2012-02-29 2017-11-29 Airbnb Inc Empirical expert determination and question routing system and method
US9740708B2 (en) * 2012-05-01 2017-08-22 Everbridge, Inc. Systems and methods for distance and performance based load balancing
US8874754B2 (en) * 2012-10-16 2014-10-28 Softwin Srl Romania Load balancing in handwritten signature authentication systems
WO2014068757A1 (ja) 2012-11-01 2014-05-08 株式会社日立製作所 情報処理システム、データ管理方法及びプログラム
US9064124B1 (en) * 2012-12-19 2015-06-23 Amazon Technologies, Inc. Distributed caching system
WO2014101935A1 (en) * 2012-12-24 2014-07-03 Telefonaktiebolaget L M Ericsson (Publ) Enabling external access to multiple services on a local server
US9755889B2 (en) * 2013-02-13 2017-09-05 International Business Machines Corporation Service failover and failback using enterprise service bus
US9712608B2 (en) * 2013-03-14 2017-07-18 Microsoft Technology Licensing, Llc Elastically scalable document-oriented storage services
US10212238B2 (en) * 2013-05-15 2019-02-19 Level 3 Communications, Llc Selecting a content providing server in a content delivery network
US9384227B1 (en) * 2013-06-04 2016-07-05 Amazon Technologies, Inc. Database system providing skew metrics across a key space
US10097503B2 (en) * 2013-09-27 2018-10-09 Fastly, Inc. Content node network address selection for content delivery
US9363192B2 (en) * 2013-10-31 2016-06-07 Vmware, Inc. Automatic remediation in a distributed computer system with multiple clusters of host computers
US9843533B2 (en) * 2014-03-06 2017-12-12 Trilio Data Inc. Elastic compute cloud based on underutilized server resources using a distributed container system
US10404613B1 (en) * 2014-03-31 2019-09-03 Amazon Technologies, Inc. Placement of control and data plane resources
CN104980361B (zh) * 2014-04-01 2018-09-21 华为技术有限公司 一种负载均衡方法、装置及系统
US10511674B2 (en) * 2014-04-18 2019-12-17 Vmware, Inc. Gesture based switching of virtual desktop clients
US9560124B2 (en) 2014-05-13 2017-01-31 Google Inc. Method and system for load balancing anycast data traffic
US9614687B2 (en) * 2014-06-06 2017-04-04 Cisco Technology, Inc. Dynamic configuration of a conference system with distributed media agents
WO2015200374A1 (en) 2014-06-23 2015-12-30 Oracle International Corporation System and method for partition migration in a multitenant application server environment
US9329858B2 (en) * 2014-09-30 2016-05-03 Linkedin Corporation Managing access to resource versions in shared computing environments
US9680818B2 (en) * 2014-10-15 2017-06-13 Barracuda Network, Inc. Method and apparatus for bulk authentication and load balancing of networked appliances
US10257179B1 (en) * 2015-01-26 2019-04-09 Microstrategy Incorporated Credential management system and peer detection
US10560543B2 (en) * 2015-03-26 2020-02-11 Fortinet, Inc. Rule based cache processing in application delivery controller for load balancing
US10331380B1 (en) * 2015-04-06 2019-06-25 EMC IP Holding Company LLC Scalable distributed in-memory computation utilizing batch mode extensions
US10348589B2 (en) * 2015-06-15 2019-07-09 Netflix, Inc. Managing networks and machines that deliver digital content
US10104185B1 (en) * 2015-08-10 2018-10-16 Amazon Technologies, Inc. Policy-based container cotenancy
US10230786B2 (en) * 2016-02-26 2019-03-12 Red Hat, Inc. Hot deployment in a distributed cluster system
US10326744B1 (en) * 2016-03-21 2019-06-18 EMC IP Holding Company LLC Security layer for containers in multi-tenant environments
JP6700894B2 (ja) 2016-03-25 2020-05-27 キヤノン株式会社 画像処理装置、制御方法、プログラム
US10341810B2 (en) * 2016-06-23 2019-07-02 T-Mobile Usa, Inc. Geolocation compatibility for non-RCS devices
US10871995B2 (en) * 2016-09-29 2020-12-22 Amazon Technologies, Inc. Managed container instances
US10372499B1 (en) * 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10382565B2 (en) 2017-01-27 2019-08-13 Red Hat, Inc. Capacity scaling of network resources
US11093297B2 (en) * 2017-02-08 2021-08-17 Dell Products L.P. Workload optimization system
US10963349B2 (en) * 2017-08-25 2021-03-30 Vmware, Inc. Containerized application snapshots
US10541924B2 (en) * 2017-12-01 2020-01-21 International Business Machines Corporation Load balancing in data hosting systems
US10616707B2 (en) * 2018-01-25 2020-04-07 Nutanix, Inc. Method of showing availability zones on a map for customer-owned and cloud provider-owned datacenters
US10951693B2 (en) * 2018-04-02 2021-03-16 T-Mobile Usa, Inc. Data prioritization and scheduling system
CN108762917A (zh) * 2018-05-04 2018-11-06 平安科技(深圳)有限公司 访问请求处理方法、装置、系统、计算机设备和存储介质
US10887380B2 (en) * 2019-04-01 2021-01-05 Google Llc Multi-cluster ingress
US11803408B2 (en) * 2020-07-29 2023-10-31 Vmware, Inc. Distributed network plugin agents for container networking
US20220277162A1 (en) * 2021-02-26 2022-09-01 Kogniz, Inc. Optical person recognition techniques for social distancing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100084601A (ko) * 2008-06-25 2010-07-27 엔조스탄카토 다기능 텔레커뮤니케이션 장치

Also Published As

Publication number Publication date
US12047441B2 (en) 2024-07-23
KR102604082B1 (ko) 2023-11-17
JP7101319B2 (ja) 2022-07-14
KR20230038597A (ko) 2023-03-20
CN116915787A (zh) 2023-10-20
US20230275959A1 (en) 2023-08-31
CN113906723B (zh) 2023-09-22
CN113906723A (zh) 2022-01-07
US10887380B2 (en) 2021-01-05
JP2022137138A (ja) 2022-09-21
JP2024041790A (ja) 2024-03-27
US20200314173A1 (en) 2020-10-01
JP2022521839A (ja) 2022-04-12
WO2020205006A1 (en) 2020-10-08
KR102508398B1 (ko) 2023-03-08
US11677818B2 (en) 2023-06-13
JP7411735B2 (ja) 2024-01-11
US20210120079A1 (en) 2021-04-22
KR20210127761A (ko) 2021-10-22
EP3949341A1 (en) 2022-02-09
KR102425996B1 (ko) 2022-07-27

Similar Documents

Publication Publication Date Title
KR102425996B1 (ko) 멀티 클러스터 인그레스
US11095534B1 (en) API-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks
US9942158B2 (en) Data traffic policy management system
US11425054B1 (en) User-configured multi-location service deployment and scaling
US11310345B2 (en) Displaying a service graph of microservices based on a ring of criticality
US20120226789A1 (en) Hiearchical Advertisement of Data Center Capabilities and Resources
EP2681657A1 (en) Capabilities based routing of virtual data center service request
US11178218B2 (en) Bidirectional communication clusters
EP3481025B1 (en) Node routing method and system
US11765014B2 (en) Intent-based distributed alarm service
US20200195558A1 (en) Transparent Migration of Virtual Network Functions
US11743325B1 (en) Centralized load balancing of resources in cloud edge locations embedded in telecommunications networks
EP3970346B1 (en) Automatically replicate api calls to separate data centers
US11765244B1 (en) Latency-based service discovery and routing for multi-location service-oriented applications
EP3855708A1 (en) Service distribution device and method in software defined network, and storage medium
US11870647B1 (en) Mapping on-premise network nodes to cloud network nodes
US20240291729A1 (en) Intelligent multi-carrier network edge application deployment
US20240241874A1 (en) Disseminating configuration across distributed systems using database nodes

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant