WO2023106503A1 - 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템 - Google Patents

클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템 Download PDF

Info

Publication number
WO2023106503A1
WO2023106503A1 PCT/KR2021/019445 KR2021019445W WO2023106503A1 WO 2023106503 A1 WO2023106503 A1 WO 2023106503A1 KR 2021019445 W KR2021019445 W KR 2021019445W WO 2023106503 A1 WO2023106503 A1 WO 2023106503A1
Authority
WO
WIPO (PCT)
Prior art keywords
container
cluster
node
controller
session
Prior art date
Application number
PCT/KR2021/019445
Other languages
English (en)
French (fr)
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 JP2023519334A priority Critical patent/JP2023552036A/ja
Priority to US18/246,895 priority patent/US11977911B2/en
Publication of WO2023106503A1 publication Critical patent/WO2023106503A1/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/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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

Definitions

  • the present invention relates to a method and system for automatically scaling a multi-container-based computing session on a cluster.
  • a method and system for automatically scaling a multi-container-based computing session on a cluster capable of adding and deleting
  • Container is one of the techniques to run a computer program in a virtualized environment. Unlike a virtual machine that simulates a virtual physical computer, a container virtualizes various resources within the operating system to share a single operating system, but each program is dedicated to its own existence. It is a technology that implements the same effect as using an operating system. Compared to virtual machines, the isolation level between programs is somewhat lower, but it has been spotlighted in cloud and data center environments in recent years in that it has less performance overhead and makes software distribution easier by combining with an overlay file system. .
  • the container orchestration framework is designed to run multiple containers on multiple server nodes, the amount of resources required for each service composed of containers, the number of replicas, and the network connection method (port Software that automatically creates, deletes, and restarts containers and monitors resource usage of nodes to maintain the target state by defining and registering (mapping, load balancer, routing paths between containers, etc.) and automatically distributing and distributing to each server node. refers to
  • Kubernetes developed and released by Google is well known. Auto-scaling techniques supported by Kubernetes, which is used as a de facto industry standard, are largely divided into HPA (horizontal pod auto-scaling) and VPA (vertical pod auto-scaling), which allocate It provides a function to automatically adjust the amount of computational resources used.
  • HPA horizontal pod auto-scaling
  • VPA vertical pod auto-scaling
  • 'Pod' corresponds to the concept of “session” mentioned in this specification, and is an execution unit that bundles containers with different roles. For example, you can define a “web service” pod that bundles a web server container and a DB container.
  • HPA controls the amount of allocated operating resources by replicating multiple pods and adjusting the number of replicas
  • VPA provides a function that automatically changes the capacity of CPU and memory within a specified range while the pod is running. are doing For example, automatically increasing the amount of memory allocated to a container when an out-of-memory (OOM) event is detected.
  • OOM out-of-memory
  • Publication No. 10-2020-0070933 (Apparatus and method for dynamic resource scaling in a network function virtualization environment) is provided, but the virtualization environment is changed to a container-based environment, and between virtual network functions (VNFs) operated on the same server. It only discloses a dynamic resource scaling method in a network function virtualization environment that shares resources.
  • VNFs virtual network functions
  • the present invention to solve the above problems is to add and delete nodes of the cluster itself.
  • a method for automatically scaling a multi-container-based computation session on a cluster includes the steps of a node controller receiving event information and statistical information about a container from a container engine; The node controller forwarding the detected event information and statistical information to the cluster controller, and the cluster controller determining whether to add or delete a container for a specific session based on the received event information and statistical information; and transmitting, by the cluster controller, a command to add or delete a container to a node controller of a specific session according to a result of the determination. Further, the node controller of the specific session transmits a container addition or deletion command to the container engine, and the container engine executes the container addition or deletion.
  • the method further includes transmitting, by the cluster controller, container changes to all node controllers, and each node controller transmitting container changes to respective container agents.
  • a method for automatically scaling multi-container-based computation sessions on a cluster includes the steps of receiving an API request for adding or deleting a container for an API handler for a specific session and forwarding the request to a cluster controller; The method includes determining whether to add or delete a container to a session, and transmitting, by the cluster controller, a command to add or delete a container to a node controller of a specific session according to a result of the determination. Further, the node controller of the specific session transmits a container addition or deletion command to the container engine, and the container engine executes the container addition or deletion.
  • the present invention when the required amount of calculation increases or decreases while performing a calculation workload capable of distributed parallel processing, it is possible to reduce the execution time of the calculation workload and reduce the waste of resources unnecessarily occupied.
  • FIGS. 1 and 2 are diagrams for explaining a method for automatically scaling a multi-container-based computing session on a cluster according to an embodiment of the present invention.
  • 3 and 4 are diagrams illustrating a method of notifying changes to existing containers according to an embodiment of the present invention.
  • 5 and 6 are diagrams for explaining a method for automatically scaling a multi-container-based computation session on a cluster according to another embodiment of the present invention.
  • FIG. 7 and 8 are diagrams for explaining a method for automatically scaling a multi-container-based computing session on a cluster according to another embodiment of the present invention.
  • FIGS. 9 and 10 are views illustrating an automatic scaling method of adding or deleting a node of a cluster itself according to another embodiment of the present invention.
  • cluster means that several computers (server nodes) are grouped into a single network.
  • a single network can be a LAN based on various L2/L3 packet protocols such as Ethernet or Infiniband, physically distributed in separate spaces, but appearing as one using a VPN or network tunneling software. It can also be a chained network. Nodes belonging to the same network can communicate directly without passing through a separate firewall.
  • the “cluster controller” receives and processes requests such as session creation, deletion, and code execution from users in the form of an API, monitors the resource availability, quota, and usage of nodes in the cluster, and requests session creation and deletion requested through the scheduler. It is a daemon that plays a role in selecting a node according to the resource status of the node or invoking the node controller so that the request is actually executed.
  • Node controller is installed on each node of the cluster and invokes the node's container engine to perform actual container creation and deletion, and such operations and life cycle activities of the container itself (such as self-termination due to error or task completion, etc.) ), this daemon is responsible for reporting to the cluster controller when the current node's resource allocation changes.
  • Container engine is a daemon-type independent software that provides a container control interface in the form of an API.
  • a “container agent” is a small daemon under the control of a node controller that runs your code, runs applications inside containers, and monitors inside containers. Inside the container, it runs with the same privileges as the user process.
  • Session is a basic unit in which users execute independent computational tasks.
  • One session is necessarily made up of at least one container, and users do not create or delete individual containers, but issue commands to create or delete sessions. and the cluster controller and node controller create and delete containers that are actually needed.
  • a structure that abstracts multiple containers into one operation session can be implemented using an overlay network, and is divided into single-node and multi-node cases.
  • a single node is used as a local bridge network, and multi-nodes are used as a virtual overlay network.
  • the implementation of the overlay network can either use a high-level abstraction such as docker swarm, directly manipulate the Linux kernel's netfliter (iptables) settings, or manipulate the kernel's routing table using the netlink kernel API.
  • the hostname and SSH-related settings are automatically applied to the containers of the actually created session so that they can recognize each other in the same way regardless of whether they are for single node or multi-node.
  • the session template function containers belonging to one session are divided by role, and resource allocation, images to be used, and the number of copies to be copied can be different.
  • At least one main container must exist, and when a single node cluster session container is added, the cluster controller It is possible to search for available resources of the node to which the corresponding session belongs, and to newly register an interface belonging to the network namespace of the container in the local bridge network.
  • a container can be created on the node to which the session belongs.
  • the cluster controller can search for available resources in the resource group to which the session belongs and create a list of node controllers that can be assigned. Multiple containers can be created.
  • FIGS. 1 and 2 are diagrams for explaining a method for automatically scaling a multi-container-based computing session on a cluster according to an embodiment of the present invention.
  • a node controller 210a receives event information and information about a container 230a from a container engine 220a.
  • Statistical information is received (S101).
  • the event information for the container may be an operation resource shortage event such as an out-of-memory (OOM) event, but is not limited thereto.
  • OOM out-of-memory
  • the statistical information may be operator resource usage statistics, but is not limited thereto.
  • the container engine 220a may sense the event information and statistical information in real time and transmit them to the node controller 210a.
  • the host operating system of the node together with the container engine 220a can detect the event information and statistical information in real time.
  • the node controller 210a transfers the detected event information and statistical information to the cluster controller 100 (S103).
  • the event information is generated when an event such as out-of-memory occurs more than a specific number of times in one session.
  • the statistical information is generated when the average CPU usage rate or GPU usage rate exceeds a certain level by examining sessions at specific intervals. For example, sessions are checked once every 5 minutes, and if the average CPU utilization or GPU utilization for the last minute exceeds 85%, the number of containers with the same resource allocation is added by one, and the average CPU utilization or GPU utilization for the last minute is 30%. If the % is not exceeded, the number of containers can be reduced by one. At this time, the number of containers can be limited according to the settings, and at least one must be maintained.
  • the cluster controller 100 determines whether to add or delete a container for a specific session based on the received event information and statistical information (S105).
  • the cluster controller 100 analyzes the received event information and statistical information to determine whether it is necessary to add or delete a container for a specific session, whether the specific session and the owner of the specific session have the authority to make the decision, and whether the specific session is actually performed. It is determined whether to add or delete a container by considering whether there are sufficient resources available for containerization.
  • the cluster controller transmits a container addition or deletion command to the node controller 210b of a specific session according to the determination result (S107).
  • the node controller 210b of the specific session transmits a container addition or deletion command to the container engine 220b (S109).
  • the container engine 220b adds or deletes the container 230b (S111).
  • the cluster controller determines whether to add or delete nodes. It is determined whether container addition is impossible only with the existing node, and whether to add the node is determined according to the manager setting that specifies the maximum number of allowed nodes and the specification options of the new node. It determines if container deletion is necessary, and determines whether to delete the node according to the manager setting that specifies the minimum number of nodes to be maintained.
  • the automatic scaling system 10 for multi-container-based computing sessions on a cluster is composed of the cluster controller 100 and a plurality of nodes 200a, 200b, 200c, ..., 200n.
  • the first node 200a is composed of the first node controller 210a, the first container engine 220a, and the first container 230a
  • the second node 200b includes the second node controller 210b, the second It consists of the container engine 220b and the second container 230b
  • the third node 200c consists of the third node controller 210c, the third container engine 220c, and the third container 230c.
  • the cluster controller 100 When an event occurs in the container of the first node 200a and the node controller 210a transmits the detected event information and statistical information to the cluster controller 100, the cluster controller 100 generates the information based on the event information and statistical information. It is determined whether a container of a specific session can be added, and if the container of the second node can be added, a command may be transmitted to the node controller of the second node 200b to add the container.
  • 3 and 4 are diagrams illustrating a method of notifying changes to existing containers according to an embodiment of the present invention.
  • the cluster controller transfers container changes to all node controllers (S201).
  • the above changes relate to the addition or deletion of containers, and when the cluster controller determines to add or delete containers in a specific session, the node controllers of all existing nodes on which containers belonging to the specific session are running request the addition or deletion of containers. inform that it is happening.
  • the cluster controller makes a remote procedure call (RPC) to the node controller over the network or issues the corresponding fact to a separate event broker node in the form of an event, receives the event of the node, and uses an API. Also available by bus.
  • RPC remote procedure call
  • Each node controller transmits container changes to each container agent (S203).
  • the container agent executes a script or callback function registered in advance by the user process and transfers the contents of container change to the user process (S205).
  • the user process includes the added container in the operation operation or excludes the deleted container according to the contents of the container change (S207).
  • the process of adding or deleting containers through the above process existing containers belonging to the session can be notified of the fact of addition or deletion.
  • container agent 240b and user process 250b in main container 230b among a plurality of containers can deliver container changes.
  • 5 and 6 are diagrams for explaining a method for automatically scaling a multi-container-based computation session on a cluster according to another embodiment of the present invention.
  • an API handler receives an API request for adding or deleting a container for a specific session and transmits the request to the cluster controller. (S301).
  • the API handler can receive an API request for adding or deleting a container for a specific session at the request of a user or administrator.
  • the cluster controller determines whether to add or delete a container for a specific session (S303).
  • the cluster controller 100 receives the API to determine whether adding or deleting a container for a particular session is necessary, whether the particular session and the owner of the particular session have the authority to make that decision, and whether the particular session has enough resources to actually do so. Considering the container, it is determined whether to add or delete the container.
  • the cluster controller transmits a container addition or deletion command to the node controller of a specific session according to the determination result (S305).
  • the node controller of the specific session transmits a container addition or deletion command to the container engine (S307).
  • the container engine executes adding or deleting containers (S309).
  • a container can be changed by a request for adding or deleting a container from a user terminal or an administrator terminal.
  • the automatic scaling system 10b of multi-container-based operation sessions on a cluster is composed of the cluster controller 100, a plurality of nodes 200a, 200b, 200c, ..., 200n, and an API handler 300.
  • the API handler 300 may receive an API request for adding or deleting a container for a specific session according to a request of a user terminal or an administrator terminal, and transmit the request to the cluster controller 100 .
  • FIG. 7 and 8 are diagrams for explaining a method for automatically scaling a multi-container-based computing session on a cluster according to another embodiment of the present invention.
  • the user process transfers a container addition or deletion request to the container agent (S401).
  • a user process can send a request to add or delete a container to the container agent at its own discretion.
  • the container agent forwards the request to the node controller (S403).
  • User process (A), container agent (B), and node controller (C) connect to the existing TCP port and combine one or more of the methods for the container agent to communicate with the node controller in the above ways. You can utilize a method of mutual bi-directional communication (A ⁇ ->B, B ⁇ ->C, A ⁇ ->C are all possible) using an application protocol.
  • the authentication key is planted at the time of container creation so that the node controller can determine which container it belongs to, or the node controller has logic to determine which container it belongs to based on the IP address of the source of the request, so that it is acceptable. You can determine if it is a request.
  • existing cloud services provide metadata API services through private IP addresses such as 169.254.169.254 for virtual machines, but the present invention is different in that a similar mechanism is applied to containers rather than virtual machines.
  • the node controller forwards the request to the cluster controller (S405).
  • it can be used in an event bus method or a method in which a node controller makes a direct remote procedure call (RPC) to a cluster controller.
  • RPC direct remote procedure call
  • the cluster controller determines whether to add or delete a container for a specific session (S407).
  • the cluster controller 100 considers whether it is necessary to add or delete a container for a specific session, whether the specific session and the owner of the specific session have the authority to make that decision, and whether there are enough resources to actually perform the action in the specific session. Determine whether to add or delete.
  • the node controller of the specific session transmits a container addition or deletion command to the container engine (S409).
  • the container engine executes adding or deleting containers (S411). That is, it is possible to add or delete a container by the user process' own decision.
  • the automatic scaling system 10c of a multi-container-based computing session on a cluster is composed of the cluster controller 100 and a plurality of nodes 200a, 200b, 200c, ..., 200n.
  • the first node 200a is composed of a first node controller 210a, a first main container 230a, a first container agent 240a, and a user process 250a.
  • the user process 250a transmits a request for adding or deleting a container to the container agent so that the container can be changed.
  • FIGS. 9 and 10 are views illustrating an automatic scaling method of adding or deleting a node of a cluster itself according to another embodiment of the present invention.
  • the API handler receives an API request for adding or deleting a container for a specific session and transmits the request to the cluster controller (S501).
  • the API handler can receive an API request for adding or deleting a container for a specific session at the request of a user or administrator.
  • the cluster controller determines whether to add or delete a container for a specific session (S503).
  • the cluster controller 100 receives the API to determine whether adding or deleting a container for a particular session is necessary, whether the particular session and the owner of the particular session have the authority to make that decision, and whether the particular session has enough resources to actually do so. Considering the container, it is determined whether to add or delete the container.
  • the cluster controller transmits a container addition or deletion command to the node controller of a specific session according to the determination result (S505).
  • the node controller of the specific session transmits a container addition or deletion command to the container engine (S507).
  • the container engine executes adding or deleting containers (S509).
  • a container can be changed by a request for adding or deleting a container from a user terminal or an administrator terminal.
  • the cluster controller determines whether to add or delete a node (S511). It is determined whether container addition is impossible only with the existing node, and whether to add the node is determined according to the manager setting that specifies the maximum number of allowed nodes and the specification options of the new node. It determines if container deletion is necessary, and determines whether to delete the node according to the manager setting that specifies the minimum number of nodes to be maintained.
  • the cluster controller calls the API of the cluster platform 400 to add a new node (200n+1), and if a node needs to be deleted, it checks whether there is a container on the node that needs to be deleted, and the cluster platform ( 400) deletes this node (S513). When node deletion is necessary, it checks whether there are containers running on one or more nodes, blocks the scheduling of new containers, and standbys or forcefully terminates through the node controller.
  • the automatic scaling system 10d for adding or deleting nodes of the cluster itself on the cluster includes the cluster controller 100, a plurality of nodes 200a, 200b, 200c, ..., 200n, an API handler 300, It consists of a cluster platform (400).
  • the API handler 300 may receive an API request for adding or deleting a container for a specific session according to a request of a user terminal or an administrator terminal, and transmit the request to the cluster controller 100 .
  • the cluster platform 400 adds or deletes a node by receiving whether a node is added or deleted from the cluster controller.
  • the cluster controller marks the corresponding node as being deleted and no longer allocates new containers, and in the case of a batch session, waits until the task is completed or terminates after a certain period of time according to the administrator setting.
  • the corresponding node is deleted, and in the case of an interactive session, it waits until it is terminated by the user according to the administrator's setting, or sends a warning to the user of the container and forcibly terminates it after a certain period of time, and then deletes the corresponding node. If there are no running containers, the node is immediately deleted.
  • the automatic scaling of the existing cloud operates under the assumption that the user's requested operation takes only a very short time and the node can be stopped at any time. This is to support the case where the assumption is difficult and does not hold.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법에 관한 것이다. 본 발명의 실시예에 따르면, 다중 컨테이너 자동 스케일링 방법은 노드컨트롤러가 컨테이너엔진으로부터 컨테이너에 대한 이벤트정보 및 통계정보를 수신하는 단계와, 상기 노드컨트롤러가 감지된 이벤트정보 및 통계정보를 클러스터 컨트롤러에게 전달하는 단계와, 상기 클러스터 컨트롤러가 수신된 이벤트정보 및 통계정보에 기초하여 특정세션에 대한 컨테이너 추가 또는 삭제 여부를 판단하는 단계와, 상기 클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러에 컨테이너 추가 또는 삭제 명령을 전달하는 단계와, 상기 클러스터 컨트롤러가 기존에 있는 노드만으로 컨테이너 추가가 불가능한지 여부 또는 컨테이너 삭제가 필요한 경우를 판단하여, 노드 추가 또는 삭제 여부를 판단하는 단계를 포함한다.

Description

클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템
본 발명은 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템에 관한 것으로, 특히 분산 병렬처리가 가능한 연산 워크로드 수행 중 클러스터 자체의 노드를 추가 및 삭제하거나 세션 소속 컨테이너들의 각 역할별로 컨테이너의 복제본을 추가 및 삭제가 가능한 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템에 관한 것이다.
컨테이너는 컴퓨터 프로그램을 가상화된 환경에서 실행하는 기법 중 하나로, 가상의 물리적 컴퓨터를 시뮬레이션하는 가상 머신과 달리, 운영체제 내의 다양한 리소스를 가상화하여 하나의 운영체제를 공유하면서도 각 프로그램은 마치 자신만이 존재하는 전용 운영체제를 사용하는 것과 같은 효과를 구현하는 기술이다. 가상 머신과 비교하였을 때 프로그램들 간의 격리 수준(isolation level)은 다소 떨어지지만 성능 오버헤드가 적고 오버레이 파일 시스템과 결합하여 소프트웨어 배포를 쉽게 해준다는 점에서 최근 수년 간 클라우드 및 데이터센터 환경에서 각광받고 있다.
컨테이너 오케스트레이션 프레임워크는 다수의 컨테이너를 다수의 서버 노드에서 실행하고자 할 때, 개별 컨테이너를 운영자가 일일이 명령어를 내려 생성 및 삭제하지 않아도 컨테이너로 구성된 서비스 별로 필요한 자원 양과 복제본의 개수, 네트워크 연결 방식(포트 매핑 및 로드밸런서, 컨테이너 간의 라우팅 경로 등)을 정의하고, 등록하면 자동으로 서버 노드 별로 분산 배포하여 목표한 상태를 유지하도록 컨테이너 생성·삭제·재시작 및 노드의 자원 사용량 모니터링 등을 자동으로 수행하는 소프트웨어를 지칭한다.
기존의 오픈소스 컨테이너 오케스트레이션 프레임워크로는 구글사에서 개발하여 공개한 쿠버네티스(Kubernetes)가 잘 알려져 있다. 사실상 업계 표준으로 활용되고 있는 Kubernetes에서 지원하는 자동 스케일링 기법은 크게 HPA(horizontal pod auto-scaling)와 VPA(vertical pod auto-scaling) 로 구분되며, 이를 통해 클러스터 및 기본 실행단위인 'pod'에 할당되는 연산 자원의 양을 자동 조절하는 기능을 제공하고 있다. 'pod'는 본 명세서에서 언급하는 “세션” 개념과 대응하며, 여러 개의 서로 다른 역할을 가진 컨테이너를 묶은 실행단위이다. 예를 들면, 웹서버 컨테이너와 DB 컨테이너를 묶은 “웹서비스” pod를 정의할 수 있다. HPA는 pod 자체를 여러 개 복제하고 그 복제본의 개수를 조절하는 방식으로 할당된 연산자원량을 조절하고, VPA는 pod의 실행 도중 CPU와 메모리의 용량 변경을 지정한 범위 내에서 자동으로 수행하는 기능을 제공하고 있다. 예를 들면 OOM(out-of-memory) 이벤트가 감지되었을 때 컨테이너에 할당된 메모리 용량을 자동으로 늘리는 식이다. 개별 컨테이너의 CPU 및 메모리 할당량을 실행 도중 변경하는 기능은 도커(Docker)의 경우 “docker update” 명령어를 통해 이미 지원하고 있으며 쿠버네티스 또한 같은 방법으로 지원하고 있다.
선행특허로는 공개특허 제10-2020-0070933호(네트워크 기능 가상화 환경에서 동적 자원 스케일링 장치 및 방법)이 있으나, 가상화 환경을 컨테이너 기반으로 변경하여, 동일 서버에서 운영되는 가상 네트워크 기능(VNF)간 자원을 공유하는 네트워크 기능 가상화 환경에서 동적 자원 스케일링 방법을 개시하고 있을 뿐이다.
전술한 문제점을 해결하기 위하여 본 발명이 해결하고자 하는 과제는, 세션의 복제본을 추가 및 삭제하는 HPA 기술과 개별 컨테이너의 CPU/메모리 할당량 자체를 조절하는 VPA 기술과 달리 클러스터 자체의 노드를 추가 및 삭제하거나 세션 소속 컨테이너들의 각 역할별로 컨테이너의 복제본을 추가 및 삭제가 가능한 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템 을 제공하는 데 있다.
전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명의 실시예에 따르면, 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 은 노드컨트롤러가 컨테이너엔진으로부터 컨테이너에 대한 이벤트정보 및 통계정보를 수신하는 단계와, 상기 노드컨트롤러가 감지된 이벤트정보 및 통계정보를 클러스터 컨트롤러에게 전달하는 단계와, 상기 클러스터 컨트롤러가 수신된 이벤트정보 및 통계정보에 기초하여 특정세션에 대한 컨테이너 추가 또는 삭제 여부를 판단하는 단계와, 상기 클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러에 컨테이너 추가 또는 삭제 명령을 전달하는 단계를 포함한다. 또한, 특정세션의 노드컨트롤러가 컨테이너 엔진에 컨테이너 추가 또는 삭제 명령을 전달하는 단계와, 컨테이너엔진이 컨테이너 추가 또는 삭제를 실행하는 단계를 더 포함한다.
또한, 상기 클러스터 컨트롤러가 모든 노드 컨트롤러에 컨테이너의 변경내용을 전달하는 단계와, 각각의 노드 컨트롤러가 각각의 컨테이너 에이전트에 컨테이너의 변경내용을 전달하는 단계를 더 포함한다.
상기 컨테이너 에이전트가 사용자 프로세스가 미리 등록한 스크립트 또는 콜백함수를 실행하여 컨테이너의 변경내용을 사용자 프로세스에 전달하는 단계와, 사용자프로세스가 컨테이너의 변경내용에 따라 추가된 컨테이너를 연산작업에 포함시키거나 삭제된 컨테이너를 제외하는 단계를 더 포함한다.
본 발명의 다른 실시예에 따르면, 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법은 API핸들러가 특정세션에 대한 컨테이너 추가 또는 삭제 API요청을 수신하여 클러스터 컨트롤러에 전달하는 단계와, 상기 클러스터 컨트롤러가 특정세션에 대한 컨테이너 추가 또는 삭제여부를 판단하는 단계와, 상기 클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러에 컨테이너 추가 또는 삭제 명령을 전달하는 단계를 포함한다. 또한, 특정세션의 노드컨트롤러가 컨테이너엔진에 컨테이너 추가 또는 삭제 명령을 전달하는 단계와, 컨테이너엔진이 컨테이너 추가 또는 삭제를 실행하는 단계를 더 포함한다. 또한, 상기 클러스터 컨트롤러가 노드 추가 또는 삭제 여부를 판단하는 단계와, 상기 클러스터 컨트롤러가 기존에 있는 노드만으로 컨테이너 추가가 불가능한지 여부 또는 컨테이너 삭제가 필요한 경우를 판단하여, 노드 추가 또는 삭제 여부를 판단하는 단계를 더 포함한다.
본 발명에 의하면 분산 병렬처리가 가능한 연산 워크로드 수행 중 필요한 연산량이 많아지거나 적어지는 경우, 연산 워크로드의 수행 시간을 줄이고 불필요하게 점유하는 자원의 낭비를 줄일 수 있다.
도 1과 도 2는 본 발명의 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법을 설명하는 도면이다.
도 3과 도 4는 본 발명의 실시예에 따른 기존 컨테이너들에게 변경내용을 알리는 방법을 설명하는 도면이다.
도 5와 도 6은 본 발명의 다른 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법을 설명하는 도면이다.
도 7과 도 8은 본 발명의 또 다른 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법을 설명하는 도면이다.
도 9와 도 10은 본 발명의 또 다른 실시예에 따른 클러스터 자체의 노드를 추가 또는 삭제하는 자동 스케일링 방법을 설명하는 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시 된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나 이는 본 발명의 개념에 따른 실시예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 또는 대체물을 포함한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 명세서에서 "클러스터"는 여러 대의 컴퓨터(서버 노드)가 하나의 단일 네트워크로 묶여 있는 것을 의미한다. 여기서 단일 네트워크는 이더넷(Ethernet), 인피니밴드(Infiniband)와 같은 다양한 L2/L3 패킷 프로토콜 기반 LAN이 될 수도 있고, 물리적으로는 별도의 공간에 분산되어 있지만 VPN이나 네트워크 터널링 소프트웨어를 사용하여 하나처럼 보이도록 묶은 네트워크일 수도 있다. 같은 네트워크에 속한 노드들끼리는 별도의 방화벽을 거치지 않고 직접 통신이 가능하다.
"클러스터 컨트롤러"는 사용자로부터 세션 생성, 삭제 및 코드 실행 등의 요청을 API 형태로 받아 처리하고, 클러스터 소속 노드들의 자원 가용량, 할당량 및 사용량을 모니터링하며, 스케줄러를 통해 요청받은 세션 생성, 삭제 요청을 노드의 자원 상태에 따라 노드를 선택하거나 노드 컨트롤러를 호출하여 해당 요청이 실제 수행되도록 중계하는 역할을 하는 데몬이다.
"노드컨트롤러"는 클러스터 소속의 각 노드에 설치되어 노드의 컨테이너 엔진을 호출하여 실제 컨테이너의 생성 및 삭제를 수행하고, 그러한 동작 및 컨테이너 자체의 수명주기 활동(오류 또는 작업 완료로 인해 스스로 종료되는 등)으로 인해 현재 노드의 자원 할당량이 변경될 때 이를 클러스터 컨트롤러에 보고하는 역할을 하는 데몬이다.
"컨테이너 엔진"은 컨테이너 제어 인터페이스를 API 형태로 제공하는 데몬 형태의 독립된 소프트웨어이다.
"컨테이너 에이전트"는 노드 컨트롤러의 제어를 받아 사용자의 코드 실행, 컨테이너 내부의 애플리케이션 실행 및 컨테이너 내부 모니터링을 수행하는 작은 데몬이다. 컨테이너 내에서 사용자 프로세스와 동일한 권한을 사용하여 실행된다.
"세션"은 사용자가 독립된 연산 작업을 실행하는 기본 단위로서, 하나의 세션은 반드시 최소 1개 이상의 컨테이너로 이루어지며, 사용자는 개별 컨테이너를 생성·삭제하는 것이 아니라 세션을 생성·삭제하는 명령을 내리는 것이고 클러스터 컨트롤러와 노드 컨트롤러가 실제 필요한 컨테이너들을 생성·삭제한다.
컨테이너 여러 개를 하나의 연산 세션으로 추상화하는 구조는 오버레이 네트워크 활용하여 구현가능하며, 싱글노드 및 멀티노드 케이스로 구분된다. 싱글노드는 로컬 브릿지 네트워크로 활용되고, 멀티노드는 가상 오버레이 네트워크로 활용된다. 오버레이 네트워크의 구현은 docker swarm과 같은 고수준 추상화를 이용할 수도 있고, 직접 Linux kernel의 netfliter (iptables) 설정을 조작하거나 netlink 커널 API를 이용하여 커널의 라우팅 테이블을 조작하는 방법 모두 가능하다.
실제 생성된 세션의 컨테이너들은 자신이 싱글노드용인지 멀티노드용인지 상관 없이 동일한 방법으로 상호 인식 가능하도록 hostname 및 SSH 관련 설정이 자동으로 적용된다.
세션 템플릿 기능으로, 하나의 세션에 속하는 컨테이너들을 역할별로 나누어 자원할당량, 사용할 이미지, 복제할 개수를 서로 달리할 수 있다 최소한 메인 컨테이너 1개는 존재하여야 하고, 싱글노드 클러스터 세션 컨테이너 추가 시 클러스터 컨트롤러가 해당 세션이 속한 노드의 가용 자원 조회가 가능하고, 로컬 브릿지 네트워크에 컨테이너의 네트워크 네임스페이스 소속 인터페이스를 신규 등록이 가능하다. 세션이 속한 노드에 컨테이너 생성할 수 있다.
멀티노드 클러스터 세션 컨테이너 추가 시 클러스터 컨트롤러가 해당 세션이 속한 리소스 그룹의 가용 자원 조회 및 할당 가능한 노드 컨트롤러의 목록 작성이 가능하고, 오버레이 네트워크에 컨테이너의 네트워크 네임스페이스 신규 등록이 가능하고, 할당된 노드에 다수개의 컨테이너들을 생성할 수 있다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시예들을 상세히 설명한다.
도 1과 도 2는 본 발명의 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법을 설명하는 도면이다.
도 1과 도 2를 참조하면, 본 발명의 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법은 먼저 노드컨트롤러(210a)가 컨테이너엔진(220a)으로부터 컨테이너(230a)에 대한 이벤트정보 및 통계정보를 수신한다(S101). 컨테이너에 대한 이벤트정보는 OOM(out-of-memory) 이벤트와 같은 연산자원 부족 이벤트일 수 있으나 이에 대해 한정하는 것은 아니다. 상기 통계정보는 연산자원 사용량 통계일 수 있으나 이에 대해 한정하는 것은 아니다. 컨테이너엔진(220a)은 상기 이벤트정보와 통계정보를 실시간으로 감지하여 노드컨트롤러(210a)에 전달할 수 있다. 컨테이너엔진(220a)과 함께 노드의 호스트 운영체제가 상기 이벤트정보와 통계정보를 실시간으로 감지할 수 있다.
노드컨트롤러(210a)가 감지된 이벤트정보 및 통계정보를 클러스터 컨트롤러(100)에게 전달한다(S103). 상기 이벤트정보는 하나의 세션에서 out-of-memory 등의 이벤트가 특정 횟수 이상 발생하는 경우에 생성된다. 상기 통계정보는 특정 주기마다 세션들을 검사하여 평균 CPU 사용률 또는 GPU 사용률이 일정수준을 넘는 경우에 생성된다. 예컨대, 5분마다 한번씩 세션들을 검사하여, 마지막 1분간 평균 CPU 사용률 또는 GPU 사용률이 85%를 넘는 경우 동일 자원 할당량을 가진 컨테이너 개수를 1개씩 추가하고, 마지막 1분간 평균 CPU 사용률 또는 GPU 사용률이 30%를 넘지 못하는 경우 컨테이너 개수를 1개씩 감소할 수 있다. 이때, 설정에 따라 컨테이너 개수는 제한될 수 있고, 최소 1개는 유지되야 한다.
클러스터 컨트롤러(100)가 수신된 이벤트정보 및 통계정보에 기초하여 특정세션에 대한 컨테이너 추가 또는 삭제 여부를 판단한다(S105). 클러스터 컨트롤러(100)는 수신된 이벤트정보와 통계정보를 분석하여 특정세션에 대한 컨테이너 추가 또는 삭제가 필요한지 여부, 특정세션 및 특정세션 소유자가 해당 결정을 수행할 권한이 있는지, 특정세션에서 실제로 수행할 수 있는 자원이 충분히 있는지를 고려하여 컨테이너 추가 또는 삭제여부를 판단한다.
클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러(210b)에 컨테이너 추가 또는 삭제 명령을 전달한다(S107). 특정세션의 노드컨트롤러(210b)가 컨테이너 엔진(220b)에 컨테이너 추가 또는 삭제 명령을 전달한다(S109). 명령을 수신한 컨테이너 엔진(220b)이 컨테이너(230b) 추가 또는 삭제를 실행한다(S111).
이후에, 클러스터 컨트롤러가 노드 추가 또는 삭제 여부를 판단한다. 기존에 있는 노드만으로 컨테이너 추가가 불가능한지를 판단하여, 최대 허용 노드 개수 및 신규 노드의 사양 옵션을 규정한 관리자 설정에 따라 노드 추가 여부를 판단한다. 컨테이너 삭제가 필요한 경우를 판단하여, 최소 유지 노드 개수 등을 규정한 관리자 설정에 따라 노드 삭제 여부를 판단한다.
즉, 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 시스템 (10)은 클러스터 컨트롤러(100)와 다수개의 노드들(200a, 200b, 200c, ... , 200n)로 구성된다. 제1노드(200a)는 제1노드컨트롤러(210a), 제1컨테이너엔진(220a), 제1컨테이너(230a)로 구성되고, 제2노드(200b)는 제2노드컨트롤러(210b), 제2컨테이너엔진(220b), 제2컨테이너(230b)로 구성되고, 제3노드(200c)는 제3노드컨트롤러(210c), 제3컨테이너엔진(220c), 제3컨테이너(230c)로 구성된다. 제1노드(200a)의 컨테이너에서 이벤트가 발생하여 노드컨트롤러(210a)가 감지된 이벤트정보 및 통계정보를 클러스터 컨트롤러(100)에게 전달하면, 클러스터 컨트롤러(100)에서 이벤트정보 및 통계정보에 기초하여 특정세션의 컨테이너에 추가가 가능한지 판단하고, 예컨대 제2노드의 컨테이너 추가가 가능하면, 제2노드(200b)의 노드 컨트롤러에게 명령을 전달하여 컨테이너를 추가할 수 있다.
도 3과 도 4는 본 발명의 실시예에 따른 기존 컨테이너들에게 변경내용을 알리는 방법을 설명하는 도면이다.
도 3과 도 4를 참조하면, 클러스터 컨트롤러가 모든 노드 컨트롤러에 컨테이너의 변경내용을 전달한다(S201). 상기 변경내용은 컨테이너 추가 또는 삭제에 대한 내용이고, 클러스터 컨트롤러가 특정세션의 컨테이너 추가 또는 삭제를 수행함을 결정하였을 때 특정세션 소속의 컨테이너들이 실행 중인 모든 기존 노드의 노드 컨트롤러에게 컨테이너의 추가 또는 삭제가 발생한다는 사실을 알린다. 또한, 클러스터 컨트롤러가 노드 컨트롤러에게 네트워크를 통한 원격 프로시저 호출(Remote procedure call; RPC)을 하거나 별도의 이벤트 중계자 노드에 해당 사실을 이벤트 형태로 발행하고, 그 노드의 이벤트를 수신 API를 사용하는 이벤트 버스 방식으로도 가능하다.
각각의 노드 컨트롤러가 각각의 컨테이너 에이전트에 컨테이너의 변경내용을 전달한다(S203). 컨테이너 에이전트가 사용자 프로세스가 미리 등록한 스크립트 또는 콜백함수를 실행하여 컨테이너의 변경내용을 사용자 프로세스에 전달한다(S205).
사용자프로세스가 컨테이너의 변경내용에 따라 추가된 컨테이너를 연산작업에 포함시키거나 삭제된 컨테이너를 제외한다(S207). 위와 같은 프로세스를 통해 컨테이너 추가 또는 삭제 과정에서 세션 소속의 기존 컨테이너들에게 추가 또는 삭제 사실을 알려줄 수 있다.
클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 시스템(10a)에서 다수개의 컨테이너 중 메인 컨테이너(230b)내의 컨테이너 에이전트(240b), 사용자프로세스(250b)에 의해 컨테이너의 변경내용을 전달할 수 있다.
도 5와 도 6은 본 발명의 다른 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법을 설명하는 도면이다.
도 5와 도 6을 참조하면, 본 발명의 다른 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법은 API핸들러가 특정세션에 대한 컨테이너 추가 또는 삭제 API요청을 수신하여 클러스터 컨트롤러에 전달한다(S301). API핸들러는 사용자 또는 관리자의 요청에 의해 특정 세션에 대한 컨테이너 추가 또는 삭제 API 요청을 수신할 수 있다.
상기 클러스터 컨트롤러가 특정세션에 대한 컨테이너 추가 또는 삭제여부를 판단한다(S303). 클러스터 컨트롤러(100)는 API를 수신하여 특정세션에 대한 컨테이너 추가 또는 삭제가 필요한지 여부, 특정세션 및 특정세션 소유자가 해당 결정을 수행할 권한이 있는지, 특정세션에서 실제로 수행할 수 있는 자원이 충분히 있는지를 고려하여 컨테이너 추가 또는 삭제여부를 판단한다.
상기 클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러에 컨테이너 추가 또는 삭제 명령을 전달한다(S305). 특정세션의 노드컨트롤러가 컨테이너엔진에 컨테이너 추가 또는 삭제 명령을 전달한다(S307). 컨테이너엔진이 컨테이너 추가 또는 삭제를 실행한다(S309). 사용자 단말 또는 관리자 단말로부터 컨테이너 추가 또는 삭제 요청에 의해 컨테이너 변경이 가능하다.
즉, 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 시스템 (10b)은 클러스터 컨트롤러(100)와 다수개의 노드들(200a, 200b, 200c, ... , 200n), API핸들러(300)로 구성된다. API핸들러(300)는 사용자단말 또는 관리자단말의 요청에 의해 특정 세션에 대한 컨테이너 추가 또는 삭제 API 요청을 수신하고 클러스터 컨트롤러(100)에 전달할 수 있다.
도 7과 도 8은 본 발명의 또 다른 실시예에 따른 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법을 설명하는 도면이다.
도 7과 도 8을 참조하면, 사용자프로세스가 컨테이너 추가 또는 삭제 요청을 컨테이너 에이전트에 전달한다(S401). 사용자프로세스는 스스로의 판단으로 컨테이너 추가 또는 삭제 요청을 컨테이너 에이전트에게 전달할 수 있다.
컨테이너 에이전트가 노드 컨트롤러에 해당 요청을 전달한다(S403). 노드 컨트롤러가 컨테이너 생성 시 자동으로 마운트하여 제공하는 UNIX 도메인 소켓을 이용하는 방식, 노드 컨트롤러가 컨테이너 내부에서 169.254.169.254와 같은 사설 IP 주소로의 접근을 가로채는 방식, 컨테이너 에이전트가 컨테이너 내부의 로컬호스트에 열고 있는 TCP 포트로 접속하고 컨테이너 에이전트가 상기 방법으로 노드 컨트롤러와 통신하는 방식 중 하나 이상을 조합하여 사용자 프로세스(A), 컨테이너 에이전트(B), 노드 컨트롤러(C)가 ZeroMQ, HTTP, 웹소켓 등의 애플리케이션 프로토콜을 활용하여 상호 양방향(A<->B, B<->C, A<->C 모두 가능) 통신하는 방법을 활용할 수 있다. 사용자 프로세스가 해당 요청을 보낼 때 어느 컨테이너 소속인지 여부를 노드 컨트롤러가 판단할 수 있도록 인증키를 컨테이너 생성 시 심어두거나 노드컨트롤러가 해당 요청 출발지 IP 주소로 어느 컨테이너인지 판단하는 로직을 가지고 있어서 그것이 허용 가능한 요청인지 판별할 수 있다. 즉 기존 클라우드 서비스에서도 가상머신을 대상으로 169.254.169.254와 같은 사설 IP 주소를 통한 metadata API 서비스를 제공하고 있으나, 본 발명은 유사한 메커니즘을 가상머신이 아닌 컨테이너에 적용한다는 것이 차별점이다.
노드 컨트롤러가 클러스터 컨트롤러에 해당 요청을 전달한다(S405). 또한, 이벤트 버스 방식 또는 노드 컨트롤러가 클러스터 컨트롤러를 직접 원격프로시저호출(RPC)하는 방식으로 이용할 수 있다.
클러스터 컨트롤러가 특정세션에 대한 컨테이너 추가 또는 삭제 여부를 판단한다(S407). 클러스터 컨트롤러(100)는 특정세션에 대한 컨테이너 추가 또는 삭제가 필요한지 여부, 특정세션 및 특정세션 소유자가 해당 결정을 수행할 권한이 있는지, 특정세션에서 실제로 수행할 수 있는 자원이 충분히 있는지를 고려하여 컨테이너 추가 또는 삭제여부를 판단한다.
특정세션의 노드컨트롤러가 컨테이너엔진에 컨테이너 추가 또는 삭제 명령을 전달한다(S409). 컨테이너엔진이 컨테이너 추가 또는 삭제를 실행한다(S411). 즉, 사용자프로세스의 스스로의 판단에 의해 컨테이너의 추가 또는 삭제가 가능하다.
즉, 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 시스템(10c)은 클러스터 컨트롤러(100)와 다수개의 노드들(200a, 200b, 200c, ... , 200n)로 구성된다. 제1노드(200a)는 제1노드컨트롤러(210a), 제1메인컨테이너(230a), 제1컨테이너에이전트(240a), 사용자프로세스(250a)로 구성된다. 사용자프로세스(250a)가 컨테이너 추가 또는 삭제 요청을 컨테이너 에이전트에게 전달하여 컨테이너 변경이 가능하다.
도 9와 도 10은 본 발명의 또 다른 실시예에 따른 클러스터 자체의 노드를 추가 또는 삭제하는 자동 스케일링 방법을 설명하는 도면이다.
도 9와 도 10을 참조하면, API핸들러가 특정세션에 대한 컨테이너 추가 또는 삭제 API요청을 수신하여 클러스터 컨트롤러에 전달한다(S501). API핸들러는 사용자 또는 관리자의 요청에 의해 특정 세션에 대한 컨테이너 추가 또는 삭제 API 요청을 수신할 수 있다.
상기 클러스터 컨트롤러가 특정세션에 대한 컨테이너 추가 또는 삭제여부를 판단한다(S503). 클러스터 컨트롤러(100)는 API를 수신하여 특정세션에 대한 컨테이너 추가 또는 삭제가 필요한지 여부, 특정세션 및 특정세션 소유자가 해당 결정을 수행할 권한이 있는지, 특정세션에서 실제로 수행할 수 있는 자원이 충분히 있는지를 고려하여 컨테이너 추가 또는 삭제여부를 판단한다.
상기 클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러에 컨테이너 추가 또는 삭제 명령을 전달한다(S505). 특정세션의 노드컨트롤러가 컨테이너엔진에 컨테이너 추가 또는 삭제 명령을 전달한다(S507). 컨테이너엔진이 컨테이너 추가 또는 삭제를 실행한다(S509). 사용자 단말 또는 관리자 단말로부터 컨테이너 추가 또는 삭제 요청에 의해 컨테이너 변경이 가능하다.
이후에, 클러스터 컨트롤러가 노드 추가 또는 삭제 여부를 판단한다(S511). 기존에 있는 노드만으로 컨테이너 추가가 불가능한지를 판단하여, 최대 허용 노드 개수 및 신규 노드의 사양 옵션을 규정한 관리자 설정에 따라 노드 추가 여부를 판단한다. 컨테이너 삭제가 필요한 경우를 판단하여, 최소 유지 노드 개수 등을 규정한 관리자 설정에 따라 노드 삭제 여부를 판단한다.
노드 추가가 필요한 경우, 클러스터 컨트롤러는 클러스터 플랫폼(400)의 API를 호출하여 새로운 노드(200n+1)를 추가하고, 노드 삭제가 필요한 경우 삭제가 필요한 노드에 컨테이너가 있는지 여부를 확인하여 클러스터 플랫폼(400)이 노드를 삭제한다(S513). 노드 삭제가 필요한 경우, 1개 이상의 노드에 대해 실행중인 컨테이너가 있는지 여부를 확인하여 신규 컨테이너의 스케줄링을 차단하고, 노드 컨트롤러를 통해 대기 또는 강제 종료한다.
즉, 클러스터 상에서 클러스터 자체의 노드를 추가 또는 삭제하는 자동 스케일링 시스템(10d)은 클러스터 컨트롤러(100)와 다수개의 노드들(200a, 200b, 200c, ... , 200n), API핸들러(300), 클러스터 플랫폼(400)으로 구성된다. API핸들러(300)는 사용자단말 또는 관리자단말의 요청에 의해 특정 세션에 대한 컨테이너 추가 또는 삭제 API 요청을 수신하고 클러스터 컨트롤러(100)에 전달할 수 있다. 클러스터 플랫폼(400)은 클러스터 컨트롤러로부터 노드의 추가 또는 삭제여부를 전달받아 노드를 추가하거나 삭제한다. 구체적으로, 해당 노드를 삭제할 것이라고 클러스터 컨트롤러가 표시(mark)를 하고 신규 컨테이너를 더 이상 할당하지 않도록 하고, batch 세션인 경우 관리자 설정에 따라 작업이 완료될 때까지 기다리거나 일정 시간 후 강제 종료한 후 해당 노드를 삭제하고, interactive 세션인 경우 관리자 설정에 따라 사용자에 의해 종료될 때까지 기다리거나 해당 컨테이너의 사용자에게 경고를 보내고 일정 시간이 지난 후 강제 종료하는 작업한 후 해당 노드를 삭제한다. 실행 중인 컨테이너가 없는 경우 즉시 해당 노드를 삭제한다. 즉, 기존 클라우드의 자동 스케일링은 사용자의 요청 작업이 매우 짧은 시간만 소요되어 노드 중단을 임의 시점에 할 수 있다는 가정 하에서 동작하는 것인데, 본 발명에서는 개별 컨테이너의 작업이 매우 오랜 시간 수행되기 때문에 임의 중단이 어려워 그 가정이 성립하지 않는 경우를 지원하기 위한 것이다.
발명의 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (6)

  1. 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법에 있어서,
    노드컨트롤러가 컨테이너엔진으로부터 컨테이너에 대한 이벤트정보 및 통계정보를 수신하는 단계;
    상기 노드컨트롤러가 감지된 이벤트정보 및 통계정보를 클러스터 컨트롤러에게 전달하는 단계;
    상기 클러스터 컨트롤러가 수신된 이벤트정보 및 통계정보에 기초하여 특정세션에 대한 컨테이너 추가 또는 삭제 여부를 판단하는 단계; 및
    상기 클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러에 컨테이너 추가 또는 삭제 명령을 전달하는 단계를 포함하는 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법.
  2. 제1항에 있어서,
    특정세션의 노드컨트롤러가 컨테이너 엔진에 컨테이너 추가 또는 삭제 명령을 전달하는 단계; 및
    컨테이너엔진이 컨테이너 추가 또는 삭제를 실행하는 단계를 더 포함하는 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법.
  3. 제2항에 있어서,
    상기 클러스터 컨트롤러가 모든 노드 컨트롤러에 컨테이너의 변경내용을 전달하는 단계;
    각각의 노드 컨트롤러가 각각의 컨테이너 에이전트에 컨테이너의 변경내용을 전달하는 단계를 더 포함하는 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법.
  4. 제3항에 있어서,
    컨테이너 에이전트가 사용자 프로세스가 미리 등록한 스크립트 또는 콜백함수를 실행하여 컨테이너의 변경내용을 사용자 프로세스에 전달하는 단계; 및
    사용자프로세스가 컨테이너의 변경내용에 따라 추가된 컨테이너를 연산작업에 포함시키거나 삭제된 컨테이너를 제외하는 단계를 더 포함하는 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법.
  5. 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법에 있어서,
    API핸들러가 특정세션에 대한 컨테이너 추가 또는 삭제 API요청을 수신하여 클러스터 컨트롤러에 전달하는 단계;
    상기 클러스터 컨트롤러가 특정세션에 대한 컨테이너 추가 또는 삭제여부를 판단하는 단계;
    상기 클러스터 컨트롤러가 판단 결과에 따라 특정세션의 노드컨트롤러에 컨테이너 추가 또는 삭제 명령을 전달하는 단계;
    특정세션의 노드컨트롤러가 컨테이너엔진에 컨테이너 추가 또는 삭제 명령을 전달하는 단계; 및
    컨테이너엔진이 컨테이너 추가 또는 삭제를 실행하는 단계를 포함하는 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법.
  6. 제5항에 있어서,
    상기 클러스터 컨트롤러가 노드 추가 또는 삭제 여부를 판단하는 단계; 및
    상기 클러스터 컨트롤러가 기존에 있는 노드만으로 컨테이너 추가가 불가능한지 여부 또는 컨테이너 삭제가 필요한 경우를 판단하여, 노드 추가 또는 삭제 여부를 판단하는 단계를 더 포함하는 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법.
PCT/KR2021/019445 2021-12-09 2021-12-20 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템 WO2023106503A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2023519334A JP2023552036A (ja) 2021-12-09 2021-12-20 クラスタ上でマルチコンテナベースの演算セッションの自動スケーリング方法及びシステム
US18/246,895 US11977911B2 (en) 2021-12-09 2021-12-20 Method and system for automatically scaling multi-container-based computational session on cluster

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0175274 2021-12-09
KR1020210175274A KR102488390B1 (ko) 2021-12-09 2021-12-09 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템

Publications (1)

Publication Number Publication Date
WO2023106503A1 true WO2023106503A1 (ko) 2023-06-15

Family

ID=84900233

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2021/019445 WO2023106503A1 (ko) 2021-12-09 2021-12-20 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템

Country Status (4)

Country Link
US (1) US11977911B2 (ko)
JP (1) JP2023552036A (ko)
KR (1) KR102488390B1 (ko)
WO (1) WO2023106503A1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101740490B1 (ko) * 2015-12-29 2017-05-26 경희대학교 산학협력단 클라우드 컴퓨팅 환경에서의 사전 오토 스케일링 시스템 및 그 방법
KR20170072552A (ko) * 2015-12-17 2017-06-27 에스케이텔레콤 주식회사 클라우드 개발 환경을 위한 컨테이너 서비스 방법 및 그 장치
KR20200027783A (ko) * 2018-09-05 2020-03-13 주식회사 나눔기술 분산 지능모듈의 통합관리 시스템
KR20200070933A (ko) 2018-12-10 2020-06-18 주식회사 케이티 네트워크 기능 가상화 환경에서 동적 자원 스케일링 장치 및 방법
KR20210067415A (ko) * 2019-11-29 2021-06-08 주식회사 데브스택 클라우드 컴퓨팅 기반의 플랫폼 제공 시스템 및 이를 이용한 플랫폼 제공 방법
US20210263780A1 (en) * 2020-02-25 2021-08-26 Hewlett Packard Enterprise Development Lp Autoscaling nodes of a stateful application based on role-based autoscaling policies

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10782990B1 (en) * 2015-11-24 2020-09-22 Amazon Technologies, Inc. Container telemetry
US10069869B2 (en) * 2016-05-17 2018-09-04 Amazon Technologies, Inc. Versatile autoscaling
US20190250946A1 (en) * 2018-02-13 2019-08-15 International Business Machines Corporation Migrating a software container taking into account resource constraints
KR102032521B1 (ko) * 2018-12-26 2019-10-15 래블업(주) 컨테이너 기반의 gpu 가상화 방법 및 시스템
US11086683B2 (en) * 2019-05-16 2021-08-10 International Business Machines Corporation Redistributing workloads across worker nodes based on policy
US11182196B2 (en) * 2019-11-13 2021-11-23 Vmware, Inc. Unified resource management for containers and virtual machines
US20230062212A1 (en) * 2021-08-31 2023-03-02 International Business Machines Corporation Container lifecycle management
US20230125765A1 (en) * 2021-10-21 2023-04-27 International Business Machines Corporation Container pool management

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170072552A (ko) * 2015-12-17 2017-06-27 에스케이텔레콤 주식회사 클라우드 개발 환경을 위한 컨테이너 서비스 방법 및 그 장치
KR101740490B1 (ko) * 2015-12-29 2017-05-26 경희대학교 산학협력단 클라우드 컴퓨팅 환경에서의 사전 오토 스케일링 시스템 및 그 방법
KR20200027783A (ko) * 2018-09-05 2020-03-13 주식회사 나눔기술 분산 지능모듈의 통합관리 시스템
KR20200070933A (ko) 2018-12-10 2020-06-18 주식회사 케이티 네트워크 기능 가상화 환경에서 동적 자원 스케일링 장치 및 방법
KR20210067415A (ko) * 2019-11-29 2021-06-08 주식회사 데브스택 클라우드 컴퓨팅 기반의 플랫폼 제공 시스템 및 이를 이용한 플랫폼 제공 방법
US20210263780A1 (en) * 2020-02-25 2021-08-26 Hewlett Packard Enterprise Development Lp Autoscaling nodes of a stateful application based on role-based autoscaling policies

Also Published As

Publication number Publication date
US11977911B2 (en) 2024-05-07
JP2023552036A (ja) 2023-12-14
KR102488390B1 (ko) 2023-01-13
US20230289206A1 (en) 2023-09-14

Similar Documents

Publication Publication Date Title
US11893406B2 (en) Using virtual local area networks in a virtual computer system
US11934341B2 (en) Virtual RDMA switching for containerized
US8078764B2 (en) Method for switching I/O path in a computer system having an I/O switch
JP5160176B2 (ja) 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム
Hwang et al. A Unix-Based local computer network with load balancing
CN102187315B (zh) 在虚拟环境中获取用于服务器负载均衡的反馈信息的方法和装置
US5060140A (en) Universal programmable data communication connection system
US8327355B2 (en) Method, computer program product, and hardware product for supporting virtual machine guest migration overcommit
WO2012086916A1 (ko) 클라우드 컴퓨팅 시스템 및 클라우드 컴퓨팅 시스템에서의 트래픽 분산 방법 및 제어 방법
EP1756712A1 (en) System and method for managing virtual servers
US10652213B2 (en) Agent-less micro-segmentation of a network
WO2016047814A1 (ko) 클라우드 api 키를 이용한 자원 할당 방법 및 이를 위한 장치
US8533740B2 (en) Data processing system with intercepting instructions
CN104580124A (zh) 协议栈选择方法、装置及设备
CN112003877A (zh) 一种网络隔离方法、装置、电子设备及存储介质
WO2022001808A1 (zh) 一种系统以及中断处理方法
CN105723340B (zh) 信息处理设备、信息处理方法、记录介质、计算处理设备、计算处理方法
Lee et al. High-performance software load balancer for cloud-native architecture
Wang et al. vSocket: virtual socket interface for RDMA in public clouds
US9043792B1 (en) Virtual local area network (vlan) coordinator providing access to vlans
WO2023106503A1 (ko) 클러스터 상에서 다중 컨테이너 기반 연산 세션의 자동 스케일링 방법 및 시스템
EP1964019A2 (en) Method, apparatus and system for performing access control and intrusion detection on encrypted data
Guay et al. Early experiences with live migration of SR-IOV enabled InfiniBand
WO2023080339A1 (ko) 가상머신의 메모리관리장치
CN110134491A (zh) 信息处理传输装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2023519334

Country of ref document: JP

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21957715

Country of ref document: EP

Kind code of ref document: A1