KR20220110329A - 멀티 클러스터 인그레스 - Google Patents
멀티 클러스터 인그레스 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 38
- 230000015654 memory Effects 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 25
- 238000012546 transfer Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 description 19
- 238000003860 storage Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000036541 health Effects 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 235000014510 cooky Nutrition 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 241000287219 Serinus canaria Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- VYMDGNCVAMGZFE-UHFFFAOYSA-N phenylbutazonum Chemical compound O=C1C(CCCC)C(=O)N(C=2C=CC=CC=2)N1C1=CC=CC=C1 VYMDGNCVAMGZFE-UHFFFAOYSA-N 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/52—Network services specially adapted for the location of the user terminal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/502—Proximity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
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
[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] 다양한 도면들에서 동일한 참조 심벌들은 동일한 엘리먼트들을 표시한다.
[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)
- 데이터 프로세싱 하드웨어에 의해 수행되는 컴퓨터로 구현되는 방법으로서,
하나 이상의 클라이언트들로부터, 분산형 시스템의 다수의 지역적 구역(regional zone)들에서 호스팅되는 소프트웨어 애플리케이션으로 향하는 복수의 애플리케이션 레벨 요청들을 수신하는 단계 ― 상기 다수의 지역적 구역들의 각각의 지역적 구역은 개별 노드 그룹을 정의하는 컨테이너 포드(container pod)들의 대응하는 클러스터를 포함하고, 상기 대응하는 클러스터는 상기 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드를 포함함 ―;
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 다수의 지역적 구역들 중 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 단계;
상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드(traffic load)를 충족할 수 있는지 여부를 결정하는 단계; 및
상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드를 충족할 수 없는 경우, 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화(instantiate)함으로써 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹을 스케일링하는 단계
를 포함하는,
방법. - 제1항에 있어서,
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하는,
방법. - 제1항에 있어서,
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 복수의 애플리케이션 레벨 요청들을 가장 가까운 지리적으로 이용가능한 컨테이너 포드들의 클러스터로 라우팅하는,
방법. - 제1항에 있어서,
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 하나 이상의 클라이언트들 중 개별 클라이언트에 의해 수립되는,
방법. - 제1항에 있어서,
상기 특정 지역적 구역은 상기 하나 이상의 애플리케이션 레벨 요청들의 지리적 위치에 기초하는,
방법. - 제1항에 있어서,
각각의 개별 노드 그룹은 멀티-클러스터 서비스에 의해 중앙식으로 관리되는,
방법. - 제1항에 있어서,
상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화하는 것은, 개별 새로운 컨테이너 포드에 상기 소프트웨어 애플리케이션을 생성하도록 구성된 론치 템플릿(launch template)를 이용하여 상기 하나 이상의 새로운 컨테이너 포드들을 생성하는 것을 포함하는,
방법. - 제1항에 있어서,
상기 개별 노드 그룹은 애플리케이션 레벨 트래픽을 하나 이상의 컨테이너 포드들로 직접 배포하기 위한 개별 포트 및 개별 인터넷 프로토콜(IP) 어드레스를 포함하는,
방법. - 제1항에 있어서,
상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTP(HyperText Transfer Protocol)를 포함하는,
방법. - 제1항에 있어서,
상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTPS(HyperText Transfer Protocol Secure)를 포함하는,
방법. - 제1항에 있어서,
상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청의 적어도 일부는 TLS(transport layer security) 프로토콜을 포함하는,
방법. - 데이터 프로세싱 하드웨어 및 상기 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함하는 시스템으로서,
상기 메모리 하드웨어는, 상기 데이터 프로세싱 하드웨어에 의해 실행될 때, 상기 데이터 프로세싱 하드웨어로 하여금 하기의 동작들을 수행하게 하는 명령어들을 저장하고 있고, 상기 동작들은:
하나 이상의 클라이언트들로부터, 분산형 시스템의 다수의 지역적 구역(regional zone)들에서 호스팅되는 소프트웨어 애플리케이션으로 향하는 복수의 애플리케이션 레벨 요청들을 수신하는 동작 ― 상기 다수의 지역적 구역들의 각각의 지역적 구역은 개별 노드 그룹을 정의하는 컨테이너 포드(container pod)들의 대응하는 클러스터를 포함하고, 상기 대응하는 클러스터는 상기 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드를 포함함 ―;
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 다수의 지역적 구역들 중 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 동작;
상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드(traffic load)를 충족할 수 있는지 여부를 결정하는 동작; 및
상기 특정 지역적 구역의 대응하는 클러스터의 소프트웨어 애플리케이션을 실행하는 적어도 하나의 컨테이너 포드가 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 트래픽 로드를 충족할 수 없는 경우, 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화(instantiate)함으로써 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹을 스케일링하는 동작
을 포함하는,
시스템. - 제12항에 있어서,
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하는,
시스템. - 제12항에 있어서,
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 복수의 애플리케이션 레벨 요청들을 가장 가까운 지리적으로 이용가능한 컨테이너 포드들의 클러스터로 라우팅하는,
시스템. - 제12항에 있어서,
상기 복수의 애플리케이션 레벨 요청들 중 하나 이상의 애플리케이션 레벨 요청들을 상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅하는 것은, 로드 밸런싱 구성에 기초하여 상기 다수의 지역적 구역들에 걸쳐 상기 복수의 애플리케이션 레벨 요청들을 로드 밸런싱하는 것을 포함하고, 상기 로드 밸런싱 구성은 상기 하나 이상의 클라이언트들 중 개별 클라이언트에 의해 수립되는,
시스템. - 제12항에 있어서,
상기 특정 지역적 구역은 상기 하나 이상의 애플리케이션 레벨 요청들의 지리적 위치에 기초하는,
시스템. - 제12항에 있어서,
각각의 개별 노드 그룹은 멀티-클러스터 서비스에 의해 중앙식으로 관리되는,
시스템. - 제12항에 있어서,
상기 특정 지역적 구역의 대응하는 클러스터의 개별 노드 그룹으로 라우팅되는 상기 하나 이상의 애플리케이션 레벨 요청들과 연관된 상기 트래픽 로드를 지원하도록 하나 이상의 새로운 컨테이너 포드들을 인스턴스화하는 것은, 개별 새로운 컨테이너 포드에 상기 소프트웨어 애플리케이션을 생성하도록 구성된 론치 템플릿(launch template)를 이용하여 상기 하나 이상의 새로운 컨테이너 포드들을 생성하는 것을 포함하는,
시스템. - 제12항에 있어서,
상기 개별 노드 그룹은 애플리케이션 레벨 트래픽을 하나 이상의 컨테이너 포드들로 직접 배포하기 위한 개별 포트 및 개별 인터넷 프로토콜(IP) 어드레스를 포함하는,
시스템. - 제12항에 있어서,
상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTP(HyperText Transfer Protocol)를 포함하는,
시스템. - 제12항에 있어서,
상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청은 HTTPS(HyperText Transfer Protocol Secure)를 포함하는,
시스템. - 제12항에 있어서,
상기 복수의 애플리케이션 레벨 요청들의 각각의 애플리케이션 레벨 요청의 적어도 일부는 TLS(transport layer security) 프로토콜을 포함하는,
시스템.
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100084601A (ko) * | 2008-06-25 | 2010-07-27 | 엔조스탄카토 | 다기능 텔레커뮤니케이션 장치 |
Family Cites Families (76)
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 |
-
2019
- 2019-04-01 US US16/372,220 patent/US10887380B2/en active Active
- 2019-11-21 WO PCT/US2019/062652 patent/WO2020205006A1/en unknown
- 2019-11-21 CN CN201980097035.2A patent/CN113906723B/zh active Active
- 2019-11-21 KR KR1020237007705A patent/KR102604082B1/ko active IP Right Grant
- 2019-11-21 KR KR1020217031819A patent/KR102425996B1/ko active IP Right Grant
- 2019-11-21 KR KR1020227025648A patent/KR102508398B1/ko active IP Right Grant
- 2019-11-21 CN CN202311095130.3A patent/CN116915787A/zh active Pending
- 2019-11-21 EP EP19818462.4A patent/EP3949341A1/en not_active Withdrawn
- 2019-11-21 JP JP2021558803A patent/JP7101319B2/ja active Active
-
2020
- 2020-12-29 US US17/137,343 patent/US11677818B2/en active Active
-
2022
- 2022-07-04 JP JP2022107793A patent/JP7411735B2/ja active Active
-
2023
- 2023-05-04 US US18/312,463 patent/US12047441B2/en active Active
- 2023-12-25 JP JP2023218014A patent/JP2024041790A/ja active Pending
Patent Citations (1)
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 |