The current invention relates to software containers and retrieval of log data from clusters of containers nodes. Software container is logical block containing an application and all its dependencies and libraries, which can be executed in isolated, controlled and easy-to-deploy manner in any computing environment. Containers can be deployed on private, public or hybrid clouds, can run on a single machine and share the operating system kernel, while maintaining resource isolation.
The following detailed description references the drawings, wherein:
The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the following description to refer to the same or similar parts. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only. While several examples are described in this document, modifications, adaptations, and other implementations are possible. Accordingly, the following detailed description does not limit the disclosed examples. Instead, the proper scope of the disclosed examples may be defined by the appended claims.
The terminology used herein is for the purpose of describing particular examples only and is not intended to be limiting. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “plurality,” as used herein, is defined as two or more than two. The term “another,” as used herein, is defined as at least a second or more. The term “coupled,” as used herein, is defined as connected, whether directly without any intervening elements or indirectly with at least one intervening elements, unless otherwise indicated. Two elements can be coupled mechanically, electrically, or communicatively linked through a communication channel, pathway, network, or system. The term “and/or” as used herein refers to and encompasses any and all possible combinations of the associated listed items. It will also be understood that, although the terms first, second, third, etc. may be used herein to describe various elements, these elements should not be limited by these terms, as these terms are only used to distinguish one element from another unless stated otherwise or the context indicates otherwise. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.
The current invention discloses a method for retrieval of metadata from clusters of computing nodes with containers based on application dependencies. Conventionally, upon the occurrence of faults in a cluster of nodes with containers, log data from entire cluster is retrieved by the cloud management platform. The log data is then analyzed to identify the cause of the fault and perform corrections in the configuration of the cluster. However, there are certain technical limitations with this approach. Firstly, since the log data (also referred to as support dump) is for the entire cluster, the log data is often substantial in size and requires considerable network bandwidth in order to be made available on the cloud management platform. Moreover, given the considerable size of the data, parsing the data requires considerable time and computation efforts. Additionally, since the containers may be deployed on any computing environment (such as private cloud, public cloud, on premise data center, etc.,), generating a consolidated support dump from nodes of different clusters may be challenging. The limitations are addressed by the current invention. The current invention discloses a method and controller for retrieving metadata from the one or more clusters, associated with a fault in a node based on application dependencies (also referred to as dependency information). This is further explained below.
In a first aspect, the current invention discloses a method for retrieving metadata from one or more clusters of computing nodes. The method comprises detecting failure of a first application instance of a first application running on a first computing node of the one or more clusters; determining a plurality of associated application instances of one or more applications running on one or more computing nodes of the one or more clusters, wherein the associated application instances are determined based on dependencies related to the failed application instance of the first application; and retrieving metadata associated with the failed application instance and the determined plurality of associated application instances from corresponding computing nodes, for fault analysis.
In an embodiment, the first node from includes application configuration of the first application indicative of dependencies between a plurality of application instances running on one or more computing nodes of the one or more clusters and the first application.
In an embodiment, the method further comprises identifying a second application instance of the first application running on at least one computing node of the one or more clusters, determining a plurality of associated application instances of one or more applications running on one or more computing nodes of the one or more clusters, wherein the associated application instances are determined based on dependencies related to the second application instance of the first application; retrieving metadata associated with the second application instance and the determined plurality of associated application instances associated with the second application instance from corresponding computing nodes; and performing fault analysis based on a comparison of metadata associated with the failed application instance of the first application and determined plurality of associated application instances associated with the first application instance, and metadata associated with the second application instance of the first application and determined plurality of associated application instances associated with the second application instance.
In an embodiment the metadata associated with the failed application instance of the first application and determined plurality of associated application instances, includes logs of the failed application instance of the first application and determined plurality of associated application instances, wherein each log includes one or more received user commands along with corresponding timestamps, and output associated with the received user commands. In another embodiment the metadata associated with the failed application instance of the first application and determined plurality of associated application instances, includes configuration associated with the failed application instance and the determined plurality of application instances.
In an embodiment a first set of one or more computing nodes from the plurality of computing nodes, are on a cloud infrastructure, and a second set of one or more computing nodes from the plurality of computing nodes, are on a dedicated on-premise infrastructure.
In a second aspect, the current invention discloses a cloud management system for managing a plurality of application instances running in a plurality of containers on a plurality of computing nodes in one or more clusters. The cloud management system comprises a controller connected to one or more computing nodes on a cloud infrastructure, and one or more computing nodes on a dedicated on-premise infrastructure. The controller is for detecting failure of a first application instance of a first application running on a first container in a computing node of the one or more clusters; determining a plurality of associated application instances of one or more applications running on a plurality of containers in the plurality of computing nodes of the one or more clusters based on dependencies related to the failed application instance of the first application using dependency information of the first application, wherein the dependency information is indicative of dependencies between a plurality of application instances running on the plurality of containers in plurality of computing nodes of the clusters and the first application; and retrieving metadata associated with the failed application instance and the determined plurality of associated application instances from corresponding computing nodes, for fault analysis.
In a third aspect, the current invention discloses a non-transitory machine-readable storage medium storing instructions that, when executed by at least one processor, cause the at least one processor to detect failure of a first application instance of a first application running on at least one computing node of one or more clusters; determine a plurality of associated application instances of one or more applications running on one or more computing nodes of the one or more clusters based dependencies related to the failed application instance of the first application using dependency information associated with the first application on the at least one computing node, wherein the dependency information is indicative of dependencies between a plurality of application instances running on one or more computing nodes of the cluster and the first application; and retrieve metadata associated with the failed application instance and the determined plurality of associated application instances from corresponding computing nodes, for fault analysis.
As generally described herein, a node refers to a computing device on a network, either a virtual or physical machine, such as a personal computer, a cell phone, a printer, or a server, among others. Each node (131, 135, 161, 165, 171) includes a set of physical hardware that includes any number of processing resources (e.g., central processing units, graphics processing units, microcontrollers, application-specific integrated circuits, programmable gate arrays, and/or other processing resources), storage resources (e.g., random access memory, non-volatile memory, solid state drives, hard disk drives HDDs, optical storage devices, tape drives, and/or other suitable storage resources), network resources (e.g., Ethernet, IEEE 802.11 Wi-Fi, and/or other suitable wired or wireless network resources), I/O resources, and/or other suitable computing hardware. Each node may have metadata associated with it, which may be in the form of labels or annotations specifying different attributes (e.g., application configuration attributes) related to the node. Each node is connected to every other node in the cluster and is capable transferring data and applications to every other node in the cluster. A first set of one or more computing nodes from the plurality of computing nodes are deployed on a dedicated on-premise infrastructure. Similarly, a second set of one or more computing nodes from the plurality of computing nodes are deployed on a cloud infrastructure.
A plurality of containers may be deployed in each node from the clusters. For example,
Each container is logical environment containing one or more applications and all resources and libraries, which can be executed in isolated, controlled and easy-to-deploy manner in any computing environment. The container may encapsulate application resources, libraries, environmental variables, and/or other resources for use by the application. Each container may have metadata specifying different requirements and attributes associated with the container. Each container may include any suitable number of applications along with libraries, environmental settings, variables, etc., that create an independent execution environment. Thus, applications within the container have a discrete and isolated runtime environment.
Management of the containers in the nodes can be via a container orchestration controller 115, such as, for example, Docker Swarm, Kubermetes, Amazon EC2 Container Service, Azure Container Service, or any other system for deploying to and managing containers on a node or cluster of nodes. Such container orchestration controllers (illustrated in
At step 220, the controller 115 determines a plurality of associated applications of one or more applications running on one or more computing nodes (131, 135, 161, 165 and 171), wherein the associated application instances are determined based on dependencies related to the failed application instance of the first application. In an embodiment, each application includes an application configuration (also referred to as configuration file) in the container. The configuration file includes properties of the application within the container (e.g., application role, application name, brand, version, features, build parameters, and/or other suitable properties) and is stored within the first container. Additionally, the configuration file includes references to other applications which have a dependency relationship with the first application. Based on the configuration file of the application of the failed application instance, the controller 115 (via the first container agent) determines the one or more applications which have a dependency relationship with the first application. In an embodiment, the controller 115 builds a data structure (such as a dependency tree) indicative of the dependencies upon deployment on applications on the clusters. In an embodiment, the dependency tree is built dynamically upon fault detection. Subsequent to determining the one or more applications, the controller 115 communicates with the container agents of the plurality of containers on the plurality of nodes on the cluster 120 and cluster 150 to determine application instances of the determined one or more applications. The associated application instances may run on the first container or any other container on the one or more computing nodes on the clusters. For example, an associated application instance may be on a computing node 161 of the cluster 150, while the first application instance was running on a first container on the computing node 131 of the cluster 120.
At step 230, the controller 115 (along with the container agents) retrieves metadata associated with failed application instance and the plurality of associated application instances from the corresponding containers on the corresponding computing nodes on the clusters 120 and 150, for fault analysis. Metadata retrieved by the controller 115 includes logs of the application instances including list of user commands along with corresponding time stamps and corresponding outputs of the user commands. In an example, the metadata further comprises configuration files associated with the failed application instance and the determined plurality of application instances. In an example, the controller 115 performs fault analysis by correlating failure timestamp of the first application instance, user commands temporally proximal to the failure timestamp and error and warning messages from log data of failed application instance and associated application instances.
Processor 410 may be central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 420. In the example shown in
Machine-readable storage medium 420 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, machine-readable storage medium 420 may be, for example, Random Access Memory (RAM), a nonvolatile RAM (NVRAM) (e.g., RRAM, PCRAM, MRAM, etc.), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a flash memory, a storage drive, an optical disc, and the like. Alternatively, machine-readable storage medium 420 may be a portable, external or remote storage medium, for example, that allows a computing system to download the instructions from the portable/external/remote storage medium. In this situation, the executable instructions may be part of an “installation package”. As described herein, machine-readable storage medium 420 may be encoded with executable instructions for retrieving metadata from one or more clusters of computing nodes with containers using application dependencies.
Referring to
In an embodiment, the method 200 further comprises (as shown in
The foregoing disclosure describes a number of example implementations for retrieving metadata from one or more clusters of computing nodes with containers using application dependencies. The disclosed examples may include systems, devices, computer-readable storage media, and methods for retrieving metadata from one or more clusters of computing nodes with containers using application dependencies. For purposes of explanation, certain examples are described with reference to the components illustrated in
Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples. Further, the sequence of operations described in connection with
Number | Date | Country | Kind |
---|---|---|---|
201941012273 | Mar 2019 | IN | national |