ROUTING FOR LARGE SERVER DEPLOYMENTS
20230231825 · 2023-07-20
Assignee
Inventors
Cpc classification
H04L67/1006
ELECTRICITY
G06F16/252
PHYSICS
H04L67/02
ELECTRICITY
International classification
H04L67/1006
ELECTRICITY
Abstract
In one aspect, the present disclosure relates to a method comprising: receiving, at a client device, information from a node manager about a plurality of nodes in a computer cluster, the information comprising a network address associated each of the plurality of nodes and sending, by the client device, a request to a load balancer to access a first node from the plurality of nodes, the request comprising a first URL including an encoded representation of the network address associated with the first node. The load balancer is configured to determine the request should be routed to a first network address based on decoding the URL, the first network address associated with a first node from the plurality of nodes and forward the request to the first node in response to the determining.
Claims
1-20. (canceled)
21. A method, comprising: receiving, by a computing system, a request from a client device for access to a first node of a plurality of nodes of a computer cluster, the request comprising a first uniform resource locator (URL), the first URL comprising an encoded representation of a network address associated with the node; decoding, by the computing system, the first URL to determine a location to which the request should be routed; and routing, by the computing system, the request to the determined location based on the decoding and without having prior knowledge about state information associated with the plurality of nodes.
22. The method of claim 21, further comprising: receiving, by the computing system, a second request to access another node of the computer cluster from a second client device determining, by the computing system, that the second request does not include a URL of a desired node; and routing, by the computing system, the second request to a second node of the plurality of nodes without having prior knowledge about the state information associated with the plurality of nodes.
23. The method of claim 21, further comprising: generating, by the computing system, a plurality of URLs, each of the plurality of URLs comprising an encoded representation of a network address associated with a respective node from the plurality of nodes in the computer cluster.
24. The method of claim 21, further comprising: identifying, by the computing system, state information associated with the plurality of nodes; determining, by the computing system, that a load on the computer cluster exceeds a threshold amount; and based on the determining, allocating, by the computing system, new nodes to the computer cluster.
25. The method of claim 21, wherein a path portion of the first URL comprises the encoded representation.
26. The method of claim 21, wherein a subdomain portion of the first URL comprises the encoded representation.
27. The method of claim 21, wherein the first URL comprises a hash of an Internet Protocol (IP) address associated with the first node.
28. A non-transitory computer readable medium comprising one or more sequences of instructions, which, when executed by a processor, causes a computing system to perform operations comprising: receiving, by the computing system, a request from a client device for access to a first node of a plurality of nodes of a computer cluster, the request comprising a first uniform resource locator (URL), the first URL comprising an encoded representation of a network address associated with the node; decoding, by the computing system, the first URL to determine a location to which the request should be routed; and routing, by the computing system, the request to the determined location based on the decoding and without having prior knowledge about state information associated with the plurality of nodes.
29. The non-transitory computer readable medium of claim 28, further comprising: receiving, by the computing system, a second request to access another node of the computer cluster from a second client device determining, by the computing system, that the second request does not include a URL of a desired node; and routing, by the computing system, the second request to a second node of the plurality of nodes without having prior knowledge about the state information associated with the plurality of nodes.
30. The non-transitory computer readable medium of claim 28, further comprising: generating, by the computing system, a plurality of URLs, each of the plurality of URLs comprising an encoded representation of a network address associated with a respective node from the plurality of nodes in the computer cluster.
31. The non-transitory computer readable medium of claim 28, further comprising: identifying, by the computing system, state information associated with the plurality of nodes; determining, by the computing system, that a load on the computer cluster exceeds a threshold amount; and based on the determining, allocating, by the computing system, new nodes to the computer cluster.
32. The non-transitory computer readable medium of claim 28, wherein a path portion of the first URL comprises the encoded representation.
33. The non-transitory computer readable medium of claim 28, wherein a subdomain portion of the first URL comprises the encoded representation.
34. The non-transitory computer readable medium of claim 28, wherein the first URL comprises a hash of an Internet Protocol (IP) address associated with the first node.
35. A system comprising: a processor; and a memory comprising one or more sequences of instructions, which, when executed by the processor, causes the system to perform operations comprising: receiving a request from a client device for access to a first node of a plurality of nodes of a computer cluster, the request comprising a first uniform resource locator (URL), the first URL comprising an encoded representation of a network address associated with the node; decoding the first URL to determine a location to which the request should be routed; and routing the request to the determined location based on the decoding and without having prior knowledge about state information associated with the plurality of nodes.
36. The system of claim 35, wherein the operations further comprise: receiving a second request to access another node of the computer cluster from a second client device determining that the second request does not include a URL of a desired node; and routing the second request to a second node of the plurality of nodes without having prior knowledge about the state information associated with the plurality of nodes.
37. The system of claim 35, wherein the operations further comprise: generating a plurality of URLs, each of the plurality of URLs comprising an encoded representation of a network address associated with a respective node from the plurality of nodes in the computer cluster.
38. The system of claim 35, wherein the operations further comprise: identifying state information associated with the plurality of nodes; determining that a load on the computer cluster exceeds a threshold amount; and based on the determining, allocating new nodes to the computer cluster.
39. The system of claim 35, wherein a path portion of the first URL comprises the encoded representation.
40. The system of claim 35, wherein a subdomain portion of the first URL comprises the encoded representation.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Various objectives, features, and advantages of the disclosed subject matter can be more fully appreciated with reference to the following detailed description of the disclosed subject matter when considered in connection with the following drawings.
[0012]
[0013]
[0014]
[0015] The drawings are not necessarily to scale, or inclusive of all elements of a system, emphasis instead generally being placed upon illustrating the concepts, structures, and techniques sought to be protected herein.
DETAILED DESCRIPTION
[0016] According to various embodiments of the present disclosure, a load balancer may route network traffic to particular backend servers using network address information encoded within incoming requests. An incoming request may include the network address of a backend server encoded within a Uniform Resource Locator (URL), for example within the subdomain or path portion of the URL. The load balancer may decode the network address from the subdomain/path portion of the URL, and then forward the request to the server at that address. Using this approach, the load balancer may be able to route traffic to a large number of backend servers without having to maintain state information about those servers.
[0017]
[0018] In the embodiment of
[0019] In particular embodiments, the system 100 may be used for machine intelligence (MI) tasks. In such embodiments, each node 110 may comprise an HTTP server, visualization tools, and an MI processor (none of which are shown in
[0020] Referring again to the embodiment of
[0021] In some embodiments, the cluster computing system 100 may be hosted within a cloud computing environment. In such embodiments, the node manager 102 may instantiate and de-instantiate nodes 110 using an Application Programming Interface (API) provided by the cloud computing environment.
[0022] Referring to the embodiment of
[0023] Referring again to the embodiment of
http://inst-0a000101.example-url.com
[0024] As another example, the node's address may be encoded with the path portion of the URL, as shown here:
http://example-url.com/inst-0a000101/
[0025] In particular embodiments, the node's network address may be encoded using hexadecimal encoding. In some embodiments, the network address may be encrypted within the URL to avoid exposing network address information outside of the system 100 and/or to prevent URL tampering.
[0026] In some embodiments, the cluster load balancer 106 manages network traffic between the client devices 112 and the cluster nodes 110. In particular, the cluster load balancer 106 may receive a request from a client device 112, determine which cluster node 110 should handle the request, and then forward the client request to that node 110. In turn, the node 110 may process the client request, return a response to the cluster load balancer 106, and the cluster load balancer 106 may forward the response to the client device.
[0027] In some embodiments, cluster load balancer 106 may be configured to route client requests to particular nodes 110 specified by the request. For example, a client request may include a URL having an encoded representation of a node's network address. The URL may correspond to a URL generated by the cluster node manager 102 and provided to the client device 112, as described above. In such embodiments, the cluster load balancer 106 may be configured to decode the URL to determine the node's network address (e.g., IP address) and then forward the client request to the node using the decoded address. For example, if the client request includes the following URL:
http://inst-0a000101.example-url.com
[0028] the cluster load balancer 106 may decode this URL to determine node address 10.0.1.1 and then forward the client request to that address.
[0029] Whereas traditional load balancers may need to keep track of each backend server, the cluster load balancer 106 can route client requests to particular nodes 110 without having to maintain any information about the nodes. Moreover, unlike existing load balancers, the techniques described herein do not require iterating through rules lists or using lookup tables and, thus, scale to an arbitrary number of nodes 110 without affecting the processing or storage requirements within the load balancer 106.
[0030] In one embodiment, the cluster load balancer 106 utilizes a NGINX™, an open source web server and load balancer, along with OpenResty® to route network traffic to the cluster nodes 110.
[0031] Referring to
[0032] At block 206, a request is received from a client device, the request including a first URL. The first URL includes an encoded representation of a network address of a first node of the cluster (e.g., node 110a in
[0033] Referring to
[0034] At block 306, a request is sent to a cluster load balancer (e.g., cluster load balancer 106 of
[0035] Although embodiments of the present disclosure have been described for use with cluster computing systems, the concepts sought to be protected herein can be utilized in any multi-server computing system.
[0036] The subject matter described herein can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structural means disclosed in this specification and structural equivalents thereof, or in combinations of them. The subject matter described herein can be implemented as one or more computer program products, such as one or more computer programs tangibly embodied in an information carrier (e.g., in a machine readable storage device), or embodied in a propagated signal, for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers). A computer program (also known as a program, software, software application, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file. A program can be stored in a portion of a file that holds other programs or data, in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
[0037] The processes and logic flows described in this specification, including the method steps of the subject matter described herein, can be performed by one or more programmable processors executing one or more computer programs to perform functions of the subject matter described herein by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus of the subject matter described herein can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0038] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processor of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of nonvolatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, flash memory device, or magnetic disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0039] It is to be understood that the disclosed subject matter is not limited in its application to the details of construction and to the arrangements of the components set forth in the following description or illustrated in the drawings. The disclosed subject matter is capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting. As such, those skilled in the art will appreciate that the conception, upon which this disclosure is based, may readily be utilized as a basis for the designing of other structures, methods, and systems for carrying out the several purposes of the disclosed subject matter. It is important, therefore, that the claims be regarded as including such equivalent constructions insofar as they do not depart from the spirit and scope of the disclosed subject matter.
[0040] Although the disclosed subject matter has been described and illustrated in the foregoing exemplary embodiments, it is understood that the present disclosure has been made only by way of example, and that numerous changes in the details of implementation of the disclosed subject matter may be made without departing from the spirit and scope of the disclosed subject matter.