IP Library Granted Patent US 9,148,479
Granted Patent B1
US 9,148,479 · App. 13/363,928 · Granted Sep 29, 2015

Systems and methods for efficiently determining the health of nodes within computer clusters

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,148,479
App. No.
13/363,928
Granted
Sep 29, 2015
Kind
B1
Abstract

A computer-implemented method for determining the healthiness of nodes within computer clusters may include (1) identifying a computer cluster that includes a plurality of nodes configured to provide substantially continuous availability of at least one application, (2) identifying at least one operating system kernel installed on at least one of the nodes, (3) configuring the operating system kernel to (a) asynchronously monitor performance of the node and (b) determine, based at least in part on the node's performance, whether the node is sufficiently healthy to execute the application, (4) receiving a notification from the operating system kernel that indicates that the node is not sufficiently healthy to execute the application, and then (5) performing at least one action configured to enable the computer cluster to provide substantially continuous availability of the application despite the unhealthy node. Various other systems, methods, and computer-readable media are also disclosed.

Claims (78)

1. A computer-implemented method for efficiently determining the health of nodes within computer clusters, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a computer cluster that comprises a plurality of nodes configured to provide continuous availability of at least one application;

identifying a plurality operating system kernels installed on the plurality of nodes, each operating system kernel representing part of an operating system installed on a node within the plurality of nodes and facilitating communication between the node's hardware and software;

configuring at least one operating system kernel within the plurality of operating system kernels to:

asynchronously monitor performance of the node on which the operating system kernel is installed;

determine, based at least in part on the node's performance, whether the node is healthy to execute the application;

after configuring the operating system kernel installed on the node, receiving a notification generated by the operating system kernel in response to a change in an operating status of the node, the notification indicating that the node is not healthy to execute the application;

in response to receiving the notification, performing at least one action configured to enable the computer cluster to reduce application downtime despite the unhealthy node.

2. The method of claim 1 , further comprising:

identifying a cluster engine configured to control which of the nodes is to execute the application within the computer cluster;

identifying at least one cluster agent installed on the node that enables the cluster engine to control execution of the application by the node.

3. The method of claim 2 , wherein configuring the operating system kernel comprises using the cluster engine to configure the operating system kernel.

4. The method of claim 2 , wherein performing the action configured to enable the computer cluster to provide continuous availability of the application comprises using the cluster engine to:

receive the notification from the operating system kernel;

perform the action in response to receiving the notification.

5. The method of claim 2 , wherein configuring the operating system kernel to determine whether the node is healthy to execute the application comprises configuring the operating system kernel to:

asynchronously monitor the cluster agent's health;

determine, based at least in part on the cluster agent's health, whether the node is healthy to execute the application.

6. The method of claim 2 , wherein configuring the operating system kernel comprises:

identifying an identifier associated with the cluster agent installed on the node;

registering the cluster agent's identifier with the operating system kernel to prompt the operating system kernel to asynchronously monitor the cluster agent's health.

7. The method of claim 2 , wherein the action configured to enable the computer cluster to provide continuous availability of the application comprises restarting the cluster agent in an attempt to restore the cluster agent's health.

8. The method of claim 1 , wherein the action configured to enable the computer cluster to provide continuous availability of the application comprises:

preventing the unhealthy node from continuing to execute the application;

selecting at least one different node within the computer cluster to begin executing the application.

9. The method of claim 1 , wherein the action configured to enable the computer cluster to provide continuous availability of the application comprises ensuring that the unhealthy node is not selected to execute the application until the node becomes healthy to execute the application.

10. The method of claim 1 , further comprising:

identifying a polling mechanism installed on the node;

configuring the polling mechanism to:

periodically monitor the node's performance by checking, at a predetermined interval of time, for an unhealthy condition in which a plurality of processes initiated on the node are waiting for at least one resource to be released by one another;

determine, based at least in part on the check for the unhealthy condition, whether the node is experiencing the unhealthy condition.

11. The method of claim 10 , further comprising:

further configuring the operating system kernel to:

monitor an amount of processes being executed by the node;

determine whether the amount of processes being executed by the node is above a predetermined threshold;

after further configuring the operating system kernel, receiving a different notification from the operating system kernel that indicates that the amount of processes being executed by the node is above the predetermined threshold;

in response to receiving the different notification, dynamically adjusting the predetermined interval of time at which the polling mechanism checks for the unhealthy condition.

12. A system for determining the healthiness of nodes within computer clusters, the system comprising:

an identification module programmed to:

identify a computer cluster that comprises a plurality of nodes configured to provide continuous availability of at least one application;

identify a plurality of operating system kernels installed on the plurality of nodes, each operating system kernel representing part of an operating system installed on a node within the plurality of nodes and facilitating communication between the node's hardware and software;

a cluster engine programmed to:

configure at least one operating system kernel within the plurality of operating system kernels to:

asynchronously monitor performance of the node on which the operating system is installed;

determine, based at least in part on the node's performance, whether the node is healthy to execute the application;

receive, after configuring the operating system kernel, a notification generated by the operating system kernel in response to a change in an operating status of the node, the notification indicating that the node is not healthy to execute the application;

perform, in response to receiving the notification, at least one action configured to enable the computer cluster to reduce application downtime despite the unhealthy node;

at least one hardware processor configured to execute the identification module and the cluster engine.

13. The system of claim 12 , wherein the identification module is programmed to identify at least one cluster agent installed on the node that enables the cluster engine to control execution of the application by the node.

14. The system of claim 13 , wherein the cluster engine is programmed to configure the operating system kernel installed on the node to:

asynchronously monitor the cluster agent's health;

determine, based at least in part on the cluster agent's health, whether the node is healthy to execute the application.

15. The system of claim 13 , wherein the cluster engine is programmed to:

identify an identifier associated with the cluster agent;

register the cluster agent's identifier with the operating system kernel to prompt the operating system kernel to asynchronously monitor the cluster agent's health.

16. The system of claim 13 , wherein the action configured to enable the computer cluster to provide continuous availability of the application comprises restarting the cluster agent in an attempt to restore the cluster agent's health.

17. The system of claim 12 , wherein the action configured to enable the computer cluster to provide continuous availability of the application comprises:

preventing the unhealthy node from continuing to execute the application;

selecting at least one different node within the computer cluster to begin executing the application.

18. The system of claim 12 , wherein the action configured to enable the computer cluster to provide continuous availability of the application comprises ensuring that the unhealthy node is not selected to execute the application until the node becomes healthy to execute the application.

19. The system of claim 12 , wherein:

the identification module is programmed to identify a polling mechanism installed on the node;

the cluster engine is programmed to:

configure the polling mechanism to:

periodically monitor the node's performance by checking, at a predetermined interval of time, for an unhealthy condition in which a plurality of processes initiated on the node are waiting for at least one resource to be released by one another;

determine, based at least in part on the check for the unhealthy condition, whether the node is experiencing the unhealthy condition further configure the operating system kernel to:

monitor an amount of processes being executed by the node;

determine whether the amount of processes being executed by the node is above a predetermined threshold;

receive, after further configuring the operating system kernel, a different notification from the operating system kernel that indicates that the amount of processes being executed by the node is above the predetermined threshold;

dynamically adjust, in response to receiving the different notification, the predetermined interval of time at which the polling mechanism checks for the unhealthy condition.

20. A non-transitory computer-readable-storage medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify a computer cluster that comprises a plurality of nodes configured to provide continuous availability of at least one application;

identify a plurality of operating system kernels installed on the plurality of nodes, each operating system kernel representing part of an operating system installed on a node within the plurality of nodes and facilitating communication between the node's hardware and software;

configure at least one operating system kernel within the plurality of operating system kernels to:

asynchronously monitor performance of the node on which the operating system kernel is installed;

determine, based at least in part on the node's performance, whether the node is healthy to execute the application;

receive, after configuring the operating system kernel installed on the node, a notification generated by the operating system kernel in response to a change in an operating status of the node, the notification indicating that the node is not healthy to execute the application;

perform, in response to receiving the notification, at least one action configured to enable the computer cluster to reduce application downtime despite the unhealthy node.

Assignments (16)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2012
From: BHALERAO, ANAND; GAURAV, AMIT; RANGARI, AMIT HARIDAS; THAKUR, VISHAL
To: SYMANTEC CORPORATION
Reel/Frame 027635/0186 →