IP Library Granted Patent US 10,484,337
Granted Patent B2
US 10,484,337 · App. 16/050,958 · Granted Nov 19, 2019

Scalable proxy clusters

Inventors: Udayakumar Subbarayan (Bangalore, IN); Bernard Harguindeguy (Atherton, CA); Anoop Krishnan Gopalakrishnan (Bangalore, IN); Abdu Raheem Poonthiruthi (Bangalore, IN)
Assignee: Ping Identity Corporation
H04L63/0281G06F9/546H04L41/0893H04L41/12H04L41/28H04L41/50H04L45/46H04L45/56H04L45/58H04L45/74H04L47/125H04L47/20H04L63/08H04L63/166H04L67/02H04L67/10H04L67/1068H04L67/1095H04L67/12H04L67/145H04L67/28H04L67/32H04L67/42H04L69/16H04L69/329H04L69/40
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 10,484,337
App. No.
16/050,958
Granted
Nov 19, 2019
Kind
B2
Abstract

The invention enables high-availability, high-scale, high security and disaster recovery for API computing, including in terms of capture of data traffic passing through proxies, routing communications between clients and servers, and load balancing and/or forwarding functions. The invention inter alia provides (i) a scalable cluster of proxies configured to route communications between clients and servers, without any single point of failure, (ii) proxy nodes configured for implementing the scalable cluster (iii) efficient methods of configuring the proxy cluster, (iv) natural resiliency of clusters and/or proxy nodes within a cluster, (v) methods for scaling of clusters, (vi) configurability of clusters to span multiple servers, multiple racks and multiple datacenters, thereby ensuring high availability and disaster recovery (vii) switching between proxies or between servers without loss of session.

Claims (57)

1. A method of synchronizing data states between proxy nodes within a networked cluster of proxy nodes, the method comprising:

detecting a synchronization event at a first proxy node within the networked cluster of proxy nodes;

synchronizing, at the first proxy node, one or more data states of the first proxy node with corresponding one or more data states of a second proxy node within the networked cluster of proxy nodes, the one or more data states of the first proxy node and the corresponding one or more data states of the second proxy node including information descriptive of a set of Application Programming Interfaces (APIs) hosted on a set of servers;

reconfiguring, in response to a change to an API from the set of APIs and hosted on a server from the set of servers, the one or more data states of the first proxy node to reflect the change to the API;

communicating, from the first proxy node, the one or more data states of the first proxy node after the reconfiguring to the remaining proxy nodes in the networked cluster of proxy nodes such that each proxy node from the remaining proxy nodes, in response to receiving the one or more data states of the first proxy node, synchronizes one or more data states of that proxy node with the one or more data states of the first proxy node; and

identifying, for each API request from a set of API requests received at the first proxy node, a server from the set of servers to transmit that API request to based on a routing policy and the information descriptive of the set of APIs.

2. The method as claimed in claim 1 , wherein the one or more data states of the first proxy node are synchronized with the one or more data states of every proxy node from the remaining proxy nodes.

3. The method as claimed in claim 1 , wherein the one or more data states of the first proxy node and the corresponding one or more data states of the second proxy node comprise data states of any one or more of server characteristic data, session data, security data, configuration data, or proxy node data associated with the respective proxy node.

4. The method as claimed in claim 1 , wherein the synchronization event includes at least one of:

the first proxy node joining the networked cluster of proxy nodes;

the first proxy node resuming operations subsequent to a state of failure; or

an expiration of a predefined time period.

5. The method as claimed in claim 1 , wherein each API request from the set of API requests is associated with an API from the set of APIs, and the information descriptive of the set of APIs includes information indicating at least one server from the set of servers that hosts each API from the set of APIs,

the identifying including identifying, for each API request from the set of API requests, the at least one server from the set of servers that hosts the API associated with that API request based on the information descriptive of the set of APIs.

6. The method as claimed in claim 1 , wherein the synchronizing the one or more data states of the first proxy node with the corresponding one or more data states of the second proxy node includes configuring the first proxy node to have routing functionality identical to routing functionality of the second proxy node.

7. The method as claimed in claim 1 , further comprising:

receiving, at the first proxy node, a configuration input through at least one of a command-line interpreter (CLI) or a RESTful API;

modifying the one or more data states of the first proxy node in response to receiving the configuration input; and

communicating, from the first proxy node, the one of more data states of the first proxy node after the modifying to the remaining proxy nodes in the networked cluster of proxy nodes such that each proxy node from the remaining proxy nodes, in response to receiving the one of more data states of the first proxy node, synchronizes one or more data states of that proxy node with the one or more data states of the first proxy node.

8. The method as claimed in claim 1 , further comprising:

determining, for each API request from the set of API requests, whether that API request conforms to one or more Layer 7 protocols; and

transmit, in response to determining that an API request from the set of API requests conforms to the one or more Layer 7 protocols, the API request to the server identified for the API request.

9. A computer program product for synchronizing data states between proxy nodes within a networked cluster of proxy nodes, comprising a non-transitory computer usable medium having a computer readable program code embodied therein, the computer readable program code comprising instructions executable to:

detect a synchronization event at a first proxy node within the networked cluster of proxy nodes;

synchronize, at the first proxy node, one or more data states of the first proxy node with corresponding one or more data states of a second proxy node within the networked cluster of proxy nodes, the one or more data states of the first proxy node and the corresponding one or more data states of the second proxy node including information descriptive of a set of Application Programming Interfaces (APIs) hosted on a set of servers;

reconfigure, in response to a change to an API from the set of APIs and hosted on a server from the set of servers, the one or more data states of the first proxy node to reflect the change to the API;

communicate, from the first proxy node, the one or more data states of the first proxy node after the reconfiguring to the remaining proxy nodes in the networked cluster of proxy nodes such that each proxy node from the remaining proxy nodes, in response to receiving the one or more data states of the first proxy node, synchronizes one or more data states of that proxy node with the one or more data states of the first proxy node; and

transmit an API request received from a client device to a server (1) from the set of servers and (2) identified based on a routing policy and the information descriptive of the set of APIs.

10. The computer program product as claimed in claim 9 , wherein the synchronization event includes at least one of:

the first proxy node joining the networked cluster of proxy nodes;

the first proxy node resuming operations subsequent to a state of failure; or

an expiration of a predefined time period.

11. The computer program product as claimed in claim 9 , wherein:

the API request is associated with an API from the set of APIs,

the information descriptive of the set of APIs includes information indicating at least one server from the set of servers that hosts each API from the set of APIs,

the server identified based on the routing policy and the information descriptive of the set of APIs is a server that hosts an API associated with the API request.

12. The computer program product as claimed in claim 9 , wherein the instruction executable to synchronize the one or more data states of the first proxy node with the corresponding one or more data states of the second proxy node includes an instruction executable to configure the first proxy node to have routing functionality identical to routing functionality of the second proxy node.

13. The computer program product as claimed in claim 9 , wherein the computer readable program code further comprises instructions executable to:

modify, in response to receiving a configuration input at the first proxy node through at least one of a command-line interpreter (CLI) or a RESTful API, the one or more data states of the first proxy node to produce one or more modified data states of the first proxy node; and

communicate, from the first proxy node, the one or more modified data states of the first proxy node to the remaining proxy nodes in the networked cluster of proxy nodes such that each proxy node from the remaining proxy nodes, in response to receiving the one of more modified data states of the first proxy node, synchronizes one or more data states of that proxy node with the one or more modified data states of the first proxy node.

14. The computer program product as claimed in claim 9 , wherein the computer readable program code further comprises instructions executable to determine whether the API request conforms to one or more Layer 7 protocols,

the instruction executable to transmit the API request to the server including an instruction executable to transmit the API request to the server in response to determining that the API request conforms to the one or more Layer 7 protocols.

15. An apparatus, comprising:

a memory; and

a processor associated with a proxy node from a plurality of proxy nodes in a cluster of proxy nodes, the processor operatively coupled to the memory and configured to:

synchronize, in response to a synchronization event, a data state of the proxy node with a data state of at least one proxy node other than the proxy node and from the plurality of proxy nodes, the data state of the proxy node and the data state of the at least one proxy node other than the proxy node including information descriptive of a set of Application Programming Interfaces (APIs) hosted on a set of servers;

reconfigure, in response to a change to an API from the set of APIs and hosted on a server from the set of servers, the data state of the proxy node to reflect the change to the API;

communicate the data state of the proxy node that reflects the change to the API to the remaining proxy nodes from the plurality of proxy nodes such that each proxy node from the remaining proxy nodes, in response to receiving the data state of the first proxy node, synchronizes a data state of that proxy node with the data state of the proxy node;

extract, from an API request received from a client device, information descriptive of an API associated with the API request; and

identify a server from the set of servers to transmit the API request to based on (i) the information descriptive of the set of APIs, (ii) the information descriptive of the API associated with the API request, and (iii) a routing policy.

16. The apparatus as claimed in claim 15 , wherein the processor is further configured to:

receive a configuration input through at least one of a command-line interpreter (CLI) or a RESTful API;

modify the data state of the proxy node in response to receiving the configuration input to produce a modified data state; and

communicate the modified data state to the remaining proxy nodes from the plurality of proxy nodes such that each proxy node from the remaining proxy nodes, in response to receiving the modified data state, synchronizes a data state of that proxy node with the modified data state.

17. The apparatus as claimed in claim 15 , wherein the processor is further configured to:

determine whether the API request conforms to one or more Layer 7 protocols; and

transmit, in response to determining that the API request conforms to the one or more Layer 7 protocols, the API request to the server.

Assignments (10)
RELEASE OF SECURITY INTEREST AT R/F 61703/0988 Recorded Nov 14, 2025
From: BLUE OWL CAPITAL CORPORATION
To: PING IDENTITY CORPORATION
Reel/Frame 073570/0777 →
SECURITY INTEREST Recorded Nov 13, 2025
From: PING IDENTITY CORPORATION; PING IDENTITY INTERNATIONAL, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 073557/0093 →
RELEASE OF SECURITY INTEREST Recorded Oct 19, 2022
From: BANK OF AMERICA, N.A.
To: PING IDENTITY CORPORATION
Reel/Frame 061709/0527 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Oct 18, 2022
From: PING IDENTITY CORPORATION
To: OWL ROCK CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 061703/0988 →
SECURITY INTEREST Recorded Nov 23, 2021
From: PING IDENTITY CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 058944/0687 →
RELEASE OF SECURITY INTEREST Recorded Nov 23, 2021
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: PING IDENTITY CORPORATION
Reel/Frame 058195/0557 →
PATENT SECURITY AGREEMENT Recorded Dec 12, 2019
From: PING IDENTITY CORPORATION
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 051271/0247 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2018
From: SUBBARAYAN, UDAYAKUMAR; HARGUINDEGUY, BERNARD; GOPALAKRISHNAN, ANOOP KRISHNAN; POONTHIRUTHI, ABDU RAHEEM
To: ELASTIC BEAM, INC.
Reel/Frame 047492/0731 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2018
From: ELASTIC BEAM, LLC
To: PING IDENTITY CORPORATION
Reel/Frame 047492/0758 →
CHANGE OF NAME Recorded Nov 14, 2018
From: ELASTIC BEAM INC.
To: ELASTIC BEAM, LLC
Reel/Frame 047512/0842 →
Continuity (3)
Division 15164512 · May 25, 2016
Provisional Application 62167165 · May 27, 2015
Related Publication 20180337892A1 · Nov 22, 2018
Cited By (55)
US 12,192,026 US 12,200,038 US 12,200,083 US 12,200,084 US 12,218,776 US 12,218,777 US 12,229,210 US 12,231,253 US 12,231,519 US 12,250,089 US 12,250,090 US 12,260,364 US 12,261,712 US 12,277,187 US 12,277,188 US 12,277,189 US 12,278,878 US 12,278,880 US 12,284,069 US 12,289,383 US 12,294,481 US 12,301,401 US 12,309,241 US 12,323,287 US 12,323,500 US 12,323,501 US 12,332,960 US 12,341,860 US 12,355,855 US 12,368,789 US 12,375,582 US 12,411,902 US 12,413,648 US 12,425,492 US 12,438,956 US 12,445,511 US 12,457,273 US 12,483,635 US 12,517,972 US 12,524,490 US 12,524,491 US 12,536,243 US 12,549,645 US 12,563,130 US 12,587,429 US 12,587,430 US 12,587,579 US 12,603,809 US 12,652,330 US 12,659,218 US 12,671,750 US 12,706,984 US 12,719,734 US 12,719,735 US 12,719,945