MY142244A

Network load balancing with host status information

Abstract

IN A FIRST EXEMPLARY MEDIA IMPLEMENTATION, ONE OR MORE PROCESSOR-ACCESSIBLE MEDIA INCLUDE PROCESSOR-EXECUTABLE INSTRUCTIONS THAT, WHEN EXECUTED, DIRECT A SYSTEM TO PERFORM ACTIONS THAT INCLUDE: ACCUMULATING HOST (108) STATUS INFORMATION AT MULTIPLE HOSTS (108) AND SENDING THE ACCUMULATED HOST (108) STATUS INFORMATION FROM THE MULTIPLE HOSTS. IN A SECOND EXEMPLARY MEDIA IMPLEMENTATION, ONE OR MORE PROCESSOR-ACCESSIBLE MEDIA INCLUDE PROCESSOR-EXECUTABLE INSTRUCTIONS THAT, WHEN EXECUTED, DIRECT A SYSTEM TO PERFORM ACTIONS THAT INCLUDE: RECEIVING HOST (108) STATUS INFORMATION FROM MULTIPLE HOSTS (108); AND MAKING LOAD BALANCING DECISIONS RESPONSIVE TO THE RECEIVED HOST (108) STATUS INFORMATION. IN A THIRD EXEMPLARY MEDIA IMPLEMENTATION, ONE OR MORE PROCESSORACCESSIBLE MEDIA INCLUDE PROCESSOR-EXECUTABLE INSTRUCTIONS THAT, WHEN EXECUTED, DIRECT A SYSTEM TO PERFORM ACTIONS THAT INCLUDE: DETERMINING HEALTH AND LOAD INFORMATION (1206) ON A PER APPLICATION BASIS; AND SELECTING AN APPLICATION FROM AMONG MULTIPLE APPLICATIONS RESPONSIVE TO THE HEALTH AND LOAD INFORMATION (1206). FIGURE1

MY142244A, drawing sheet 1
Sheet 1 of 44

Term

No projected expiry on record.

  1. Priority
  2. Filed
  3. Published
  4. Today

7 claims: 1 independent, 6 dependent

  1. 1
    CLAIMS 1. A system comprising:5 means for receiving (1208) application-specific health and load information (1206) from a plurality of hosts (108), the application-specific health information including an indication of when an application running on said hosts is in a failing status;and means for making (106) load balancing decisions responsive to the received application-specific health and load information.
  2. 6
    10 balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches; wherein the plurality of applications are executing on the plurality of hosts. 15 17. The system as recited in claim 13, wherein the system further comprises:a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, each host of the plurality of hosts having a health and load table of the plurality of health and load tables;and a plurality of load balancing units comprised of at least one device and corresponding 20 to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches. 18. The system as recited in claim 13, wherein the system further comprises: 25 a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, each host of the plurality of hosts having a health and load table of the plurality of health and load tables;and a plurality of load balancing units comprised of at least one device and corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the 1 7 DEC 2339 132 plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;wherein the health and load infrastructure comprises a remote part of the load balancing infrastructure. 19. The system as recited in claim 13, wherein the system further comprises: a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, each host of the plurality of hosts having a health and load table of the plurality of health and load tables;and a plurality of load balancing units comprised of at least one device and corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;wherein the at least one device is one of the plurality of devices. 20. The system as recited in claim 13, wherein the system further comprises: a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, each host of the plurality of hosts having a health and load table of the plurality of health and load tables;and a plurality of load balancing units comprised of at least one device and corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;wherein the at least one device is not one of the plurality of devices;and wherein the health and load infrastructure is further adapted to disseminate the application-specific health and load information from the plurality of devices to the at least one device. J 1 Ctt 2339 133 21. The system as recited in claim 5, wherein the health and load infrastructure and the load balancing infrastructure are capable of using a message protocol for communications there between that relate to the application-specific health and load information. 22. The system as recited in claim 21, wherein the message protocol comprises one or more of the following message types: a heartbeat message type, a goodbye message type, a row change message type, a get table snapshot message type, a send table snapshot message type, a postulate table state message type, and a postulate wrong message type. 23. The system as recited in claim 21, wherein the message protocol includes a capability for communication using group membership. 24. The system as recited in claim 5, wherein the load balancing infrastructure, after a failure, is capable of recovering the application-specific health and load information via the health and load infrastructure using a message protocol for communications there between. 25. The system as recited in claim 5, wherein the load balancing infrastructure is further adapted to allocate requests to the plurality of applications using one or more allotment schemes. 26. The system as recited in claim 25, wherein the one or more allotment schemes comprise at least one of a token allotment scheme and a percentage allotment scheme. 27. The system as recited in claim 25, wherein the one or more allotment schemes entail using a timer expiration mechanism. 28. The system as recited in claim 5, further comprising at least one device that is hosting one or more applications;17 DK 2339 134 wherein the health and load infrastructure comprises: a health and load table that includes a plurality of entries, each entry of the plurality of entries associated with an application of the one or more applications: each entry of the plurality of entries comprising: an application identifier for a particular application of the one or more applications;information characterizing at least one status of the particular application;and at least one load balancing directive regarding the particular application. 29. The system as recited in claim 28, wherein the application identifier uniquely identifies the particular application from among the one or more applications. 30. The system as recited in claim 28, wherein the application identifier comprises at least one of a virtual internet protocol, IP, address and port, a physical IP address and port, a protocol relevant to the particular application, and information that is specific to the protocol. 31. The system as recited in claim 28, wherein the application identifier comprises at least one globally unique identifier, GUID. 32. The system as recited in claim 28, wherein the information characterizing at least one status of the particular application comprises at least one of application health, application load, and application capacity. 33. The system as recited in claim 32, wherein the application health further indicates whether the status of the particular application is healthy, or unknown;wherein the application load indicates how occupied the particular application is;and wherein the application capacity indicates a maximum capacity of the particular application. 34. The system as recited in claim 33, wherein the maximum capacity of the particular application is expressed (i) relative to a total capacity for applications of a same type 1 7 DEC 2339 135 as that of the particular application that are executing on the at least one device and/or (ii) as a unit-less and bounded number. 35. The system as recited in claim 28, wherein the at least one load balancing directive may be provided to a plurality of load balancing units of the load balancing infrastructure to provide guidance for network load balancing regarding the particular application and with respect to other applications of a same application type. 36. The system as recited in claim 28, wherein the at least one load balancing directive comprises at least one of active, draining, and inactive. 37. The system as recited in claim 28, wherein the at least one load balancing directive comprises a target load balancing state directive and a current load balancing state directive. 38. The system as recited in claim 37, wherein (i) the target load balancing state directive indicates a load balancing state that the health and load infrastructure intends for the load balancing infrastructure to be operating under, the load balancing infrastructure including a plurality of load balancing units, and (ii) the current load balancing state directive indicates a load balancing state that the health and load infrastructure believes the load balancing infrastructure to be currently operating under. 39. The system as recited in claim 28, further comprising a plurality of devices;wherein the health and load infrastructure comprises a plurality of health and load tables, and wherein each respective device of the plurality of devices includes a respective health and load table of the plurality of health and load tables. 40. The system as recited in claim 5, wherein the system implements a message protocol between at least one host of the health and load infrastructure and one or more load balancing units of the load balancing infrastructure, the message protocol usable for communicating health and load information between the at least one host and the one or more load balancing units. 17 DEC 233 136 41. The system as recited in claim 40, wherein the message protocol includes a heartbeat message that indicates to the one or more load balancing units that the at least one host is functioning. 42. The system as recited in claim 41, wherein a format of the heartbeat message comprises an identifier for the at least one host, error checking data for health and load information, and a domain name system, DNS, name. 43. The system as recited in claim 41, wherein a format of the heartbeat message permits inclusion of a chunk number/generation identifier, ID, pair. 44. The system as recited in claim 40, wherein the message protocol includes a goodbye message that indicates to the one or more load balancing units that the at least one host is planning to shutdown. 45. The system as recited in claim 44, wherein a format of the goodbye message comprises an identifier for the at least one host. 46. The system as recited in claim 40, wherein the message protocol includes a row change message that indicates to the one or more load balancing units that health and load information for an application of the at least one host has changed. 47. The system as recited in claim 46, wherein a format of the row change message comprises an identifier for the at least one host, an identifier for the application, an operation to reflect the change, and data for the operation. 48. The system as recited in claim 40, wherein the message protocol includes a get table snapshot message that is sent from the one or more load balancing units to the at least one host, the get table snapshot message requesting a snapshot of current health and load information of the at least one host. 1 7 DEC 2339 137 49. The system as recited in claim 48, wherein a format of the get table snapshot message comprises an identification of a requesting load balancing unit of the one or more load balancing units. 50. The system as recited in claim 40, wherein the message protocol includes a send table snapshot message that is sent from the at least one host to a requesting load balancing unit of the one or more load balancing units, the send table snapshot message providing a snapshot of current health and load information of the at least one host. 51. The system as recited in claim 50, wherein a format of the send table snapshot message comprises the snapshot of the current health and load information of the at least one host. 52. The system as recited in claim 40, wherein the message protocol includes a postulate table state message that is sent from the at least one host to the one or more load balancing units, the postulate table state message including a load balancing state directive that indicates a current load balancing state directive that is expected by the at least one host to be existing at the one or more load balancing units. 53. The system as recited in claim 52, wherein a format of the postulate table state message comprises an identifier for the at least one host and the current load balancing state directive. 54. The system as recited in claim 40, wherein the message protocol includes a postulate wrong message that is sent from a load balancing unit of the one or more load balancing units to the at least one host, which previously sent a postulate table state message;the postulate wrong message indicating that the load balancing unit has an actual load balancing state directive that differs from a postulated load balancing state directive that is included in the postulate table state message. 55. A processor-accessible medium storing instructions that when executed by a computer (4002) cause the computer to perform a method comprising actions of: 1 7 DEC 2339 138 receiving (1406) application-specific health and load information from a plurality of hosts, the application-specific health information including an indication of when an application running on said hosts is in a failing status;and making (1414) load balancing decisions responsive to the received application-specific health and load information. 56. The processor-accessible medium as recited in claim 55, wherein the method further comprises an action of: receiving a request for a new connection from a client;and wherein the action of making comprises an action of: selecting a destination target for the new connection responsive to the received application-specific health and load information. 57. The processor-accessible medium as recited in claim 55, wherein the action of receiving comprises at least one action of: receiving the application-specific health and load information directly from one or more hosts of the plurality of hosts;or receiving the application-specific health and load information indirectly from one or more hosts of the plurality of hosts. 58. A method comprising actions of: determining (1402) health and load information on a per application basis of a plurality of hosts (108), the per-application health information including an indication of when an application running on said hosts is in a failing status;and selecting (1414), as part of a load balancing decision, an application from among a plurality of applications responsive to the per-application health and load information.
  3. 7
    1 1 DuC 2339 139 59. The method as recited in claim 58, wherein the action of determining comprises an action of:determining when applications of the plurality of applications start and stop. 60. The method as recited in claim 58, wherein the action of determining comprises an action of: determining when an application of the plurality of applications is healthy and when the application is failing or failed. 61. The method as recited in claim 58, wherein the action of determining comprises an action of: determining a load of a given application of a particular application type relative to loading of one or more other applications of the particular application type. 62. The method as recited in claim 58, further comprising an action of: receiving external input regarding determination of the health and load information on a per application basis;wherein the action of determining comprises an action of: determining the health and load information on a per application basis in accordance with the external input. 63. The method as recited in claim 58, further comprising an action of: disseminating the per-application health and load information from at least one host to one or more load balancing units. 64. The method as recited in claim 58, further comprising an action of: disseminating the per-application health and load information from at least one host to one or more load balancing units using a membership grouping. 17 m 7339 140 65. The method as recited in claim 64, wherein the action of disseminating comprises an action of: sending a heartbeat message from the at least one host to a leadership host, wherein the heartbeat message includes a forwarding indication such that the leadership host is directed to forward the heartbeat message to the one or more load balancing units even if no change in the membership grouping is involved. 66. The method as recited in claim 58, further comprising an action of: disseminating the per-application health and load information from at least one health and load table to one or more consolidated health and load caches. 67. The method as recited in claim 58, further comprising actions of: receiving the per-application health and load information from a plurality of hosts;and caching the per-application health and load information. 68. The method as recited in claim 58, further comprising actions of: receiving the per-application health and load information from a plurality of hosts;caching the received per-application health and load information;receiving a packet requesting a connection initiation;and consulting the cached per-application health and load information for the connection initiation;wherein the action of selecting comprises an action of: selecting the application from among the plurality of applications responsive to the consulting. 17 KC 2M9 141 69. The method as recited in claim 68, wherein the connection initiation pertains to a particular application type. 70. The method as recited in claim 58, wherein the action of selecting comprises an action of: selecting an application endpoint from among a plurality of application endpoints responsive to the per-application health and load information. 71. The method as recited in claim 58, wherein the action of selecting comprises an action of: selecting, responsive to the per-application health and load information, an application endpoint from among a plurality of application endpoints that are distributed among a plurality of hosts. 72. The method as recited in claim 58, wherein the action of selecting comprises an action of: selecting, responsive to the per-application health and load information, an allotment of application endpoints from among a plurality of application endpoints with regard to relative available capacities between or among the plurality of application endpoints. 73. The method as recited in claim 72, wherein the action of selecting comprises a further action of: selecting the allotment of application endpoints using a token allotment scheme and/or a percentage allotment scheme. 74. The method as recited in claim 72, wherein the plurality of application endpoints correspond to applications of a single application type. 75. The method as recited in claim 58, wherein the action of selecting comprises an action of: I 7 EEC 2339 142 selecting the application from among the plurality of applications responsive to the perapplication health and load information in order to balance a network load caused by incoming packets. 5 76. The method as recited in claim 58, wherein the action of selecting comprises an action of: selecting the application from among the plurality of applications responsive to the perapplication health and load information in order to balance a network load caused by incoming connection requests.