US11582120B2 - Partitioning health monitoring in a global server load balancing system - Google Patents

Partitioning health monitoring in a global server load balancing system Download PDF

Info

Publication number
US11582120B2
US11582120B2 US16/746,785 US202016746785A US11582120B2 US 11582120 B2 US11582120 B2 US 11582120B2 US 202016746785 A US202016746785 A US 202016746785A US 11582120 B2 US11582120 B2 US 11582120B2
Authority
US
United States
Prior art keywords
resources
dns
health monitoring
servers
different
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US16/746,785
Other versions
US20200382584A1 (en
Inventor
Murali Basavaiah
Anand Parthasarathy
Sreeram Iyer
Sambit Kumar Das
Narasimhan Gomatam Mandeyam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VMware LLC filed Critical VMware LLC
Priority to US16/746,785 priority Critical patent/US11582120B2/en
Assigned to VMWARE, INC. reassignment VMWARE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BASAVAIAH, MURALI, DAS, SAMBIT KUMAR, IYER, SREERAM, MANDEYAM, NARASIMHAN GOMATAM, PARTHASARATHY, ANAND
Publication of US20200382584A1 publication Critical patent/US20200382584A1/en
Priority to US18/102,696 priority patent/US11909612B2/en
Application granted granted Critical
Publication of US11582120B2 publication Critical patent/US11582120B2/en
Assigned to VMware LLC reassignment VMware LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: VMWARE, INC.
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • H04L43/065Generation of reports related to network devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/828Allocation of resources per group of connections, e.g. per group of users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1036Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers

Definitions

  • Large-scale clustered environments host numerous servers, sometimes on the order of thousands of servers or more.
  • the servers may be implemented using various virtual devices such as containers, virtual machines, and the like. It may be difficult to monitor the health of the servers and manage traffic among the servers in these environments. For example, the health of a cluster of servers is determined from various factors such as individual server health, application health, and network connectivity.
  • Conventional techniques for monitoring a group of servers and providing a network service typically involve instantiating a service provider (e.g., a monitoring service) on each application server in the cluster of servers.
  • a service provider e.g., a monitoring service
  • Some embodiments provide a novel method of performing health monitoring for resources associated with a global server load balancing (GSLB) system.
  • This system is implemented by several domain name system (DNS) servers that perform DNS services for resources located at several geographically separate sites.
  • DNS domain name system
  • the method identifies several different groupings of the resources. It then assigns the health monitoring of the different resource groups to different DNS servers.
  • the method then configures each particular DNS server (1) to send health monitoring messages to the particular group of resources assigned to the particular DNS server, (2) to generate data by analyzing responses to the sent health monitoring messages, and (3) to distribute the generated data to the other DNS servers.
  • the method in some embodiments is performed by a set of one or more controllers.
  • the health monitoring is performed for resources that include load balancers that forward data messages to backend servers.
  • the load balancers include different clusters of load balancers responsible for forwarding data message flows among different sets of backend servers located at different geographical sites.
  • each load balancer cluster is in the same geographical site as the set of backend servers to which it forwards data messages.
  • the monitored resources include backend servers that process and respond to the data message flows.
  • the DNS servers in some embodiments receive DNS requests for at least one application executed by each backend server, and in response to the DNS requests, provide network addresses to access the backend servers.
  • the network addresses in some embodiments include different VIP (virtual Internet Protocol) addresses that direct the data message flows to different clusters of load balancers that distribute the load among the backend servers.
  • VIP virtual Internet Protocol
  • Some of the health-monitoring messages have formats that allow the load balancers to respond, while other health-monitoring messages have formats that require the backend servers to process the messages and respond. For instance, a load balancer responds to a simple ping message, while a backend server needs to respond to an https message directed to a particular operation of an application that is identified by a particular domain name address.
  • each DNS server in some embodiments is configured to analyze responses to the health monitoring messages that it sends, to generate data based on this analysis, and to distribute the generated data to the other DNS servers.
  • the generated data is used to identify a first set of resources that have failed, and/or a second set of resources that have poor operational performance (e.g., have operational characteristics that fail to meet desired operational metrics).
  • each particular DNS server is configured to identify (e.g., to generate) statistics from responses that each particular resource sends to the health monitoring messages from the particular DNS server.
  • the DNS server in some embodiments aggregates the generated statistics with statistics it previously generated for the particular resource (e.g., by computing a weighted sum) over a duration of time.
  • each DNS server periodically distributes to the other DNS severs the statistics it identifies for the resources that are assigned to it.
  • the DNS server directly distributes the statistics to the other DNS servers in some embodiments, while it distributes the statistics indirectly through the controller set in other embodiments.
  • the DNS servers in some embodiments analyze the generated and distributed statistics to assess the health of the monitored resources, and adjust the way they distribute the data message flows when they identify failed or poorly performing resources through their analysis.
  • the DNS servers are configured similarly to analyze the same set of statistics in the same way to reach the same conclusions. Instead of distributing generated statistics regarding a set of resources, the monitoring DNS server in other embodiments generates health metric data from the generated statistics, and distributes the health metric data to the other DNS servers.
  • the DNS servers in some embodiments are part of two or more DNS server clusters.
  • the different DNS clusters are in different datacenters, which can be in different geographical sites (e.g., different neighborhoods, different cities, different states, different countries, etc.).
  • one or more DNS server clusters are in one or more private datacenters, while one or more other DNS server clusters are in one or more public datacenters.
  • each DNS server has a resource selector and a health monitor in some embodiments.
  • the resource selector of the DNS server specifies the resources to which the DNS server should send health monitoring messages.
  • the resource selector has a mapping table that associates different resources with different DNS servers, and consults this table to identify the resources to which the health monitor of its DNS server should send health monitoring messages.
  • the mapping table in some embodiments is a hash lookup table (e.g., a hash wheel) that identifies different DNS servers for different ranges of hash values.
  • the resource selector generates a hash value from the identifier of each resource and uses the generated hash value as an index into the hash lookup table to identify the DNS server for the resource.
  • FIG. 1 illustrates a process that implements the method of some embodiments.
  • FIG. 2 illustrates a GSLB system that uses the process of some embodiments.
  • FIG. 3 illustrates a more detailed example of a GSLB system that uses the sharding method of some embodiments of the invention.
  • FIG. 4 illustrates an example of a hash wheel.
  • FIGS. 5 - 11 provides additional example of how the controller cluster shards the health monitoring across the DNS service engines.
  • FIG. 12 illustrates a process that the resource selector of a DNS service engine performs in some embodiments.
  • FIG. 13 illustrates a process that the health monitor of a DNS service engine performs in some embodiments.
  • FIG. 14 conceptually illustrates a computer system with which some embodiments of the invention are implemented.
  • Some embodiments provide a novel sharding method for performing health monitoring of resources associated with a global server load balancing (GSLB) system.
  • the method of some embodiments partitions the responsibility for the monitoring the health of different groups of resources among several domain name system (DNS) servers that perform DNS services for resources located at several geographically separate sites.
  • DNS domain name system
  • FIG. 1 illustrates a process 100 that implements the method of some embodiments.
  • the process 100 will be described by reference to an example of a GSLB system 200 of FIG. 2 .
  • the GSLB system 200 includes a set of controllers 205 , several DNS service engines 210 and several groups 225 of resources 215 .
  • the DNS service engines are the DNS servers that perform DNS operations for (e.g., provide network addresses for domain names provided by) machines 220 that need to forward data message flows to the resources 215 .
  • the controller set 205 performs the process 100 .
  • the process 100 starts by the controller set 205 identifying (at 105 ) several groupings 225 of the resources 215 .
  • the process 100 next assigns (at 110 ) the health monitoring of the different groups to different DNS service engines.
  • the DNS service engine 210 a is assigned to check the health of the resource group 225 a
  • the DNS service engine 210 b is assigned to check the health of the resource group 225 b
  • the DNS service engine 210 c is assigned to check the health of the resource group 225 c . This association is depicted by one set of dashed lines in FIG. 2 .
  • the process 100 configures (at 115 ) each particular DNS service engine (1) to send health monitoring messages to the particular group of resources assigned to the particular DNS service engine, (2) to generate data by analyzing responses of the resources to the health monitoring messages, and (3) to distribute the generated data to the other DNS service engines.
  • FIG. 2 depicts with another set of dashed lines control communication channel between the controller set 205 and the DNS service engines 210 . Through this channel, the controller set configures the DNS service engines. The DNS service engines in some embodiments also provide through this channel the data that they generate based on the responses of the resources to the health monitoring messages. After 115 , the process 100 ends.
  • the resources 215 that are subjects of the health monitoring are the backend servers that process and respond to the data message flows from the machines 220 .
  • the DNS service engines 210 in some embodiments receive DNS requests from the machines 220 for at least one application executed by each of the backend servers, and in response to the DNS requests, provide network addresses to access the backend servers.
  • the network addresses in some embodiments include different VIP (virtual Internet Protocol) addresses that direct the data message flows to different clusters of load balancers that distribute the load among the backend servers.
  • VIP virtual Internet Protocol
  • Each load balancer cluster in some embodiments is in the same geographical site as the set of backend servers to which it forwards data messages.
  • the load balancers are the resources that are subject of the health monitoring.
  • the resources that are subject to the health monitoring include both the load balancers and the backend servers.
  • Health monitoring messages use different types. Several examples of such messages are described below including ping messages, TCP messages, UDP messages, https messages, and http messages. Some of these health-monitoring messages have formats that allow the load balancers to respond, while other health-monitoring messages have formats that require the backend servers to process the messages and respond. For instance, a load balancer responds to a simple ping message, while a backend server needs to respond to an https message directed to a particular function associated with a particular domain address.
  • each DNS service engine 210 in some embodiments is configured to analyze responses to the health monitoring messages that it sends, to generate data based on this analysis, and to distribute the generated data to the other DNS service engines.
  • the generated data is used to identify a first set of resources that have failed, and/or a second set of resources that have poor operational performance (e.g., have operational characteristics that fail to meet desired operational metrics).
  • each particular DNS service engine 210 is configured to identify (e.g., to generate) statistics from responses that each particular resource sends to the health monitoring messages from the particular DNS service engine. Each time the DNS service engine 210 generates new statistics for a particular resource, the DNS service engine in some embodiments aggregates the generated statistics with statistics it previously generated for the particular resource (e.g., by computing a weighted sum) over a duration of time. In some embodiments, each DNS service engine 210 periodically distributes to the other DNS severs the statistics it identifies for the resources that are assigned to it. Each DNS service engine 210 directly distributes the statistics that it generates to the other DNS service engines in some embodiments, while it distributes the statistics indirectly through the controller set 205 in other embodiments.
  • the DNS service engines in some embodiments analyze the generated and distributed statistics to assess the health of the monitored resources, and adjust the way they distribute the data message flows when they identify failed or poorly performing resources through their analysis.
  • the DNS service engines are configured similarly to analyze the same set of statistics in the same way to reach the same conclusions. Instead of distributing generated statistics regarding a set of resources, the monitoring DNS service engines in other embodiments generate health metric data from the generated statistics, and distribute the health metric data to the other DNS service engines.
  • FIG. 3 illustrates a more detailed example of a GSLB system 300 that uses the sharding method of some embodiments of the invention.
  • backend application servers 305 are deployed in four datacenters 302 - 308 , three of which are private datacenters 302 - 306 and one of which is a public datacenter 308 .
  • the datacenters in this example are in different geographical sites (e.g., different neighborhoods, different cities, different states, different countries, etc.).
  • a cluster of one or more controllers 310 are deployed in each datacenter 302 - 308 .
  • Each datacenter also has a cluster 315 of load balancers 317 to distribute the data message load across the backend application servers 305 in the datacenter.
  • three datacenters 302 , 304 and 308 also have a cluster 320 of DNS service engines 325 to perform DNS operations to process (e.g., to provide network addresses for domain names provided by) for DNS requests submitted by machines 330 inside or outside of the datacenters.
  • the DNS requests include requests for fully qualified domain name (FQDN) address resolutions.
  • FQDN fully qualified domain name
  • FIG. 3 illustrates the resolution of an FQDN that refers to a particular application “A” that is executed by the servers of the domain acme.com. As shown, this application is accessed through https and the URL “A.acme.com”.
  • the DNS request for this application is resolved in three steps. First, a public DNS resolver 360 initially receives the DNS request and forwards this request to the private DNS resolver 365 of the enterprise that owns or manages the private datacenters 302 - 306 .
  • the private DNS resolver 365 selects one of the DNS clusters 320 . This selection is random in some embodiments, while in other embodiments it is based on a set of load balancing criteria that distributes the DNS request load across the DNS clusters 320 . In the example illustrated in FIG. 3 , the private DNS resolver 365 selects the DNS cluster 320 b of the datacenter 304 .
  • each DNS cluster 320 b resolves the domain name to an IP address.
  • each DNS cluster includes multiple DNS service engines 325 , such as DNS service virtual machines (SVMs) that execute on host computers in the cluster's datacenter.
  • SVMs DNS service virtual machines
  • a frontend load balancer (not shown) in some embodiments selects a DNS service engine 325 in the cluster to respond to the DNS request, and forwards the DNS request to the selected DNS service engine.
  • Other embodiments do not use a frontend load balancer, and instead have a DNS service engine serve as a frontend load balancer that selects itself or another DNS service engine in the same cluster for processing the DNS request.
  • the DNS service engine 325 b that processes the DNS request uses a set of criteria to select one of the backend server clusters 305 for processing data message flows from the machine 330 that sent the DNS request.
  • the set of criteria for this selection in some embodiments (1) includes the health metrics that are generated from the health monitoring that the DNS service engines perform, or (2) is generated from these health metrics, as further described below. Also, in some embodiments, the set of criteria include load balancing criteria that the DNS service engines use to distribute the data message load on backend servers that execute application “A.”
  • the selected backend server cluster is the server cluster 305 c in the private datacenter 306 .
  • the DNS service engine 325 b of the DNS cluster 320 b returns a response to the requesting machine. As shown, this response includes the VIP address associated with the selected backend server cluster 305 . In some embodiments, this VIP address is associated with the local load balancer cluster 315 c that is in the same datacenter 306 as the selected backend server cluster.
  • each load balancer cluster 315 has multiple load balancing engines 317 (e.g., load balancing SVMs) that execute on host computers in the cluster's datacenter.
  • load balancing engines 317 e.g., load balancing SVMs
  • a frontend load balancer selects a load balancing service engine 317 in the cluster to select a backend server 305 to receive the data message flow, and forwards the data message to the selected load balancing service engine.
  • Other embodiments do not use a frontend load balancer, and instead have a load balancing service engine in the cluster serve as a frontend load balancer that selects itself or another load balancing service engine in the same cluster for processing the received data message flow.
  • this service engine uses a set of load balancing criteria (e.g., a set of weight values) to select one backend server from the cluster of backend servers 305 c in the same datacenter 306 .
  • the load balancing service engine then replaces the VIP address with an actual destination IP (DIP) address of the selected backend server, and forwards the data message and subsequent data messages of the same flow to the selected back end server.
  • DIP destination IP
  • the selected backend server then processes the data message flow, and when necessary, sends a responsive data message flow to the machine 330 .
  • the responsive data message flow is through the load balancing service engine that selected the backend server for the initial data message flow from the machine 330 .
  • the controllers 310 facilitate the health-monitoring method that the GSLB system 300 performs in some embodiments.
  • the controllers 310 perform the process 100 of FIG. 1 , to define groups of load balancers 317 and/or backend servers 305 to monitor, to assign the different groups to different DNS service engines 325 , and to configure these servers and/or clusters to perform the health monitoring.
  • the controllers 310 generate and update a hash wheel that associates different DNS service engines 325 with different load balancers 317 and/or backend servers 305 to monitor.
  • FIG. 4 illustrates an example of a hash wheel 400 . As shown, this wheel 400 has several different ranges of hash values, with each range associated with one of eight different DNS service engines 405 .
  • the controllers 310 provide each DNS service engine 405 with a copy of this hash wheel, and a hash generator 410 (e.g., a hash function) that generates a hash value from different identifiers of different resources that are to be monitored.
  • a hash generator 410 e.g., a hash function
  • each DNS service engine 405 uses the hash generator 410 to generate a hash value from the resource's identifier, (2) identifies the hash range that contains the generated hash value, (3) identifies the DNS service engine associated with the identified hash range, and (4) adds the resource to its list of resources to monitor when it is the identified DNS service engine identified by the hash wheel for the resource.
  • the controllers 310 assign the different resources (e.g., load balancers 317 and/or backend servers 325 ) to the different DNS clusters 320 , and have each cluster determines how to distribute the health monitoring load among its own DNS service engines. Still other embodiments use other techniques to shard the health monitoring responsibility among the different DNS service engines 325 and clusters 320 .
  • the controllers 310 also collect health-monitoring data that their respective DNS service engines 325 (e.g., the DNS service engines in the same datacenters as the controllers) generate, and distribute the health-monitoring data to other DNS service engines 325 .
  • a first controller in a first datacenter distributes health-monitoring data to a set of DNS service engines in a second datacenter by providing this data to a second controller in the second datacenter to forward the data to the set of DNS service engines in the second datacenter.
  • FIG. 3 and its accompanying discussion refer to just one controller in each datacenter 302 - 308 , one of ordinary skill will realize that in some embodiments a cluster of two or more controllers are used in each datacenter 302 - 308 .
  • FIGS. 5 - 11 provides additional example of how the controller cluster shards (i.e., partitions) the health monitoring across the DNS service engines.
  • FIG. 5 illustrates an example of using two sets of sharding maps to distribute the health monitoring load across for nine distributed applications across four DNS service engines.
  • the nine applications are App 1 -App 9 , the first four of which have .com FQDNs, while the last five have .net FQDNs.
  • Each of these applications is executed by two or more backend servers.
  • a first shard map 505 associates the .com FQDNs with the first pair of DNS service engines SE 1 and SE 2 , and the .net FQDNs with the second pair of DNS service engines SE 3 and SE 4 .
  • Two second set shard maps 510 a and 510 b then associate each DNS service engine in the two DNS-server pairs to one of the nine applications.
  • the shard map 510 a associates the DNS service engine SE 1 to monitor App 1 and App 3
  • DNS service engine SE 2 to monitor App 2 and App 4
  • the shard map 510 b associates the DNS service engine SE 3 to monitor App 5 , App 7 and App 9 , and DNS service engine SE 4 to monitor App 6 and App 8 .
  • FIG. 6 illustrates an example of partitioning the health monitoring of different load balancers 610 in one or more datacenters across different DNS service engines 605
  • FIG. 7 illustrates an example of partitioning the health monitoring of different backend servers 710 in one or more datacenters across different DNS service engines 605
  • FIG. 8 illustrates an example of partitioning the health monitoring of different combination of load balancers 610 and backend servers 710 across different DNS service engines 605 .
  • the DNS service engines 605 in some embodiments are in the same datacenters as the load balancers 610 and backend servers 710 that they monitor, while in other embodiments the DNS service engines 605 can monitor the health of load balancers 610 and backend servers 710 in the same datacenter as, or in different datacenters than, the DNS service engines.
  • FIG. 9 illustrates an example of partitioning the health monitoring of different distributed applications across different DNS service engines 605 .
  • This figure illustrates N distributed applications, each of which in this example are executed on three backend servers. Each application is associated with a different FQDN.
  • This figure illustrates N DNS service engines 605 with each of these DNS service engines monitoring the health of all the backend servers that execute one of the N distributed applications.
  • Each of the DNS service engines acts as a health monitoring (HM) proxy for one distributed application.
  • HM proxy for its associated application
  • the DNS service engine sends health monitoring messages to the backend servers that execute its application, generates health monitoring data from the backend servers' responses to the its health monitoring messages, and then distributes health monitoring data to the other DNS service engines 605 directly or through one or more controllers.
  • FIG. 10 illustrates another example of DNS service engines operating as HM proxies.
  • the health monitoring of N distributed applications is partitioned among N different DNS sever clusters 1005 , with each cluster having multiple different DNS service engines.
  • the health monitoring of the backend servers that execute that cluster's associated application is distributed among the DNS service engines of that cluster.
  • Each DNS service engine sends health monitoring messages to the backend servers that execute the application of its cluster, generates health monitoring data from the backend servers' responses to the health monitoring messages, and then distributes health monitoring data to the other DNS service engines 1005 of its cluster and other clusters directly or through one or more controllers.
  • each cluster has one DNS service engine or controller aggregate the health monitoring data of the DNS service engines of that cluster, and then forward the aggregated health monitoring data to the other DNS service engines 605 of its cluster and other clusters.
  • one DNS cluster monitors the backend servers of one distributed application.
  • one DNS cluster can monitor the backend servers of two or more distributed applications.
  • different DNS clusters 1105 in some embodiments are responsible for performing health monitoring for different sets 1110 of arbitrary resources, such as load balancers and/or backend servers.
  • one or more DNS clusters are responsible for monitoring the health of one or more sets of load balancers, while one or more other DNS clusters are responsible for monitoring the health of one or more sets of backend servers.
  • each DNS cluster 1105 monitors the health of the load balancers and/or backend servers in its own datacenter.
  • each DNS service engine in some embodiments has a resource selector and a health monitor that facilitate its health monitoring operation.
  • the resource selector of the DNS service engine specifies the resources to which the DNS service engine should send health monitoring messages, while its health monitor sends the health monitoring messages to the resources identified by the resource selector.
  • FIG. 12 illustrates a process 1200 that the resource selector of a DNS service engine performs in some embodiments.
  • the resource selector performs this process each time that it receives, from a controller, a new or updated list of resources, and/or a new hash lookup table that maps resources to DNS service engines.
  • the process 1200 selects (at 1205 ) an identifier (e.g., UUID, universal unique identifier) of a resource for which the process 1200 has to identify a DNS service engine that will monitor the resource's health.
  • the selected resource might be one that the resource selector examined in prior iterations of the process 1200 , but has to examine again as it has received a new hash lookup table.
  • the process 1200 uses a hash function to generate a hash value for the identifier selected at 1205 .
  • the controller cluster configures the DNS service engines to use the same hash function for all the resources to monitor, or for all resources of a certain type or certain locale.
  • the process 1200 uses (at 1215 ) the generated value as an index into the hash table that associates different DNS service engines with different ranges of hash values.
  • the process (at 1215 ) identifies the lookup table hash range that contains the generated hash value, and identifies the DNS service engine specified for this hash range.
  • the hash table in some embodiments is a hash wheel.
  • the process 1200 adds the resource identified at 1205 to a list of resource to monitor for the health monitor of its associated DNS service engine, when the DNS service engine identified at 1215 is the process' associated DNS service engine.
  • the DNS service engine's resource selector directs its server's health monitor to monitor a resource identified at 1205 , when the hash of this resource's identifier falls into a hash range of the lookup table that is identified with the resource selector's DNS service engine.
  • the process determines whether it has examined all the resources that are on a list of resources for it to examine to identify their health monitoring DNS service engine.
  • the list of resources to examine just includes newly added resources, while including all the resources in other cases when the hash lookup table is updated.
  • the process ends. Otherwise, it returns to 1205 to select an identifier of another resource to examine.
  • FIG. 13 illustrates a process 1300 that the health monitor of a DNS service engine performs in some embodiments.
  • the health monitor in some embodiments performs this process continuously for the set of resources that the DNS service engine has been assigned to monitor.
  • the process 1300 sends (at 1305 ) health monitoring messages to resources identified on the list of resources that the DNS service engine has to monitor.
  • this list is compiled by the process 1200 of the resource selector of the DNS service engine, as mentioned above. Examples of health monitoring messages will be further described below.
  • the process 1300 receives responses to the health monitoring messages, or times out without receiving responses to these messages from one or more resources. Based on responses to health monitoring messages, the process 1300 generates (at 1315 ) statistics in some embodiments. For instance, in some embodiments, the process 1300 maintains (at 1315 ) an average response time for a resource to respond to health monitoring messages.
  • each time the health monitor of the DNS service engine receives a HM response to an HM message from a resource identifies the time duration between sending the message and receiving the response, and blends this identified response time duration with a running response-time average that the health monitor maintains for the resource.
  • the health monitor computes the blended response time by computing a weighted sum of the response time measurements that it collects and stores over a duration of time in some embodiments. In other embodiments, for a resource, the health monitor simply computes the weighted sum of the response time that it identified for the resource at 1310 with the blended average that it previously computed and stored for the resource.
  • the process determines whether it has reached the time for sending another round of health monitoring messages to the resources on its list of resources to monitor. If so, it transitions to 1305 to repeat its operations. Otherwise, at 1325 , the process determines whether it has reached the time to report the statistics that it has generated for its monitored set of resources. If not, it returns to 1320 .
  • each DNS service engine in some embodiments periodically distributes to the other DNS service engines the statistics it identifies for the resources that are assigned to it for health monitoring.
  • the process determines (at 1325 ) that it has reached the time to report the statistics, the process sends the health monitoring statistics that it has generated since its last reporting to the local controller or controller cluster in the same datacenter as its DNS service engine.
  • the local controller or controller cluster then distributes these statistics (1) to other DNS service engines in the same datacenter as the local controller or controller cluster, and (2) to other controllers in other datacenters to forward to other DNS service engines in their respective datacenters.
  • the process 1300 directly distributes its statistics to the other DNS service engines in its DNS cluster, and/or other DNS clusters.
  • the DNS service engines in some embodiments analyze the generated and distributed statistics to assess the health of the monitored resources, and adjust the way they distribute the data message flows when they identify failed or poorly performing resources through their analysis.
  • the DNS service engines are configured similarly to analyze the same set of statistics in the same way to reach the same conclusions.
  • the monitoring DNS service engine in other embodiments generates health metric data from the generated statistics, and distributes the health metric data to the other DNS service engines directly or indirectly through the controllers.
  • Each DNS service engine analyzes the health metric data that it generates and that it receives from other DNS service engines, and based on this analysis, adjusts the way it distributes the data message flows when it identifies failed or poorly performing resources through its analysis.
  • a DNS service engine adjusts its data message flow distribution by foregoing sending of data message flows to failed resources, and by reducing or eliminating the sending of data message flows to poorly performing resources (i.e., resource with poor health monitoring statistics). For instance, in the embodiments in which a DNS service engine uses a set of load balancing criteria to distribute the data message load across a number of resources, the DNS service engine adjusts its load balancing criteria based on the health monitoring statistics that are collected and shared by all the DNS service engines for the set of resources.
  • Health monitoring messages have four configurable properties in some embodiments: (1) a frequency at which the health monitor initiates a resource check, (2) a maximum amount of time before the resource must return a valid response to the health monitor, (3) a number of consecutive health checks that must succeed before marking a down resource as operational again, and (4) a number of consecutive health checks that must fail before marking a function resource as being down.
  • the ping health-monitoring messages are ICMP pings sent from the DNS service engines to the resources. Ping messages in some embodiments do not test the health of the applications executing on backend servers, but rather just measure the responsiveness of the resource to which the ping is directed.
  • the ping health monitor of the DNS service engine is configured to detect an anomaly with the resource only after a certain number (e.g., two or more) of successive ping messages fail to receive a response. This is because it is not uncommon for a response to a ping health-monitoring message to get dropped.
  • the HTTP health-monitoring messages can be configured in four ways: (1) an HTTP request, (2) a specified range in which the resource is expected to return a response code within, (3) response data which is matched against the first 2 KB of data returned from the resource, and (4) a port that should be used for the health check.
  • the HTTP request in some embodiments contains a method, a path, a version, a host, and a carriage return, and each of these components can be configured for the specific HM deployment.
  • the HTTPs health-monitoring messages can be configured in the same four-ways as the HTTP health-monitoring messages. Some embodiments use HTTPs health monitoring messages for their HM deployments when the client machines and backend servers have to establish encrypted HTTPs connections that are load balanced by the DNS service engines and the local load balancing clusters. Some embodiments also use HTTPs health monitoring messages for their HM deployments when the client traffic arrives as HTTP or HTTPs communication, and a cluster of modules in the SDDC terminate the clients connections, establish secure connections to the destination backend servers, and pass along the client data messages along the secure connections.
  • Some embodiments use TCP health monitoring messages when the monitored application is a TCP application.
  • the TCP health monitor wait for a TCP connection to be established. It then sends a request string, and waits for the resource to respond with the expected content. If no client request and resource response are configured, the resource in some embodiments will be marked as one with a successful TCP handshake.
  • the TCP health monitoring message can be configured in four ways in some embodiments: (1) a send string which is sent to the resource immediately after completing the TCP three-way handshake, (2) an expected resource response that is checked to determine whether it is contained within the first 2 KB of data returned by the resource, (3) a specified port for the health check, and (4) a half open option.
  • the TCP health monitoring message in some embodiments also sends a SYN message.
  • the resource is marked up and the DNS service engine responds with an RST.
  • the TCP handshake is never fully completed.
  • the application health is not validated.
  • the purpose of this monitor option is to identify potential applications that do not gracefully handle quick termination. By never completing the handshake, the application is not touched. No application logs are generated or application resources wasted setting up a connection from the health monitor.
  • Some embodiments send UDP health monitoring messages as UDP datagrams to the resources, and then match the responses of the resources against the expected response data.
  • the UDP can be configured in three ways: (1) a send string, (2) an expected resource response that is checked to determine whether it is contained within the first 2 KB of data returned from the resource, and (3) a specified port for the health check.
  • HM deployments use HTTP, HTTPs, TCP and UDP health monitoring messages
  • some embodiments allow a resource to be marked as disabled through a custom resource response in a Maintenance Resource Response option. After a resource has been marked as disabled through this option, health checks in some embodiments will continue, and resources operate the same as if manually disabled, which means existing client flows are allowed to continue, but new flows are sent to other available resources. Once a resource stops responding with the maintenance string, some embodiments bring the resource back online, assuming that there is no other fault with the resource that needs to be resolved.
  • Computer readable storage medium also referred to as computer readable medium.
  • processing unit(s) e.g., one or more processors, cores of processors, or other processing units
  • processing unit(s) e.g., one or more processors, cores of processors, or other processing units
  • Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc.
  • the computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
  • the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor.
  • multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions.
  • multiple software inventions can also be implemented as separate programs.
  • any combination of separate programs that together implement a software invention described here is within the scope of the invention.
  • the software programs when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
  • FIG. 14 conceptually illustrates a computer system 1400 with which some embodiments of the invention are implemented.
  • the computer system 1400 can be used to implement any of the above-described hosts, controllers, gateway and edge forwarding elements. As such, it can be used to execute any of the above described processes.
  • This computer system includes various types of non-transitory machine readable media and interfaces for various other types of machine readable media.
  • Computer system 1400 includes a bus 1405 , processing unit(s) 1410 , a system memory 1425 , a read-only memory 1430 , a permanent storage device 1435 , input devices 1440 , and output devices 1445 .
  • the bus 1405 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the computer system 1400 .
  • the bus 1405 communicatively connects the processing unit(s) 1410 with the read-only memory 1430 , the system memory 1425 , and the permanent storage device 1435 .
  • the processing unit(s) 1410 retrieve instructions to execute and data to process in order to execute the processes of the invention.
  • the processing unit(s) may be a single processor or a multi-core processor in different embodiments.
  • the read-only-memory (ROM) 1430 stores static data and instructions that are needed by the processing unit(s) 1410 and other modules of the computer system.
  • the permanent storage device 1435 is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the computer system 1400 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 1435 .
  • the system memory 1425 is a read-and-write memory device. However, unlike storage device 1435 , the system memory is a volatile read-and-write memory, such as random access memory.
  • the system memory stores some of the instructions and data that the processor needs at runtime.
  • the invention's processes are stored in the system memory 1425 , the permanent storage device 1435 , and/or the read-only memory 1430 . From these various memory units, the processing unit(s) 1410 retrieve instructions to execute and data to process in order to execute the processes of some embodiments.
  • the bus 1405 also connects to the input and output devices 1440 and 1445 .
  • the input devices enable the user to communicate information and select commands to the computer system.
  • the input devices 1440 include alphanumeric keyboards and pointing devices (also called “cursor control devices”).
  • the output devices 1445 display images generated by the computer system.
  • the output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some embodiments include devices such as touchscreens that function as both input and output devices.
  • bus 1405 also couples computer system 1400 to a network 1465 through a network adapter (not shown).
  • the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet), or a network of networks (such as the Internet). Any or all components of computer system 1400 may be used in conjunction with the invention.
  • Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media).
  • computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra-density optical discs, any other optical or magnetic media, and floppy disks.
  • CD-ROM compact discs
  • CD-R recordable compact
  • the computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations.
  • Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
  • ASICs application specific integrated circuits
  • FPGAs field programmable gate arrays
  • integrated circuits execute instructions that are stored on the circuit itself.
  • the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people.
  • the terms “display” or “displaying” mean displaying on an electronic device.
  • the terms “computer readable medium,” “computer readable media,” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral or transitory signals.

Abstract

Some embodiments provide a novel method of performing health monitoring for resources associated with a global server load balancing (GSLB) system. This system is implemented by several domain name system (DNS) servers that perform DNS services for resources located at several geographically separate sites. The method identifies several different groupings of the resources. It then assigns the health monitoring of the different resource groups to different DNS servers. The method then configures each particular DNS server (1) to send health monitoring messages to the particular group of resources assigned to the particular DNS server, (2) to generate data by analyzing responses to the sent health monitoring messages, and (3) to distribute the generated data to the other DNS servers. The method in some embodiments is performed by a set of one or more controllers.

Description

Large-scale clustered environments host numerous servers, sometimes on the order of thousands of servers or more. The servers may be implemented using various virtual devices such as containers, virtual machines, and the like. It may be difficult to monitor the health of the servers and manage traffic among the servers in these environments. For example, the health of a cluster of servers is determined from various factors such as individual server health, application health, and network connectivity. Conventional techniques for monitoring a group of servers and providing a network service typically involve instantiating a service provider (e.g., a monitoring service) on each application server in the cluster of servers. For clustered environments with a large number of nodes, such deployments are computationally expensive and power intensive. Thus, there is a need in the art for effective health monitoring and traffic management for large-scale clustered.
BRIEF SUMMARY
Some embodiments provide a novel method of performing health monitoring for resources associated with a global server load balancing (GSLB) system. This system is implemented by several domain name system (DNS) servers that perform DNS services for resources located at several geographically separate sites. The method identifies several different groupings of the resources. It then assigns the health monitoring of the different resource groups to different DNS servers. The method then configures each particular DNS server (1) to send health monitoring messages to the particular group of resources assigned to the particular DNS server, (2) to generate data by analyzing responses to the sent health monitoring messages, and (3) to distribute the generated data to the other DNS servers. The method in some embodiments is performed by a set of one or more controllers.
In some embodiments, the health monitoring is performed for resources that include load balancers that forward data messages to backend servers. The load balancers include different clusters of load balancers responsible for forwarding data message flows among different sets of backend servers located at different geographical sites. In some embodiments, each load balancer cluster is in the same geographical site as the set of backend servers to which it forwards data messages.
In other embodiments, the monitored resources include backend servers that process and respond to the data message flows. The DNS servers in some embodiments receive DNS requests for at least one application executed by each backend server, and in response to the DNS requests, provide network addresses to access the backend servers. The network addresses in some embodiments include different VIP (virtual Internet Protocol) addresses that direct the data message flows to different clusters of load balancers that distribute the load among the backend servers.
Some of the health-monitoring messages have formats that allow the load balancers to respond, while other health-monitoring messages have formats that require the backend servers to process the messages and respond. For instance, a load balancer responds to a simple ping message, while a backend server needs to respond to an https message directed to a particular operation of an application that is identified by a particular domain name address.
As mentioned above, each DNS server in some embodiments is configured to analyze responses to the health monitoring messages that it sends, to generate data based on this analysis, and to distribute the generated data to the other DNS servers. The generated data is used to identify a first set of resources that have failed, and/or a second set of resources that have poor operational performance (e.g., have operational characteristics that fail to meet desired operational metrics).
In some embodiments, each particular DNS server is configured to identify (e.g., to generate) statistics from responses that each particular resource sends to the health monitoring messages from the particular DNS server. Each time the DNS server generates new statistics for a particular resource, the DNS server in some embodiments aggregates the generated statistics with statistics it previously generated for the particular resource (e.g., by computing a weighted sum) over a duration of time. In some embodiments, each DNS server periodically distributes to the other DNS severs the statistics it identifies for the resources that are assigned to it. The DNS server directly distributes the statistics to the other DNS servers in some embodiments, while it distributes the statistics indirectly through the controller set in other embodiments.
The DNS servers in some embodiments analyze the generated and distributed statistics to assess the health of the monitored resources, and adjust the way they distribute the data message flows when they identify failed or poorly performing resources through their analysis. In some embodiments, the DNS servers are configured similarly to analyze the same set of statistics in the same way to reach the same conclusions. Instead of distributing generated statistics regarding a set of resources, the monitoring DNS server in other embodiments generates health metric data from the generated statistics, and distributes the health metric data to the other DNS servers.
The DNS servers in some embodiments are part of two or more DNS server clusters. In some embodiments, the different DNS clusters are in different datacenters, which can be in different geographical sites (e.g., different neighborhoods, different cities, different states, different countries, etc.). Also, in some embodiments, one or more DNS server clusters are in one or more private datacenters, while one or more other DNS server clusters are in one or more public datacenters.
To send its health monitoring messages, each DNS server has a resource selector and a health monitor in some embodiments. The resource selector of the DNS server specifies the resources to which the DNS server should send health monitoring messages. For instance, in some embodiments, the resource selector has a mapping table that associates different resources with different DNS servers, and consults this table to identify the resources to which the health monitor of its DNS server should send health monitoring messages. The mapping table in some embodiments is a hash lookup table (e.g., a hash wheel) that identifies different DNS servers for different ranges of hash values. The resource selector generates a hash value from the identifier of each resource and uses the generated hash value as an index into the hash lookup table to identify the DNS server for the resource.
The preceding Summary is intended to serve as a brief introduction to some embodiments of the invention. It is not meant to be an introduction or overview of all inventive subject matter disclosed in this document. The Detailed Description that follows and the Drawings that are referred to in the Detailed Description will further describe the embodiments described in the Summary as well as other embodiments. Accordingly, to understand all the embodiments described by this document, a full review of the Summary, the Detailed Description, the Drawings, and the Claims is needed. Moreover, the claimed subject matters are not to be limited by the illustrative details in the Summary, the Detailed Description, and the Drawings.
BRIEF DESCRIPTION OF FIGURES
The novel features of the invention are set forth in the appended claims. However, for purposes of explanation, several embodiments of the invention are set forth in the following figures.
FIG. 1 illustrates a process that implements the method of some embodiments.
FIG. 2 illustrates a GSLB system that uses the process of some embodiments.
FIG. 3 illustrates a more detailed example of a GSLB system that uses the sharding method of some embodiments of the invention.
FIG. 4 illustrates an example of a hash wheel.
FIGS. 5-11 provides additional example of how the controller cluster shards the health monitoring across the DNS service engines.
FIG. 12 illustrates a process that the resource selector of a DNS service engine performs in some embodiments.
FIG. 13 illustrates a process that the health monitor of a DNS service engine performs in some embodiments.
FIG. 14 conceptually illustrates a computer system with which some embodiments of the invention are implemented.
DETAILED DESCRIPTION
In the following detailed description of the invention, numerous details, examples, and embodiments of the invention are set forth and described. However, it will be clear and apparent to one skilled in the art that the invention is not limited to the embodiments set forth and that the invention may be practiced without some of the specific details and examples discussed.
Some embodiments provide a novel sharding method for performing health monitoring of resources associated with a global server load balancing (GSLB) system. The method of some embodiments partitions the responsibility for the monitoring the health of different groups of resources among several domain name system (DNS) servers that perform DNS services for resources located at several geographically separate sites.
FIG. 1 illustrates a process 100 that implements the method of some embodiments. The process 100 will be described by reference to an example of a GSLB system 200 of FIG. 2 . As shown, the GSLB system 200 includes a set of controllers 205, several DNS service engines 210 and several groups 225 of resources 215. The DNS service engines are the DNS servers that perform DNS operations for (e.g., provide network addresses for domain names provided by) machines 220 that need to forward data message flows to the resources 215.
In some embodiments, the controller set 205 performs the process 100. As shown, the process 100 starts by the controller set 205 identifying (at 105) several groupings 225 of the resources 215. The process 100 next assigns (at 110) the health monitoring of the different groups to different DNS service engines. In FIG. 2 , the DNS service engine 210 a is assigned to check the health of the resource group 225 a, the DNS service engine 210 b is assigned to check the health of the resource group 225 b, and the DNS service engine 210 c is assigned to check the health of the resource group 225 c. This association is depicted by one set of dashed lines in FIG. 2 .
The process 100 configures (at 115) each particular DNS service engine (1) to send health monitoring messages to the particular group of resources assigned to the particular DNS service engine, (2) to generate data by analyzing responses of the resources to the health monitoring messages, and (3) to distribute the generated data to the other DNS service engines. FIG. 2 depicts with another set of dashed lines control communication channel between the controller set 205 and the DNS service engines 210. Through this channel, the controller set configures the DNS service engines. The DNS service engines in some embodiments also provide through this channel the data that they generate based on the responses of the resources to the health monitoring messages. After 115, the process 100 ends.
In some embodiments, the resources 215 that are subjects of the health monitoring are the backend servers that process and respond to the data message flows from the machines 220. The DNS service engines 210 in some embodiments receive DNS requests from the machines 220 for at least one application executed by each of the backend servers, and in response to the DNS requests, provide network addresses to access the backend servers.
The network addresses in some embodiments include different VIP (virtual Internet Protocol) addresses that direct the data message flows to different clusters of load balancers that distribute the load among the backend servers. Each load balancer cluster in some embodiments is in the same geographical site as the set of backend servers to which it forwards data messages. In other embodiments, the load balancers are the resources that are subject of the health monitoring. In still other embodiments, the resources that are subject to the health monitoring include both the load balancers and the backend servers.
Different embodiments use different types of health monitoring messages. Several examples of such messages are described below including ping messages, TCP messages, UDP messages, https messages, and http messages. Some of these health-monitoring messages have formats that allow the load balancers to respond, while other health-monitoring messages have formats that require the backend servers to process the messages and respond. For instance, a load balancer responds to a simple ping message, while a backend server needs to respond to an https message directed to a particular function associated with a particular domain address.
As mentioned above, each DNS service engine 210 in some embodiments is configured to analyze responses to the health monitoring messages that it sends, to generate data based on this analysis, and to distribute the generated data to the other DNS service engines. In some embodiments, the generated data is used to identify a first set of resources that have failed, and/or a second set of resources that have poor operational performance (e.g., have operational characteristics that fail to meet desired operational metrics).
In some embodiments, each particular DNS service engine 210 is configured to identify (e.g., to generate) statistics from responses that each particular resource sends to the health monitoring messages from the particular DNS service engine. Each time the DNS service engine 210 generates new statistics for a particular resource, the DNS service engine in some embodiments aggregates the generated statistics with statistics it previously generated for the particular resource (e.g., by computing a weighted sum) over a duration of time. In some embodiments, each DNS service engine 210 periodically distributes to the other DNS severs the statistics it identifies for the resources that are assigned to it. Each DNS service engine 210 directly distributes the statistics that it generates to the other DNS service engines in some embodiments, while it distributes the statistics indirectly through the controller set 205 in other embodiments.
The DNS service engines in some embodiments analyze the generated and distributed statistics to assess the health of the monitored resources, and adjust the way they distribute the data message flows when they identify failed or poorly performing resources through their analysis. In some embodiments, the DNS service engines are configured similarly to analyze the same set of statistics in the same way to reach the same conclusions. Instead of distributing generated statistics regarding a set of resources, the monitoring DNS service engines in other embodiments generate health metric data from the generated statistics, and distribute the health metric data to the other DNS service engines.
FIG. 3 illustrates a more detailed example of a GSLB system 300 that uses the sharding method of some embodiments of the invention. In this example, backend application servers 305 are deployed in four datacenters 302-308, three of which are private datacenters 302-306 and one of which is a public datacenter 308. The datacenters in this example are in different geographical sites (e.g., different neighborhoods, different cities, different states, different countries, etc.).
A cluster of one or more controllers 310 are deployed in each datacenter 302-308. Each datacenter also has a cluster 315 of load balancers 317 to distribute the data message load across the backend application servers 305 in the datacenter. In this example, three datacenters 302, 304 and 308 also have a cluster 320 of DNS service engines 325 to perform DNS operations to process (e.g., to provide network addresses for domain names provided by) for DNS requests submitted by machines 330 inside or outside of the datacenters. In some embodiments, the DNS requests include requests for fully qualified domain name (FQDN) address resolutions.
FIG. 3 illustrates the resolution of an FQDN that refers to a particular application “A” that is executed by the servers of the domain acme.com. As shown, this application is accessed through https and the URL “A.acme.com”. The DNS request for this application is resolved in three steps. First, a public DNS resolver 360 initially receives the DNS request and forwards this request to the private DNS resolver 365 of the enterprise that owns or manages the private datacenters 302-306.
Second, the private DNS resolver 365 selects one of the DNS clusters 320. This selection is random in some embodiments, while in other embodiments it is based on a set of load balancing criteria that distributes the DNS request load across the DNS clusters 320. In the example illustrated in FIG. 3 , the private DNS resolver 365 selects the DNS cluster 320 b of the datacenter 304.
Third, the selected DNS cluster 320 b resolves the domain name to an IP address. In some embodiments, each DNS cluster includes multiple DNS service engines 325, such as DNS service virtual machines (SVMs) that execute on host computers in the cluster's datacenter. When a DNS cluster 320 receives a DNS request, a frontend load balancer (not shown) in some embodiments selects a DNS service engine 325 in the cluster to respond to the DNS request, and forwards the DNS request to the selected DNS service engine. Other embodiments do not use a frontend load balancer, and instead have a DNS service engine serve as a frontend load balancer that selects itself or another DNS service engine in the same cluster for processing the DNS request.
The DNS service engine 325 b that processes the DNS request then uses a set of criteria to select one of the backend server clusters 305 for processing data message flows from the machine 330 that sent the DNS request. The set of criteria for this selection in some embodiments (1) includes the health metrics that are generated from the health monitoring that the DNS service engines perform, or (2) is generated from these health metrics, as further described below. Also, in some embodiments, the set of criteria include load balancing criteria that the DNS service engines use to distribute the data message load on backend servers that execute application “A.”
In the example illustrated in FIG. 3 , the selected backend server cluster is the server cluster 305 c in the private datacenter 306. After selecting this backend server cluster 305 c for the DNS request that it receives, the DNS service engine 325 b of the DNS cluster 320 b returns a response to the requesting machine. As shown, this response includes the VIP address associated with the selected backend server cluster 305. In some embodiments, this VIP address is associated with the local load balancer cluster 315 c that is in the same datacenter 306 as the selected backend server cluster.
After getting the VIP address, the machine 330 sends one or more data message flows to the VIP address for a backend server cluster 305 to process. In this example, the data message flows are received by the local load balancer cluster 315 c. In some embodiments, each load balancer cluster 315 has multiple load balancing engines 317 (e.g., load balancing SVMs) that execute on host computers in the cluster's datacenter.
When the load balancer cluster receives the first data message of the flow, a frontend load balancer (not shown) in some embodiments selects a load balancing service engine 317 in the cluster to select a backend server 305 to receive the data message flow, and forwards the data message to the selected load balancing service engine. Other embodiments do not use a frontend load balancer, and instead have a load balancing service engine in the cluster serve as a frontend load balancer that selects itself or another load balancing service engine in the same cluster for processing the received data message flow.
When a selected load balancing service engine 317 processes the first data message of the flow, this service engine uses a set of load balancing criteria (e.g., a set of weight values) to select one backend server from the cluster of backend servers 305 c in the same datacenter 306. The load balancing service engine then replaces the VIP address with an actual destination IP (DIP) address of the selected backend server, and forwards the data message and subsequent data messages of the same flow to the selected back end server. The selected backend server then processes the data message flow, and when necessary, sends a responsive data message flow to the machine 330. In some embodiments, the responsive data message flow is through the load balancing service engine that selected the backend server for the initial data message flow from the machine 330.
Like the controllers 205, the controllers 310 facilitate the health-monitoring method that the GSLB system 300 performs in some embodiments. The controllers 310 perform the process 100 of FIG. 1 , to define groups of load balancers 317 and/or backend servers 305 to monitor, to assign the different groups to different DNS service engines 325, and to configure these servers and/or clusters to perform the health monitoring.
In some embodiments, the controllers 310 generate and update a hash wheel that associates different DNS service engines 325 with different load balancers 317 and/or backend servers 305 to monitor. FIG. 4 illustrates an example of a hash wheel 400. As shown, this wheel 400 has several different ranges of hash values, with each range associated with one of eight different DNS service engines 405. In some embodiments, the controllers 310 provide each DNS service engine 405 with a copy of this hash wheel, and a hash generator 410 (e.g., a hash function) that generates a hash value from different identifiers of different resources that are to be monitored. For each resource, each DNS service engine 405 in some embodiments (1) uses the hash generator 410 to generate a hash value from the resource's identifier, (2) identifies the hash range that contains the generated hash value, (3) identifies the DNS service engine associated with the identified hash range, and (4) adds the resource to its list of resources to monitor when it is the identified DNS service engine identified by the hash wheel for the resource.
In some embodiments, the controllers 310 assign the different resources (e.g., load balancers 317 and/or backend servers 325) to the different DNS clusters 320, and have each cluster determines how to distribute the health monitoring load among its own DNS service engines. Still other embodiments use other techniques to shard the health monitoring responsibility among the different DNS service engines 325 and clusters 320.
In some embodiments, the controllers 310 also collect health-monitoring data that their respective DNS service engines 325 (e.g., the DNS service engines in the same datacenters as the controllers) generate, and distribute the health-monitoring data to other DNS service engines 325. In some embodiments, a first controller in a first datacenter distributes health-monitoring data to a set of DNS service engines in a second datacenter by providing this data to a second controller in the second datacenter to forward the data to the set of DNS service engines in the second datacenter. Even though FIG. 3 and its accompanying discussion refer to just one controller in each datacenter 302-308, one of ordinary skill will realize that in some embodiments a cluster of two or more controllers are used in each datacenter 302-308.
FIGS. 5-11 provides additional example of how the controller cluster shards (i.e., partitions) the health monitoring across the DNS service engines. FIG. 5 illustrates an example of using two sets of sharding maps to distribute the health monitoring load across for nine distributed applications across four DNS service engines. The nine applications are App1-App9, the first four of which have .com FQDNs, while the last five have .net FQDNs. Each of these applications is executed by two or more backend servers.
As shown, a first shard map 505 associates the .com FQDNs with the first pair of DNS service engines SE1 and SE2, and the .net FQDNs with the second pair of DNS service engines SE3 and SE4. Two second set shard maps 510 a and 510 b then associate each DNS service engine in the two DNS-server pairs to one of the nine applications. Specifically, the shard map 510 a associates the DNS service engine SE1 to monitor App1 and App3, and DNS service engine SE2 to monitor App2 and App4, while the shard map 510 b associates the DNS service engine SE3 to monitor App5, App7 and App9, and DNS service engine SE4 to monitor App6 and App8.
FIG. 6 illustrates an example of partitioning the health monitoring of different load balancers 610 in one or more datacenters across different DNS service engines 605, while FIG. 7 illustrates an example of partitioning the health monitoring of different backend servers 710 in one or more datacenters across different DNS service engines 605. FIG. 8 illustrates an example of partitioning the health monitoring of different combination of load balancers 610 and backend servers 710 across different DNS service engines 605. In these figures, the DNS service engines 605 in some embodiments are in the same datacenters as the load balancers 610 and backend servers 710 that they monitor, while in other embodiments the DNS service engines 605 can monitor the health of load balancers 610 and backend servers 710 in the same datacenter as, or in different datacenters than, the DNS service engines.
FIG. 9 illustrates an example of partitioning the health monitoring of different distributed applications across different DNS service engines 605. This figure illustrates N distributed applications, each of which in this example are executed on three backend servers. Each application is associated with a different FQDN. This figure illustrates N DNS service engines 605 with each of these DNS service engines monitoring the health of all the backend servers that execute one of the N distributed applications.
Each of the DNS service engines acts as a health monitoring (HM) proxy for one distributed application. As the HM proxy for its associated application, the DNS service engine sends health monitoring messages to the backend servers that execute its application, generates health monitoring data from the backend servers' responses to the its health monitoring messages, and then distributes health monitoring data to the other DNS service engines 605 directly or through one or more controllers.
FIG. 10 illustrates another example of DNS service engines operating as HM proxies. In this example, the health monitoring of N distributed applications is partitioned among N different DNS sever clusters 1005, with each cluster having multiple different DNS service engines. In each cluster, the health monitoring of the backend servers that execute that cluster's associated application is distributed among the DNS service engines of that cluster.
Each DNS service engine sends health monitoring messages to the backend servers that execute the application of its cluster, generates health monitoring data from the backend servers' responses to the health monitoring messages, and then distributes health monitoring data to the other DNS service engines 1005 of its cluster and other clusters directly or through one or more controllers. In some embodiments, each cluster has one DNS service engine or controller aggregate the health monitoring data of the DNS service engines of that cluster, and then forward the aggregated health monitoring data to the other DNS service engines 605 of its cluster and other clusters.
In FIG. 10 , one DNS cluster monitors the backend servers of one distributed application. In other examples, one DNS cluster can monitor the backend servers of two or more distributed applications. Also, as shown in FIG. 11 , different DNS clusters 1105 in some embodiments are responsible for performing health monitoring for different sets 1110 of arbitrary resources, such as load balancers and/or backend servers. For instance, in some embodiments, one or more DNS clusters are responsible for monitoring the health of one or more sets of load balancers, while one or more other DNS clusters are responsible for monitoring the health of one or more sets of backend servers. In some embodiments, each DNS cluster 1105 monitors the health of the load balancers and/or backend servers in its own datacenter.
As mentioned above, each DNS service engine in some embodiments has a resource selector and a health monitor that facilitate its health monitoring operation. The resource selector of the DNS service engine specifies the resources to which the DNS service engine should send health monitoring messages, while its health monitor sends the health monitoring messages to the resources identified by the resource selector.
FIG. 12 illustrates a process 1200 that the resource selector of a DNS service engine performs in some embodiments. The resource selector performs this process each time that it receives, from a controller, a new or updated list of resources, and/or a new hash lookup table that maps resources to DNS service engines. As shown, the process 1200 selects (at 1205) an identifier (e.g., UUID, universal unique identifier) of a resource for which the process 1200 has to identify a DNS service engine that will monitor the resource's health. In some embodiments, the selected resource might be one that the resource selector examined in prior iterations of the process 1200, but has to examine again as it has received a new hash lookup table.
Next, at 1210, the process 1200 uses a hash function to generate a hash value for the identifier selected at 1205. In some embodiments, the controller cluster configures the DNS service engines to use the same hash function for all the resources to monitor, or for all resources of a certain type or certain locale. After generating the hash value, the process 1200 uses (at 1215) the generated value as an index into the hash table that associates different DNS service engines with different ranges of hash values. In other words, the process (at 1215) identifies the lookup table hash range that contains the generated hash value, and identifies the DNS service engine specified for this hash range. As described above by reference to FIG. 4 , the hash table in some embodiments is a hash wheel.
At 1220, the process 1200 adds the resource identified at 1205 to a list of resource to monitor for the health monitor of its associated DNS service engine, when the DNS service engine identified at 1215 is the process' associated DNS service engine. In other words, the DNS service engine's resource selector directs its server's health monitor to monitor a resource identified at 1205, when the hash of this resource's identifier falls into a hash range of the lookup table that is identified with the resource selector's DNS service engine.
After 1225, the process determines whether it has examined all the resources that are on a list of resources for it to examine to identify their health monitoring DNS service engine. In some embodiments, the list of resources to examine just includes newly added resources, while including all the resources in other cases when the hash lookup table is updated. When the process has examined all the resources, it ends. Otherwise, it returns to 1205 to select an identifier of another resource to examine.
FIG. 13 illustrates a process 1300 that the health monitor of a DNS service engine performs in some embodiments. The health monitor in some embodiments performs this process continuously for the set of resources that the DNS service engine has been assigned to monitor. As shown, the process 1300 sends (at 1305) health monitoring messages to resources identified on the list of resources that the DNS service engine has to monitor. In some embodiments, this list is compiled by the process 1200 of the resource selector of the DNS service engine, as mentioned above. Examples of health monitoring messages will be further described below.
At 1310, the process 1300 receives responses to the health monitoring messages, or times out without receiving responses to these messages from one or more resources. Based on responses to health monitoring messages, the process 1300 generates (at 1315) statistics in some embodiments. For instance, in some embodiments, the process 1300 maintains (at 1315) an average response time for a resource to respond to health monitoring messages.
In these embodiments, each time the health monitor of the DNS service engine receives a HM response to an HM message from a resource, it identifies the time duration between sending the message and receiving the response, and blends this identified response time duration with a running response-time average that the health monitor maintains for the resource. For a particular resource, the health monitor computes the blended response time by computing a weighted sum of the response time measurements that it collects and stores over a duration of time in some embodiments. In other embodiments, for a resource, the health monitor simply computes the weighted sum of the response time that it identified for the resource at 1310 with the blended average that it previously computed and stored for the resource.
Next, at 1320, the process determines whether it has reached the time for sending another round of health monitoring messages to the resources on its list of resources to monitor. If so, it transitions to 1305 to repeat its operations. Otherwise, at 1325, the process determines whether it has reached the time to report the statistics that it has generated for its monitored set of resources. If not, it returns to 1320.
As mentioned above, each DNS service engine in some embodiments periodically distributes to the other DNS service engines the statistics it identifies for the resources that are assigned to it for health monitoring. Hence, when the process determines (at 1325) that it has reached the time to report the statistics, the process sends the health monitoring statistics that it has generated since its last reporting to the local controller or controller cluster in the same datacenter as its DNS service engine. The local controller or controller cluster then distributes these statistics (1) to other DNS service engines in the same datacenter as the local controller or controller cluster, and (2) to other controllers in other datacenters to forward to other DNS service engines in their respective datacenters. In other embodiments, the process 1300 directly distributes its statistics to the other DNS service engines in its DNS cluster, and/or other DNS clusters.
The DNS service engines in some embodiments analyze the generated and distributed statistics to assess the health of the monitored resources, and adjust the way they distribute the data message flows when they identify failed or poorly performing resources through their analysis. In some embodiments, the DNS service engines are configured similarly to analyze the same set of statistics in the same way to reach the same conclusions.
Instead of distributing generated statistics regarding a set of resources, the monitoring DNS service engine in other embodiments generates health metric data from the generated statistics, and distributes the health metric data to the other DNS service engines directly or indirectly through the controllers. Each DNS service engine analyzes the health metric data that it generates and that it receives from other DNS service engines, and based on this analysis, adjusts the way it distributes the data message flows when it identifies failed or poorly performing resources through its analysis.
In some embodiments, a DNS service engine adjusts its data message flow distribution by foregoing sending of data message flows to failed resources, and by reducing or eliminating the sending of data message flows to poorly performing resources (i.e., resource with poor health monitoring statistics). For instance, in the embodiments in which a DNS service engine uses a set of load balancing criteria to distribute the data message load across a number of resources, the DNS service engine adjusts its load balancing criteria based on the health monitoring statistics that are collected and shared by all the DNS service engines for the set of resources.
As mentioned above, different embodiments use different types of health monitoring messages, such as HTTP messages, HTTPs messages, ping messages, TCP messages, and UDP messages. Health monitoring messages have four configurable properties in some embodiments: (1) a frequency at which the health monitor initiates a resource check, (2) a maximum amount of time before the resource must return a valid response to the health monitor, (3) a number of consecutive health checks that must succeed before marking a down resource as operational again, and (4) a number of consecutive health checks that must fail before marking a function resource as being down.
Some embodiments use simple ping messages for health monitoring. In some embodiments, the ping health-monitoring messages are ICMP pings sent from the DNS service engines to the resources. Ping messages in some embodiments do not test the health of the applications executing on backend servers, but rather just measure the responsiveness of the resource to which the ping is directed. In some embodiments, the ping health monitor of the DNS service engine is configured to detect an anomaly with the resource only after a certain number (e.g., two or more) of successive ping messages fail to receive a response. This is because it is not uncommon for a response to a ping health-monitoring message to get dropped.
In some embodiments, the HTTP health-monitoring messages can be configured in four ways: (1) an HTTP request, (2) a specified range in which the resource is expected to return a response code within, (3) response data which is matched against the first 2 KB of data returned from the resource, and (4) a port that should be used for the health check. The HTTP request in some embodiments contains a method, a path, a version, a host, and a carriage return, and each of these components can be configured for the specific HM deployment.
In some embodiments, the HTTPs health-monitoring messages can be configured in the same four-ways as the HTTP health-monitoring messages. Some embodiments use HTTPs health monitoring messages for their HM deployments when the client machines and backend servers have to establish encrypted HTTPs connections that are load balanced by the DNS service engines and the local load balancing clusters. Some embodiments also use HTTPs health monitoring messages for their HM deployments when the client traffic arrives as HTTP or HTTPs communication, and a cluster of modules in the SDDC terminate the clients connections, establish secure connections to the destination backend servers, and pass along the client data messages along the secure connections.
Some embodiments use TCP health monitoring messages when the monitored application is a TCP application. The TCP health monitor wait for a TCP connection to be established. It then sends a request string, and waits for the resource to respond with the expected content. If no client request and resource response are configured, the resource in some embodiments will be marked as one with a successful TCP handshake.
The TCP health monitoring message can be configured in four ways in some embodiments: (1) a send string which is sent to the resource immediately after completing the TCP three-way handshake, (2) an expected resource response that is checked to determine whether it is contained within the first 2 KB of data returned by the resource, (3) a specified port for the health check, and (4) a half open option. When the half open option is used, the TCP health monitoring message in some embodiments also sends a SYN message. Upon receipt of an ACK message, the resource is marked up and the DNS service engine responds with an RST. In some embodiments, the TCP handshake is never fully completed. Hence, in these embodiments, the application health is not validated. The purpose of this monitor option is to identify potential applications that do not gracefully handle quick termination. By never completing the handshake, the application is not touched. No application logs are generated or application resources wasted setting up a connection from the health monitor.
Some embodiments send UDP health monitoring messages as UDP datagrams to the resources, and then match the responses of the resources against the expected response data. The UDP can be configured in three ways: (1) a send string, (2) an expected resource response that is checked to determine whether it is contained within the first 2 KB of data returned from the resource, and (3) a specified port for the health check.
When the HM deployments use HTTP, HTTPs, TCP and UDP health monitoring messages, some embodiments allow a resource to be marked as disabled through a custom resource response in a Maintenance Resource Response option. After a resource has been marked as disabled through this option, health checks in some embodiments will continue, and resources operate the same as if manually disabled, which means existing client flows are allowed to continue, but new flows are sent to other available resources. Once a resource stops responding with the maintenance string, some embodiments bring the resource back online, assuming that there is no other fault with the resource that needs to be resolved.
Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here is within the scope of the invention. In some embodiments, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
FIG. 14 conceptually illustrates a computer system 1400 with which some embodiments of the invention are implemented. The computer system 1400 can be used to implement any of the above-described hosts, controllers, gateway and edge forwarding elements. As such, it can be used to execute any of the above described processes. This computer system includes various types of non-transitory machine readable media and interfaces for various other types of machine readable media. Computer system 1400 includes a bus 1405, processing unit(s) 1410, a system memory 1425, a read-only memory 1430, a permanent storage device 1435, input devices 1440, and output devices 1445.
The bus 1405 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the computer system 1400. For instance, the bus 1405 communicatively connects the processing unit(s) 1410 with the read-only memory 1430, the system memory 1425, and the permanent storage device 1435.
From these various memory units, the processing unit(s) 1410 retrieve instructions to execute and data to process in order to execute the processes of the invention. The processing unit(s) may be a single processor or a multi-core processor in different embodiments. The read-only-memory (ROM) 1430 stores static data and instructions that are needed by the processing unit(s) 1410 and other modules of the computer system. The permanent storage device 1435, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the computer system 1400 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 1435.
Other embodiments use a removable storage device (such as a floppy disk, flash drive, etc.) as the permanent storage device. Like the permanent storage device 1435, the system memory 1425 is a read-and-write memory device. However, unlike storage device 1435, the system memory is a volatile read-and-write memory, such as random access memory. The system memory stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention's processes are stored in the system memory 1425, the permanent storage device 1435, and/or the read-only memory 1430. From these various memory units, the processing unit(s) 1410 retrieve instructions to execute and data to process in order to execute the processes of some embodiments.
The bus 1405 also connects to the input and output devices 1440 and 1445. The input devices enable the user to communicate information and select commands to the computer system. The input devices 1440 include alphanumeric keyboards and pointing devices (also called “cursor control devices”). The output devices 1445 display images generated by the computer system. The output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some embodiments include devices such as touchscreens that function as both input and output devices.
Finally, as shown in FIG. 14 , bus 1405 also couples computer system 1400 to a network 1465 through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet), or a network of networks (such as the Internet). Any or all components of computer system 1400 may be used in conjunction with the invention.
Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra-density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself.
As used in this specification, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms “display” or “displaying” mean displaying on an electronic device. As used in this specification, the terms “computer readable medium,” “computer readable media,” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral or transitory signals.
While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.

Claims (19)

What is claimed is:
1. For global server load balancing (GSLB) that is performed by a plurality of domain name system (DNS) servers to perform DNS services for a plurality of resources located at a plurality of geographically separate sites, a method for collecting health monitoring data, the method comprising:
partitioning the plurality of resources that are located at a plurality of different geographic sites into a plurality of sets of resources;
assigning each particular set of resources to a different particular DNS server, said assigning comprising assigning a first subset of resources at a first geographic site and a second subset of resources at a second geographic site to a first DNS server that operates at the first geographic site; and
configuring each particular DNS server (i) to send health monitoring messages to the particular set of resources assigned to the particular DNS server, (ii) to generate data by analyzing responses to the sent health monitoring messages, and (iii) to distribute the generated data to the other DNS servers, said configuring comprising configuring the first DNS server to send health monitoring messages to the first subset of resources in the first geographic site and the second subset of resources in the second geographic site.
2. The method of claim 1, wherein the data generated by analyzing responses to the health monitoring messages is used to identify a set of resources that have operational characteristics that fail to meet desired operational metrics.
3. The method of claim 1, wherein configuring each particular DNS server comprises configuring each particular DNS server to:
identify statistics from responses that each particular resource sends to the health monitoring messages from the particular DNS server; and
average, for each particular resource, the statistics collected over a duration of time.
4. The method of claim 1, wherein configuring each particular DNS server comprises configuring each particular DNS server to:
from responses that each particular resource sends to the health monitoring messages from the particular DNS server, generate statistics relating to operational characteristics of the particular DNS server's particular set of resources; and
forward the generated statistics to a set of one or more controllers to distribute to the other DNS servers.
5. The method of claim 1, wherein configuring each particular DNS server comprises configuring each particular DNS server to:
from responses that each particular resource sends to the health monitoring messages from the particular DNS server, generate statistics relating to operational characteristics of the particular DNS server's particular set of resources; and
forwarding forward the generated statistics to the other DNS servers.
6. The method of claim 1, wherein the different first and second DNS servers comprises at least two different DNS servers that are part of two different DNS clusters at two different data centers.
7. The method of claim 6, wherein a first DNS cluster is in a private datacenter, while a second DNS cluster is in a public datacenter.
8. The method of claim 1, wherein the plurality of resources are different sets of backend servers that execute different distributed applications.
9. The method of claim 1, wherein the DNS server at the first geographic site is assigned the first and second subsets of resources at the first and second geographic sites respectively as part of a sharding operation that assigns health monitoring checking of the plurality of resources amongst the plurality of DNS servers at the plurality of geographic sites.
10. For global server load balancing (GSLB) that is performed by a plurality of domain name system (DNS) servers to perform DNS services for a plurality of resources located at a plurality of geographically separate sites, said plurality of resources comprising a plurality of different types of resources, a method for collecting health monitoring data, the method comprising:
partitioning the plurality of resources that are located at a plurality of different geographic sites into a plurality of sets of resources based on the resource types such that different sets of resources comprise different types of resources;
generating a plurality of mapping records that assign each particular set of resources that is associated with a particular type of resource to a different particular set of one or more DNS servers, wherein said assigning comprises assigning to a first DNS server at a first geographic site first and second subset of resources that comprise resources of a first type and that are respectively in the first geographic site and a different, second geographic site; and
distributing the plurality of mapping records to each particular DNS server to use (i) to send health monitoring messages to the particular set of resources assigned to the particular DNS server, (ii) to generate data by analyzing responses to the sent health monitoring messages, and (iii) to distribute the generated data to the other DNS servers, wherein the distributed mapping records comprise at least one mapping record to configure the first DNS server to send health monitoring messages to the first subset of resources in the first geographic site and the second subset of resources in the second geographic site.
11. The method of claim 10, wherein the plurality of resources comprises a plurality of load balancers that forward data messages to backend servers.
12. The method of claim 10, wherein the plurality of resources comprises different sets of load balancers that forward data messages to different sets of backend servers located at different geographic sites.
13. The method of claim 12, wherein each set of load balancers is at the same geographic site as the set of backend servers to which it forwards the data messages.
14. The method of claim 10, wherein the plurality of resources comprises a plurality of backend servers that process and respond to data message flows.
15. The method of claim 14, wherein the DNS servers receive DNS requests for at least one application executed by each of the backend servers and in response to the DNS requests, provide network addresses to access the backend servers.
16. The method of claim 15, wherein the network addresses comprise virtual IP (Internet Protocol) addresses that direct the data message flows to a plurality of load balancers that distribute the load among the backend servers.
17. The method of claim 10, wherein the health monitoring messages comprise one of ping messages, TCP messages, UDP messages, https messages, and http messages.
18. The method of claim 10, wherein the data generated by analyzing responses to the health monitoring messages is used to identify a set of resources that have failed.
19. A non-transitory machine readable medium storing a program for execution by a set of processing units, the program for configuring a plurality of domain name system (DNS) servers that perform DNS services for a plurality of resources located at a plurality of geographically separate sites to collect health monitoring data for global server load balancing (GSLB), said plurality of resources comprising a plurality of different types of resources, the program comprising sets of instructions for:
partitioning the plurality of resources that are located at a plurality of different geographic sites into a plurality of sets of resources based on the resource types such that different sets of resources comprise different types of resources;
generating a plurality of mapping records that assign each particular set of resources that is associated with a particular type of resource to a different particular set of one or more DNS servers, wherein said assigning comprises assigning to a first DNS server at a first geographic site first and second subset of resources that comprise resources of a first type and that are respectively in the first geographic site and a different, second geographic site; and
distributing the plurality of mapping records to each particular DNS server to use (i) to send health monitoring messages to the particular set of resources assigned to the particular DNS server, (ii) to generate data by analyzing responses to the sent health monitoring messages, and (iii) to distribute the generated data to the other DNS servers, wherein the distributed mapping records comprise at least one mapping record to configure the first DNS server to send health monitoring messages to the first subset of resources in the first geographic site and the second subset of resources in the second geographic site.
US16/746,785 2019-05-30 2020-01-17 Partitioning health monitoring in a global server load balancing system Active US11582120B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/746,785 US11582120B2 (en) 2019-05-30 2020-01-17 Partitioning health monitoring in a global server load balancing system
US18/102,696 US11909612B2 (en) 2019-05-30 2023-01-28 Partitioning health monitoring in a global server load balancing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962854792P 2019-05-30 2019-05-30
US16/746,785 US11582120B2 (en) 2019-05-30 2020-01-17 Partitioning health monitoring in a global server load balancing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/102,696 Continuation US11909612B2 (en) 2019-05-30 2023-01-28 Partitioning health monitoring in a global server load balancing system

Publications (2)

Publication Number Publication Date
US20200382584A1 US20200382584A1 (en) 2020-12-03
US11582120B2 true US11582120B2 (en) 2023-02-14

Family

ID=73550419

Family Applications (3)

Application Number Title Priority Date Filing Date
US16/746,785 Active US11582120B2 (en) 2019-05-30 2020-01-17 Partitioning health monitoring in a global server load balancing system
US16/746,790 Active 2040-02-27 US11290358B2 (en) 2019-05-30 2020-01-17 Partitioning health monitoring in a global server load balancing system
US18/102,696 Active US11909612B2 (en) 2019-05-30 2023-01-28 Partitioning health monitoring in a global server load balancing system

Family Applications After (2)

Application Number Title Priority Date Filing Date
US16/746,790 Active 2040-02-27 US11290358B2 (en) 2019-05-30 2020-01-17 Partitioning health monitoring in a global server load balancing system
US18/102,696 Active US11909612B2 (en) 2019-05-30 2023-01-28 Partitioning health monitoring in a global server load balancing system

Country Status (1)

Country Link
US (3) US11582120B2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11736372B2 (en) 2018-10-26 2023-08-22 Vmware, Inc. Collecting samples hierarchically in a datacenter
US11792155B2 (en) 2021-06-14 2023-10-17 Vmware, Inc. Method and apparatus for enhanced client persistence in multi-site GSLB deployments
US11811861B2 (en) 2021-05-17 2023-11-07 Vmware, Inc. Dynamically updating load balancing criteria
US11909612B2 (en) 2019-05-30 2024-02-20 VMware LLC Partitioning health monitoring in a global server load balancing system

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10594562B1 (en) 2015-08-25 2020-03-17 Vmware, Inc. Intelligent autoscale of services
US11314417B2 (en) * 2020-09-23 2022-04-26 Pensando Systems, Inc. Methods and systems for NVMe target load balancing based on real time metrics
US20220182439A1 (en) * 2020-12-04 2022-06-09 Vmware, Inc. General grouping mechanism for endpoints
CN113037560B (en) * 2021-03-18 2022-09-30 同盾科技有限公司 Service flow switching method and device, storage medium and electronic equipment
US11652782B1 (en) * 2021-11-24 2023-05-16 Oracle International Corporation Methods, systems, and computer readable media for dynamically updating domain name system (DNS) records from registered network function (NF) profile information
US11863518B2 (en) 2021-11-24 2024-01-02 Oracle International Corporation Methods, systems, and computer readable media for automatic domain name system (DNS) configuration for 5G core (5GC) network functions (NFs) using NF repository function (NRF)
US20240022538A1 (en) * 2022-07-14 2024-01-18 Vmware, Inc. Two tier dns
US20240022628A1 (en) * 2022-07-15 2024-01-18 Goldman Sachs & Co. LLC Scalable processing of domain name system queries for a global server load balancing service

Citations (199)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109486A (en) 1989-01-06 1992-04-28 Motorola, Inc. Distributed computer system with network and resource status monitoring
US5781703A (en) 1996-09-06 1998-07-14 Candle Distributed Solutions, Inc. Intelligent remote agent for computer performance monitoring
US6148335A (en) 1997-11-25 2000-11-14 International Business Machines Corporation Performance/capacity management framework over many servers
US20020078150A1 (en) 2000-12-18 2002-06-20 Nortel Networks Limited And Bell Canada Method of team member profile selection within a virtual team environment
US6449739B1 (en) 1999-09-01 2002-09-10 Mercury Interactive Corporation Post-deployment monitoring of server performance
US20020198984A1 (en) 2001-05-09 2002-12-26 Guy Goldstein Transaction breakdown feature to facilitate analysis of end user performance of a server system
US20020198985A1 (en) 2001-05-09 2002-12-26 Noam Fraenkel Post-deployment monitoring and analysis of server performance
US6515968B1 (en) 1995-03-17 2003-02-04 Worldcom, Inc. Integrated interface for real time web based viewing of telecommunications network call traffic
US20030191837A1 (en) 2002-04-03 2003-10-09 Chen John Bradley Global network monitoring system
US20030236877A1 (en) 2002-06-20 2003-12-25 International Business Machines Corporation Method and system for transaction pipeline decomposition
US20040054680A1 (en) 2002-06-13 2004-03-18 Netscout Systems, Inc. Real-time network performance monitoring system and related methods
US6714979B1 (en) 1997-09-26 2004-03-30 Worldcom, Inc. Data warehousing infrastructure for web based reporting tool
US20040064552A1 (en) 2002-06-25 2004-04-01 Chong James C. Method and system for monitoring performance of applications in a distributed environment
US20040103186A1 (en) 2002-11-21 2004-05-27 Fabio Casati Platform and method for monitoring and analyzing data
US6792460B2 (en) 2002-10-02 2004-09-14 Mercury Interactive Corporation System and methods for monitoring application server performance
US6792458B1 (en) 1999-10-04 2004-09-14 Urchin Software Corporation System and method for monitoring and analyzing internet traffic
US20040243607A1 (en) 1999-04-16 2004-12-02 Tummalapalli Venkat Ranga Reddy Multidimensional repositories for problem discovery and capacity planning of database applications
US20050010578A1 (en) 2003-07-11 2005-01-13 Rutvik Doshi Performance monitoring of method calls and database statements in an application server
US20050060574A1 (en) 2003-09-13 2005-03-17 Finisar Corporation Network analysis graphical user interface
US20050108444A1 (en) 2003-11-19 2005-05-19 Flauaus Gary R. Method of detecting and monitoring fabric congestion
US6901051B1 (en) 1999-11-15 2005-05-31 Fujitsu Limited Server-based network performance metrics generation system and method
US20050120160A1 (en) 2003-08-20 2005-06-02 Jerry Plouffe System and method for managing virtual servers
US20050172018A1 (en) 1997-09-26 2005-08-04 Devine Carol Y. Integrated customer interface system for communications network management
US20050188221A1 (en) 2004-02-24 2005-08-25 Covelight Systems, Inc. Methods, systems and computer program products for monitoring a server application
US6976090B2 (en) 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet
US6996778B2 (en) 2000-12-11 2006-02-07 Microsoft Corporation User interface for managing multiple network resources
US7076695B2 (en) 2001-07-20 2006-07-11 Opnet Technologies, Inc. System and methods for adaptive threshold determination for performance metrics
US20060167939A1 (en) 2005-01-21 2006-07-27 Seidman David I Monitoring clustered software applications
US20060242282A1 (en) 2005-04-20 2006-10-26 Netqos, Inc. Method and system for visualizing network performace characteristics
US7130812B1 (en) 2003-11-26 2006-10-31 Centergistic Solutions, Inc. Method and system for managing real time data
US20060271677A1 (en) 2005-05-24 2006-11-30 Mercier Christina W Policy based data path management, asset management, and monitoring
US7246159B2 (en) 2002-11-01 2007-07-17 Fidelia Technology, Inc Distributed data gathering and storage for use in a fault and performance monitoring system
US20070226554A1 (en) 2006-02-13 2007-09-27 Sun Microsystems, Inc. High-efficiency time-series archival system for telemetry signals
US7353272B2 (en) 1999-06-23 2008-04-01 Savvis Communications Corporation Method and system for internet performance monitoring and analysis including user interface and periodic information measurement and collection
US20080104230A1 (en) 2004-10-20 2008-05-01 Antonio Nasuto Method And System For Monitoring Performance Of A Client-Server Architecture
US20080126534A1 (en) 2006-11-28 2008-05-29 Wolfgang Mueller Method and system to monitor parameters of a data flow path in a communication system
US7430610B2 (en) 2000-09-01 2008-09-30 Opyo, Inc. System and method for adjusting the distribution of an asset over a multi-tiered network
US20090049524A1 (en) 2007-08-16 2009-02-19 International Business Machines Corporation System and method for partitioning a multi-level security namespace
US20090154366A1 (en) 2007-12-13 2009-06-18 Telefonaktiebolaget Lm Ericsson (Publ) Exchange of processing metric information between nodes
US20090199196A1 (en) 2008-02-01 2009-08-06 Zahur Peracha Automatic baselining of resource consumption for transactions
US7636708B2 (en) 2000-11-10 2009-12-22 Microsoft Corporation Distributed data gathering and aggregation agent
US7701852B1 (en) 2004-08-26 2010-04-20 Sprint Communications Company L.P. Method for analyzing performance of a network through measuring and reporting delay in routing devices
US20100279622A1 (en) 2009-05-04 2010-11-04 Qual Comm Incorporated System and method for real-time performance and load statistics of a communications system
US20100287171A1 (en) 2009-05-11 2010-11-11 Red Hat, Inc. Federated Indexing from Hashed Primary Key Slices
US20100293296A1 (en) * 2000-09-26 2010-11-18 Foundry Networks, Inc. Global server load balancing
US20110126111A1 (en) 2009-11-20 2011-05-26 Jasvir Singh Gill Method And Apparatus For Risk Visualization and Remediation
US7990847B1 (en) 2005-04-15 2011-08-02 Cisco Technology, Inc. Method and system for managing servers in a server cluster
US20110196890A1 (en) 2010-02-08 2011-08-11 Navteq North America, Llc Virtual table generator for analyzing geographic databases
US8032896B1 (en) 2005-11-01 2011-10-04 Netapp, Inc. System and method for histogram based chatter suppression
US8112471B2 (en) 2009-12-07 2012-02-07 Yottaa, Inc System and method for website performance optimization and internet traffic processing
US8131712B1 (en) * 2007-10-15 2012-03-06 Google Inc. Regional indexes
US20120101800A1 (en) 2010-10-20 2012-04-26 Microsoft Corporation Model checking for distributed application validation
US20120110185A1 (en) 2010-10-29 2012-05-03 Cisco Technology, Inc. Distributed Hierarchical Rendering and Provisioning of Cloud Services
US20120131591A1 (en) 2010-08-24 2012-05-24 Jay Moorthi Method and apparatus for clearing cloud compute demand
US20120254443A1 (en) 2011-03-30 2012-10-04 International Business Machines Corporation Information processing system, information processing apparatus, method of scaling, program, and recording medium
US20120254444A1 (en) 2011-04-01 2012-10-04 Carnegie Mellon University Dynamic capacity management of multiple parallel-connected computing resources
US20120291099A1 (en) 2011-05-09 2012-11-15 Cleversafe, Inc. Providing dispersed storage network location information of a hypertext markup language file
US20130013953A1 (en) 2011-07-07 2013-01-10 Microsoft Corporation Health monitoring of applications in a guest partition
US8412493B2 (en) 2008-12-22 2013-04-02 International Business Machines Corporation Multi-dimensional model generation for determining service performance
US20130086273A1 (en) 2011-10-04 2013-04-04 Tier3, Inc. Predictive two-dimensional autoscaling
US20130086230A1 (en) 2011-10-01 2013-04-04 Oracle International Corporation Transparent configuration of virtual hosts supporting multiple time zones in an enterprise platform
US20130179894A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Platform as a service job scheduling
US20130179881A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Decoupling paas resources, jobs, and scheduling
US20130179895A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Paas hierarchial scheduling and auto-scaling
US20130179289A1 (en) 2012-01-09 2013-07-11 Microsoft Corportaion Pricing of resources in virtual machine pools
US8499066B1 (en) 2010-11-19 2013-07-30 Amazon Technologies, Inc. Predicting long-term computing resource usage
US20130212257A1 (en) 2012-02-14 2013-08-15 Hitachi, Ltd. Computer program and monitoring apparatus
US20130211559A1 (en) 2012-02-09 2013-08-15 Rockwell Automation Technologies, Inc. Cloud-based operator interface for industrial automation
US20130290538A1 (en) 2012-04-27 2013-10-31 Daniel Juergen Gmach Evaluation of cloud computing services
US8588069B2 (en) 2003-08-29 2013-11-19 Ineoquest Technologies, Inc. System and method for analyzing the performance of multiple transportation streams of streaming media in packet-based networks
US20130346594A1 (en) 2012-06-25 2013-12-26 International Business Machines Corporation Predictive Alert Threshold Determination Tool
US20130343213A1 (en) 2012-06-22 2013-12-26 BlueStripe Software, Inc. Methods and Computer Program Products for Correlation Analysis of Network Traffic in a Network Device
US20140006862A1 (en) 2012-06-28 2014-01-02 Microsoft Corporation Middlebox reliability
US20140059179A1 (en) 2012-08-23 2014-02-27 Adobe Systems Incorporated Auto-scaling management of web content
US20140143406A1 (en) 2012-11-20 2014-05-22 Bank Of America Corporation Dynamically Scalable Real-Time System Monitoring
US20140173675A1 (en) 2012-12-14 2014-06-19 Biscotti Inc. Distributed Infrastructure
US20140215058A1 (en) 2013-01-26 2014-07-31 Lyatiss, Inc. Methods and systems for estimating and analyzing flow activity and path performance data in cloud or distributed systems
US20140215621A1 (en) 2013-01-25 2014-07-31 REMTCS Inc. System, method, and apparatus for providing network security
US20140229706A1 (en) 2013-02-14 2014-08-14 International Business Machines Corporation Dynamic thread status retrieval using inter-thread communication
US20140280886A1 (en) 2013-03-15 2014-09-18 Comcast Cable Communications, Llc Consolidated performance metric analysis
US20140282160A1 (en) 2013-03-12 2014-09-18 Business Objects Software Ltd. Binning visual definition for visual intelligence
US8856797B1 (en) 2011-10-05 2014-10-07 Amazon Technologies, Inc. Reactive auto-scaling of capacity
US20140304414A1 (en) 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods for dynamically expanding load balancing pool
US8874725B1 (en) 2006-11-15 2014-10-28 Conviva Inc. Monitoring the performance of a content player
US20140344439A1 (en) 2013-05-15 2014-11-20 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for providing network services orchestration
US20140351226A1 (en) 2013-05-22 2014-11-27 International Business Machines Corporation Distributed Feature Collection and Correlation Engine
US20150058265A1 (en) 2013-08-23 2015-02-26 Vmware, Inc. Automated scaling of multi-tier applications using reinforced learning
US8977728B1 (en) 2014-05-16 2015-03-10 Iboss, Inc. Maintaining IP tables
US20150074679A1 (en) 2013-09-11 2015-03-12 Cisco Technology Inc. Dynamic Scaling for Multi-Tiered Distributed Computing Systems
US20150081880A1 (en) 2013-09-17 2015-03-19 Stackdriver, Inc. System and method of monitoring and measuring performance relative to expected performance characteristics for applications and software architecture hosted by an iaas provider
US20150106523A1 (en) 2013-10-15 2015-04-16 Vmware, Inc. Distributed global load-balancing system for software-defined data centers
US20150124640A1 (en) 2013-11-05 2015-05-07 Cisco Technology, Inc. Hardware percentile latency measurement
US9032078B2 (en) 2013-01-02 2015-05-12 International Business Machines Corporation Predictive scaling for clusters
US20150134831A1 (en) 2013-11-13 2015-05-14 Fujitsu Limited Management method and apparatus
US9047648B1 (en) 2006-03-30 2015-06-02 At&T Mobility Ii Llc Measurement, collection, reporting and processing of health condition data
US9071537B2 (en) 2012-06-15 2015-06-30 Citrix Systems, Inc. Systems and methods for propagating health of a cluster node
US9083710B1 (en) 2012-01-03 2015-07-14 Google Inc. Server load balancing using minimally disruptive hash tables
US20150199219A1 (en) 2014-01-10 2015-07-16 Samsung Electronics Co., Ltd. Method and apparatus for server cluster management
US20150212829A1 (en) 2014-01-30 2015-07-30 International Business Machines Corporation Automatic systems configuration
US20150278061A1 (en) 2014-03-31 2015-10-01 Microsoft Corporation Predictive load scaling for services
US20150288682A1 (en) 2014-04-05 2015-10-08 Wearable Intelligence, Inc. Systems and methods for digital workflow and communication
US20150295796A1 (en) 2014-04-15 2015-10-15 Splunk Inc. Adjusting network data storage based on event stream statistics
US20150295780A1 (en) 2014-04-15 2015-10-15 Splunk Inc. Grouping and managing event streams generated from captured network data
US20150293954A1 (en) 2014-04-15 2015-10-15 Splunk Inc. Grouping and managing event streams generated from captured network data
US9210056B1 (en) 2014-10-09 2015-12-08 Splunk Inc. Service monitoring interface
US20150358391A1 (en) 2012-12-21 2015-12-10 Bmc Software, Inc. Application Monitoring for Cloud-Based Architectures
US20150370852A1 (en) 2014-05-20 2015-12-24 Google Inc. Dimension widening aggregate data
US9256452B1 (en) 2012-11-14 2016-02-09 Amazon Technologies, Inc. Providing an instance availability estimate
US20160064277A1 (en) 2014-08-27 2016-03-03 Samsung Electronics Co., Ltd. Methods of fabricating semiconductor devices using nanowires
US9288193B1 (en) 2013-06-25 2016-03-15 Intuit Inc. Authenticating cloud services
US20160087879A1 (en) 2014-09-24 2016-03-24 Hitachi, Ltd. Communication system, node device, node program, and communication program
US9300552B2 (en) 2013-12-16 2016-03-29 International Business Machines Corporation Scaling a cloud infrastructure
US20160094401A1 (en) 2014-09-30 2016-03-31 International Business Machines Corporation Dynamic metering adjustment for service management of computing platform
US20160094483A1 (en) 2014-09-30 2016-03-31 Sony Computer Entertainment America Llc Methods and systems for portably deploying applications on one or more cloud systems
US20160094431A1 (en) 2014-09-30 2016-03-31 Splunk Inc. Service Analyzer Interface
US20160094410A1 (en) 2014-09-30 2016-03-31 International Business Machines Corporation Scalable metering for cloud service management based on cost-awareness
US20160103717A1 (en) 2014-10-10 2016-04-14 International Business Machines Corporation Autoscaling applications in shared cloud resources
US9319343B2 (en) 2013-01-02 2016-04-19 International Business Machines Corporation Modifying an assignment of nodes to roles in a computing environment
US9329915B1 (en) 2012-05-08 2016-05-03 Amazon Technologies, Inc. System and method for testing in a production environment
US20160127204A1 (en) 2014-03-07 2016-05-05 Hitachi, Ltd. Performance evaluation method and information processing device
US20160149832A1 (en) 2013-07-31 2016-05-26 Guangzhou Ucweb Computer Technology Co., Ltd. Method and apparatus for increasing subresource loading speed
US20160164738A1 (en) 2014-12-03 2016-06-09 Amazon Technologies, Inc. Vertical Scaling Of Computing Instances
US20160182399A1 (en) 2014-12-23 2016-06-23 Facebook, Inc. Continuous resource pool balancing
US20160217022A1 (en) 2015-01-23 2016-07-28 Opsclarity, Inc. Anomaly detection using circumstance-specific detectors
US9450700B1 (en) 2013-08-05 2016-09-20 Amazon Technologies, Inc. Efficient network fleet monitoring
US9459980B1 (en) 2013-04-17 2016-10-04 Amazon Technologies, Inc. Varying cluster sizes in a predictive test load while testing a productive system
US20160294722A1 (en) 2015-03-31 2016-10-06 Alcatel-Lucent Usa Inc. Method And Apparatus For Provisioning Resources Using Clustering
US9467476B1 (en) 2015-03-13 2016-10-11 Varmour Networks, Inc. Context aware microsegmentation
US9477784B1 (en) 2011-10-05 2016-10-25 Cumulus Systems, Inc System for organizing and fast searching of massive amounts of data
US9483286B2 (en) 2013-03-15 2016-11-01 Avi Networks Distributed network services
US20160323377A1 (en) 2015-05-01 2016-11-03 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters
US20160323197A1 (en) 2015-04-30 2016-11-03 Amazon Technologies, Inc. Background processes in update load balancers of an auto scaling group
US9495222B1 (en) 2011-08-26 2016-11-15 Dell Software Inc. Systems and methods for performance indexing
US20160359719A1 (en) 2015-06-05 2016-12-08 Apple Inc. System and method for predicting changes in network quality
US9531614B1 (en) 2015-10-30 2016-12-27 AppDynamics, Inc. Network aware distributed business transaction anomaly detection
US20160378635A1 (en) 2015-06-26 2016-12-29 Amazon Technologies, Inc. Retrieval of authoritative measurement data from in-memory datastores
US9535805B2 (en) 2010-03-04 2017-01-03 Microsoft Technology Licensing, Llc Resilient routing for session initiation protocol based communication systems
US9558465B1 (en) 2013-11-11 2017-01-31 Amazon Technologies, Inc. Annotations-based generic load generator engine
US20170041386A1 (en) 2015-08-05 2017-02-09 International Business Machines Corporation Provisioning a target hosting environment
US9571516B1 (en) 2013-11-08 2017-02-14 Skyhigh Networks, Inc. Cloud service usage monitoring system
US9608880B1 (en) 2015-02-19 2017-03-28 Dell Products L.P. Systems and methods for real-time performance monitoring
US20170093986A1 (en) 2015-09-24 2017-03-30 Barefoot Networks, Inc. Data-plane stateful processing units in packet processing pipelines
US9613120B1 (en) 2014-11-11 2017-04-04 Amazon Technologies, Inc. Replicated database startup for common database storage
US9626275B1 (en) 2014-06-05 2017-04-18 Amazon Technologies, Inc. Dynamic rate adjustment for interaction monitoring
US20170126792A1 (en) 2015-11-02 2017-05-04 Telefonaktiebolaget L M Ericsson (Publ) System and methods for intelligent service function placement and autoscale based on machine learning
US20170134481A1 (en) 2013-12-10 2017-05-11 International Business Machines Corporation Software-defined networking single-source enterprise workload manager
US9674302B1 (en) 2014-06-13 2017-06-06 Amazon Technologies, Inc. Computing resource transition notification and pending state
US9680699B2 (en) 2006-09-19 2017-06-13 Invention Science Fund I, Llc Evaluation systems and methods for coordinating software agents
US9692811B1 (en) 2014-05-23 2017-06-27 Amazon Technologies, Inc. Optimization of application parameters
US9697316B1 (en) 2011-12-13 2017-07-04 Amazon Technologies, Inc. System and method for efficient data aggregation with sparse exponential histogram
US9712410B1 (en) 2014-06-25 2017-07-18 Amazon Technologies, Inc. Local metrics in a service provider environment
US9716617B1 (en) 2016-06-14 2017-07-25 ShieldX Networks, Inc. Dynamic, load-based, auto-scaling network security microservices architecture
US9729414B1 (en) 2012-05-21 2017-08-08 Thousandeyes, Inc. Monitoring service availability using distributed BGP routing feeds
US9749888B1 (en) 2015-12-21 2017-08-29 Headspin, Inc. System for network characteristic assessment
US20170324555A1 (en) 2016-05-05 2017-11-09 Auburn University System and method for preemptive self-healing security
US9817699B2 (en) 2013-03-13 2017-11-14 Elasticbox Inc. Adaptive autoscaling for virtualized applications
US20170331907A1 (en) 2014-12-12 2017-11-16 Hewlett Packard Enterprise Development Lp Cloud service tuning
US9830192B1 (en) 2014-11-10 2017-11-28 Turbonomic, Inc. Managing application performance in virtualization systems
US20170344618A1 (en) 2010-12-23 2017-11-30 Eliot Horowitz Systems and methods for managing distributed database deployments
US20180004582A1 (en) 2015-01-19 2018-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Timers in stateless architecture
US20180018244A1 (en) 2015-01-30 2018-01-18 Nec Corporation Node system, server apparatus, scaling control method, and program
US9882830B2 (en) 2015-06-26 2018-01-30 Amazon Technologies, Inc. Architecture for metrics aggregation without service partitioning
US20180041470A1 (en) 2016-08-08 2018-02-08 Talari Networks Incorporated Applications and integrated firewall design in an adaptive private network (apn)
US20180041408A1 (en) 2014-10-30 2018-02-08 Adaptive Spectrum And Signal Alignment, Inc. Method and apparatus for providing performance and usage information for a wireless local area network
US20180046482A1 (en) 2016-08-09 2018-02-15 International Business Machines Corporation Expediting the provisioning of virtual machines based on cached repeated portions of a template
US20180063193A1 (en) * 2016-08-27 2018-03-01 Ganesan Chandrashekhar Distributed Network Encryption for Logical Network Implemented in Public Cloud
US20180089328A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Techniques for ingesting metrics data
US20180088935A1 (en) 2016-09-27 2018-03-29 Ca, Inc. Microservices application configuration based on runtime environment
US9935829B1 (en) 2014-09-24 2018-04-03 Amazon Technologies, Inc. Scalable packet processing service
US9959188B1 (en) 2015-07-02 2018-05-01 Amazon Technologies, Inc. Managing processor usage of a physical host configured for hosting computing instances
US9967275B1 (en) 2015-12-17 2018-05-08 EMC IP Holding Company LLC Efficient detection of network anomalies
US20180136931A1 (en) 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US9979617B1 (en) 2014-05-15 2018-05-22 Amazon Technologies, Inc. Techniques for controlling scaling behavior of resources
US10003550B1 (en) 2014-03-14 2018-06-19 Amazon Technologies Smart autoscaling of a cluster for processing a work queue in a distributed system
US20180287902A1 (en) 2017-03-29 2018-10-04 Juniper Networks, Inc. Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control
US20180309637A1 (en) 2017-04-25 2018-10-25 Nutanix, Inc. Systems and methods for networked microservice modeling and visualization
US20180335946A1 (en) 2017-05-18 2018-11-22 Aetna Inc. Scalable distributed computing system for determining exact median and other quantiles in big data applications
US20180367596A1 (en) 2017-06-14 2018-12-20 International Business Machines Corporation Optimizing internet data transfers using an intelligent router agent
US10212041B1 (en) 2016-03-04 2019-02-19 Avi Networks Traffic pattern detection and presentation in container-based cloud computing architecture
US10237135B1 (en) 2014-03-04 2019-03-19 Amazon Technologies, Inc. Computing optimization
US20190121672A1 (en) 2006-08-31 2019-04-25 Bmc Software, Inc. Automated capacity provisioning method using historical performance data
US10313211B1 (en) 2015-08-25 2019-06-04 Avi Networks Distributed network service risk monitoring and scoring
US20190199790A1 (en) * 2017-12-22 2019-06-27 A10 Networks, Inc. Managing health status of network devices in a distributed global server load balancing system
US10372600B2 (en) 2017-03-01 2019-08-06 Salesforce.Com, Inc. Systems and methods for automated web performance testing for cloud apps in use-case scenarios
US20190297014A1 (en) 2018-03-22 2019-09-26 Futurewei Technologies, Inc. System and method for supporting icn-within-ip networking
US20200014594A1 (en) 2015-07-13 2020-01-09 Telefonaktiebolaget Lm Ericsson (Publ) Analytics-driven dynamic network design and configuration
US10547521B1 (en) 2017-03-29 2020-01-28 Juniper Networks, Inc. Network dashboard with multifaceted utilization visualizations
US10594562B1 (en) 2015-08-25 2020-03-17 Vmware, Inc. Intelligent autoscale of services
US10630543B1 (en) 2017-03-17 2020-04-21 Amazon Technologies, Inc. Wireless mesh network implementation for IOT devices
WO2020086956A1 (en) 2018-10-26 2020-04-30 Vmware, Inc. Collecting samples hierarchically in a datacenter
US20200169479A1 (en) 2018-11-28 2020-05-28 Microsoft Technology Licensing, Llc Efficient metric calculation with recursive data processing
US10728121B1 (en) 2018-05-23 2020-07-28 Juniper Networks, Inc. Dashboard for graphic display of computer network topology
US20200382390A1 (en) 2019-05-30 2020-12-03 Vmware, Inc. Partitioning health monitoring in a global server load balancing system
US10873541B2 (en) 2017-04-17 2020-12-22 Microsoft Technology Licensing, Llc Systems and methods for proactively and reactively allocating resources in cloud-based networks
US10931548B1 (en) 2016-03-28 2021-02-23 Vmware, Inc. Collecting health monitoring data pertaining to an application from a selected set of service engines
US20210119923A1 (en) 2017-04-28 2021-04-22 Opanga Networks, Inc. System and method for tracking domain names for the purposes of network management
US10999168B1 (en) 2018-05-30 2021-05-04 Vmware, Inc. User defined custom metrics
US20210349749A1 (en) 2012-02-14 2021-11-11 Aloke Guha Systems and methods for dynamic provisioning of resources for virtualized
US11283697B1 (en) 2015-03-24 2022-03-22 Vmware, Inc. Scalable real time metrics management

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754706B1 (en) 1999-12-16 2004-06-22 Speedera Networks, Inc. Scalable domain name system with persistence and load balancing
US7461146B2 (en) 2003-01-20 2008-12-02 Equallogic, Inc. Adaptive storage block data distribution
US7266754B2 (en) 2003-08-14 2007-09-04 Cisco Technology, Inc. Detecting network denial of service attacks
US9160792B2 (en) 2005-04-05 2015-10-13 International Business Machines Corporation On-demand global server load balancing system and method of use
JP5118020B2 (en) 2005-05-05 2013-01-16 シスコ アイアンポート システムズ エルエルシー Identifying threats in electronic messages
US7653670B2 (en) 2005-11-28 2010-01-26 Nec Laboratories America, Inc. Storage-efficient and collision-free hash-based packet processing architecture and method
US9026655B2 (en) 2007-01-31 2015-05-05 Oracle America, Inc. Method and system for load balancing
JP5327832B2 (en) 2007-05-16 2013-10-30 独立行政法人情報通信研究機構 Packet communication method using node identifier and position indicator
WO2010014780A1 (en) 2008-07-31 2010-02-04 Juma Technology Corp. System and method for routing commands in a modularized software system
US9172713B2 (en) 2008-09-24 2015-10-27 Neustar, Inc. Secure domain name system
US8533337B2 (en) 2010-05-06 2013-09-10 Citrix Systems, Inc. Continuous upgrading of computers in a load balanced environment
US9172673B2 (en) 2010-12-30 2015-10-27 Verisign, Inc Systems and methods for domain name exchange
US9203610B2 (en) 2011-12-13 2015-12-01 Zyad Azzouz Systems and methods for secure peer-to-peer communications
US8938416B1 (en) 2012-01-13 2015-01-20 Amazon Technologies, Inc. Distributed storage of aggregated data
KR101587959B1 (en) 2012-06-05 2016-01-25 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 Cross-user correlation for detecting server-side multi-target intrusion
US9052955B2 (en) 2012-07-25 2015-06-09 Cisco Technology, Inc. System and method for seamless application hosting and migration in a network environment
US9071609B2 (en) 2012-10-08 2015-06-30 Google Technology Holdings LLC Methods and apparatus for performing dynamic load balancing of processing resources
US9374276B2 (en) 2012-11-01 2016-06-21 Microsoft Technology Licensing, Llc CDN traffic management in the cloud
US9537973B2 (en) 2012-11-01 2017-01-03 Microsoft Technology Licensing, Llc CDN load balancing in the cloud
US9191402B2 (en) 2013-01-25 2015-11-17 Opendns, Inc. Domain classification based on client request behavior
WO2014205134A1 (en) 2013-06-18 2014-12-24 Level 3 Communications, Llc Data center redundancy in a network
US9491164B1 (en) 2013-08-21 2016-11-08 NetSuite Inc. System and method for importing heterogeneous hashed passwords
US9577940B2 (en) 2014-02-25 2017-02-21 International Business Machines Corporation Identity-aware load balancing
US9544266B2 (en) 2014-06-27 2017-01-10 Microsoft Technology Licensing, Llc NSEC3 performance in DNSSEC
US20160036837A1 (en) 2014-08-04 2016-02-04 Microsoft Corporation Detecting attacks on data centers
US11496606B2 (en) 2014-09-30 2022-11-08 Nicira, Inc. Sticky service sessions in a datacenter
US9798883B1 (en) 2014-10-06 2017-10-24 Exabeam, Inc. System, method, and computer program product for detecting and assessing security risks in a network
US20160125330A1 (en) 2014-10-31 2016-05-05 AppDynamics, Inc. Rolling upgrade of metric collection and aggregation system
US9430672B2 (en) 2014-12-05 2016-08-30 Cisco Technology, Inc. Stack fusion architecture including distributed software clusters to enable software communication services
CN104580168B (en) 2014-12-22 2019-02-26 华为技术有限公司 A kind of processing method of Attacking Packets, apparatus and system
US10015094B1 (en) 2015-06-19 2018-07-03 Amazon Technologies, Inc. Customer-specified routing policies
US10148631B1 (en) 2015-09-29 2018-12-04 Symantec Corporation Systems and methods for preventing session hijacking
EP3193227B1 (en) 2016-01-04 2021-02-03 Siemens Aktiengesellschaft Entropy-based validation of sensor measurements
US10142407B2 (en) 2016-06-30 2018-11-27 Nokia Of America Corporation Centralized load balancer with weighted hash function
US10146593B2 (en) 2017-02-17 2018-12-04 Sas Institute Inc. Techniques for decentralized load balancing
US10757075B2 (en) 2017-04-14 2020-08-25 Calix, Inc. Device specific website filtering using a bifurcated domain name system
US11290438B2 (en) 2017-07-07 2022-03-29 Oracle International Corporation Managing session access across multiple data centers
US10498696B2 (en) 2018-01-31 2019-12-03 EMC IP Holding Company LLC Applying a consistent hash to a distributed domain name server cache
US10977140B2 (en) 2018-11-06 2021-04-13 International Business Machines Corporation Fault tolerant distributed system to monitor, recover and scale load balancers
US10789102B2 (en) 2019-01-09 2020-09-29 Microsoft Technology Licensing, Llc Resource provisioning in computing systems
US10853082B1 (en) 2019-04-30 2020-12-01 Splunk Inc. Pipeline set selection based on duty cycle estimation of pipeline threads
US11184113B2 (en) 2019-05-24 2021-11-23 International Business Machines Corporation Packet replay in response to checksum error
US11240294B2 (en) 2019-08-23 2022-02-01 Samsung Electronics Co., Ltd. Systems and methods for spike detection and load balancing resource management
US11038839B1 (en) 2020-03-18 2021-06-15 Namecheap, Inc. Systems and methods for detecting conflicts in internet services
US11038840B1 (en) 2020-03-18 2021-06-15 Namecheap, Inc. Systems and methods for resolving conflicts in internet services
US11755385B2 (en) 2020-05-29 2023-09-12 Vmware, Inc. Cross-cluster load balancer
US11609794B2 (en) 2020-11-10 2023-03-21 Oracle International Corporation Techniques for modifying cluster computing environments
US20220231949A1 (en) 2021-01-18 2022-07-21 Vmware, Inc. Network-aware load balancing
US20220237203A1 (en) 2021-01-22 2022-07-28 Vmware, Inc. Method and system for efficiently propagating objects across a federated datacenter
US20220350675A1 (en) 2021-05-03 2022-11-03 Avesha, Inc. Distributed computing system with multi tenancy based on application slices
US11811861B2 (en) 2021-05-17 2023-11-07 Vmware, Inc. Dynamically updating load balancing criteria
US11799824B2 (en) 2021-06-14 2023-10-24 Vmware, Inc. Method and apparatus for enhanced client persistence in multi-site GSLB deployments
US20230018908A1 (en) 2021-07-19 2023-01-19 Vmware, Inc. Feedback-based control system for software defined networks
US20230025679A1 (en) 2021-07-20 2023-01-26 Vmware, Inc. Security aware load balancing for a global server load balancing system
US20230024475A1 (en) 2021-07-20 2023-01-26 Vmware, Inc. Security aware load balancing for a global server load balancing system

Patent Citations (214)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109486A (en) 1989-01-06 1992-04-28 Motorola, Inc. Distributed computer system with network and resource status monitoring
US6515968B1 (en) 1995-03-17 2003-02-04 Worldcom, Inc. Integrated interface for real time web based viewing of telecommunications network call traffic
US5781703A (en) 1996-09-06 1998-07-14 Candle Distributed Solutions, Inc. Intelligent remote agent for computer performance monitoring
US6714979B1 (en) 1997-09-26 2004-03-30 Worldcom, Inc. Data warehousing infrastructure for web based reporting tool
US20050172018A1 (en) 1997-09-26 2005-08-04 Devine Carol Y. Integrated customer interface system for communications network management
US6148335A (en) 1997-11-25 2000-11-14 International Business Machines Corporation Performance/capacity management framework over many servers
US20040243607A1 (en) 1999-04-16 2004-12-02 Tummalapalli Venkat Ranga Reddy Multidimensional repositories for problem discovery and capacity planning of database applications
US7353272B2 (en) 1999-06-23 2008-04-01 Savvis Communications Corporation Method and system for internet performance monitoring and analysis including user interface and periodic information measurement and collection
US6449739B1 (en) 1999-09-01 2002-09-10 Mercury Interactive Corporation Post-deployment monitoring of server performance
US6792458B1 (en) 1999-10-04 2004-09-14 Urchin Software Corporation System and method for monitoring and analyzing internet traffic
US6901051B1 (en) 1999-11-15 2005-05-31 Fujitsu Limited Server-based network performance metrics generation system and method
US6976090B2 (en) 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet
US7430610B2 (en) 2000-09-01 2008-09-30 Opyo, Inc. System and method for adjusting the distribution of an asset over a multi-tiered network
US20100293296A1 (en) * 2000-09-26 2010-11-18 Foundry Networks, Inc. Global server load balancing
US7636708B2 (en) 2000-11-10 2009-12-22 Microsoft Corporation Distributed data gathering and aggregation agent
US6996778B2 (en) 2000-12-11 2006-02-07 Microsoft Corporation User interface for managing multiple network resources
US20020078150A1 (en) 2000-12-18 2002-06-20 Nortel Networks Limited And Bell Canada Method of team member profile selection within a virtual team environment
US20020198984A1 (en) 2001-05-09 2002-12-26 Guy Goldstein Transaction breakdown feature to facilitate analysis of end user performance of a server system
US20020198985A1 (en) 2001-05-09 2002-12-26 Noam Fraenkel Post-deployment monitoring and analysis of server performance
US7076695B2 (en) 2001-07-20 2006-07-11 Opnet Technologies, Inc. System and methods for adaptive threshold determination for performance metrics
US20030191837A1 (en) 2002-04-03 2003-10-09 Chen John Bradley Global network monitoring system
US20040054680A1 (en) 2002-06-13 2004-03-18 Netscout Systems, Inc. Real-time network performance monitoring system and related methods
US20030236877A1 (en) 2002-06-20 2003-12-25 International Business Machines Corporation Method and system for transaction pipeline decomposition
US20040064552A1 (en) 2002-06-25 2004-04-01 Chong James C. Method and system for monitoring performance of applications in a distributed environment
US6792460B2 (en) 2002-10-02 2004-09-14 Mercury Interactive Corporation System and methods for monitoring application server performance
US7246159B2 (en) 2002-11-01 2007-07-17 Fidelia Technology, Inc Distributed data gathering and storage for use in a fault and performance monitoring system
US20040103186A1 (en) 2002-11-21 2004-05-27 Fabio Casati Platform and method for monitoring and analyzing data
US20050010578A1 (en) 2003-07-11 2005-01-13 Rutvik Doshi Performance monitoring of method calls and database statements in an application server
US20050120160A1 (en) 2003-08-20 2005-06-02 Jerry Plouffe System and method for managing virtual servers
US8588069B2 (en) 2003-08-29 2013-11-19 Ineoquest Technologies, Inc. System and method for analyzing the performance of multiple transportation streams of streaming media in packet-based networks
US20050060574A1 (en) 2003-09-13 2005-03-17 Finisar Corporation Network analysis graphical user interface
US20050108444A1 (en) 2003-11-19 2005-05-19 Flauaus Gary R. Method of detecting and monitoring fabric congestion
US7130812B1 (en) 2003-11-26 2006-10-31 Centergistic Solutions, Inc. Method and system for managing real time data
US20050188221A1 (en) 2004-02-24 2005-08-25 Covelight Systems, Inc. Methods, systems and computer program products for monitoring a server application
US7701852B1 (en) 2004-08-26 2010-04-20 Sprint Communications Company L.P. Method for analyzing performance of a network through measuring and reporting delay in routing devices
US7933988B2 (en) 2004-10-20 2011-04-26 Telecom Italia S.P.A. Method and system for monitoring performance of a client-server architecture
US20080104230A1 (en) 2004-10-20 2008-05-01 Antonio Nasuto Method And System For Monitoring Performance Of A Client-Server Architecture
US7743380B2 (en) 2005-01-21 2010-06-22 Hewlett-Packard Development Company, L.P. Monitoring clustered software applications
US20060167939A1 (en) 2005-01-21 2006-07-27 Seidman David I Monitoring clustered software applications
US7990847B1 (en) 2005-04-15 2011-08-02 Cisco Technology, Inc. Method and system for managing servers in a server cluster
US20060242282A1 (en) 2005-04-20 2006-10-26 Netqos, Inc. Method and system for visualizing network performace characteristics
US20060271677A1 (en) 2005-05-24 2006-11-30 Mercier Christina W Policy based data path management, asset management, and monitoring
US8032896B1 (en) 2005-11-01 2011-10-04 Netapp, Inc. System and method for histogram based chatter suppression
US20070226554A1 (en) 2006-02-13 2007-09-27 Sun Microsystems, Inc. High-efficiency time-series archival system for telemetry signals
US9047648B1 (en) 2006-03-30 2015-06-02 At&T Mobility Ii Llc Measurement, collection, reporting and processing of health condition data
US20190121672A1 (en) 2006-08-31 2019-04-25 Bmc Software, Inc. Automated capacity provisioning method using historical performance data
US9680699B2 (en) 2006-09-19 2017-06-13 Invention Science Fund I, Llc Evaluation systems and methods for coordinating software agents
US8874725B1 (en) 2006-11-15 2014-10-28 Conviva Inc. Monitoring the performance of a content player
US20080126534A1 (en) 2006-11-28 2008-05-29 Wolfgang Mueller Method and system to monitor parameters of a data flow path in a communication system
US20090049524A1 (en) 2007-08-16 2009-02-19 International Business Machines Corporation System and method for partitioning a multi-level security namespace
US8131712B1 (en) * 2007-10-15 2012-03-06 Google Inc. Regional indexes
US20090154366A1 (en) 2007-12-13 2009-06-18 Telefonaktiebolaget Lm Ericsson (Publ) Exchange of processing metric information between nodes
US20090199196A1 (en) 2008-02-01 2009-08-06 Zahur Peracha Automatic baselining of resource consumption for transactions
US8412493B2 (en) 2008-12-22 2013-04-02 International Business Machines Corporation Multi-dimensional model generation for determining service performance
US20100279622A1 (en) 2009-05-04 2010-11-04 Qual Comm Incorporated System and method for real-time performance and load statistics of a communications system
US20100287171A1 (en) 2009-05-11 2010-11-11 Red Hat, Inc. Federated Indexing from Hashed Primary Key Slices
US20110126111A1 (en) 2009-11-20 2011-05-26 Jasvir Singh Gill Method And Apparatus For Risk Visualization and Remediation
US8112471B2 (en) 2009-12-07 2012-02-07 Yottaa, Inc System and method for website performance optimization and internet traffic processing
US20110196890A1 (en) 2010-02-08 2011-08-11 Navteq North America, Llc Virtual table generator for analyzing geographic databases
US9535805B2 (en) 2010-03-04 2017-01-03 Microsoft Technology Licensing, Llc Resilient routing for session initiation protocol based communication systems
US20120131591A1 (en) 2010-08-24 2012-05-24 Jay Moorthi Method and apparatus for clearing cloud compute demand
US20120101800A1 (en) 2010-10-20 2012-04-26 Microsoft Corporation Model checking for distributed application validation
US20120110185A1 (en) 2010-10-29 2012-05-03 Cisco Technology, Inc. Distributed Hierarchical Rendering and Provisioning of Cloud Services
US8499066B1 (en) 2010-11-19 2013-07-30 Amazon Technologies, Inc. Predicting long-term computing resource usage
US20170344618A1 (en) 2010-12-23 2017-11-30 Eliot Horowitz Systems and methods for managing distributed database deployments
US20120254443A1 (en) 2011-03-30 2012-10-04 International Business Machines Corporation Information processing system, information processing apparatus, method of scaling, program, and recording medium
US20120254444A1 (en) 2011-04-01 2012-10-04 Carnegie Mellon University Dynamic capacity management of multiple parallel-connected computing resources
US20120291099A1 (en) 2011-05-09 2012-11-15 Cleversafe, Inc. Providing dispersed storage network location information of a hypertext markup language file
US20130013953A1 (en) 2011-07-07 2013-01-10 Microsoft Corporation Health monitoring of applications in a guest partition
US9495222B1 (en) 2011-08-26 2016-11-15 Dell Software Inc. Systems and methods for performance indexing
US20130086230A1 (en) 2011-10-01 2013-04-04 Oracle International Corporation Transparent configuration of virtual hosts supporting multiple time zones in an enterprise platform
US20130086273A1 (en) 2011-10-04 2013-04-04 Tier3, Inc. Predictive two-dimensional autoscaling
US9477784B1 (en) 2011-10-05 2016-10-25 Cumulus Systems, Inc System for organizing and fast searching of massive amounts of data
US8856797B1 (en) 2011-10-05 2014-10-07 Amazon Technologies, Inc. Reactive auto-scaling of capacity
US9697316B1 (en) 2011-12-13 2017-07-04 Amazon Technologies, Inc. System and method for efficient data aggregation with sparse exponential histogram
US9083710B1 (en) 2012-01-03 2015-07-14 Google Inc. Server load balancing using minimally disruptive hash tables
US20130179881A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Decoupling paas resources, jobs, and scheduling
US20130179289A1 (en) 2012-01-09 2013-07-11 Microsoft Corportaion Pricing of resources in virtual machine pools
US20130179895A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Paas hierarchial scheduling and auto-scaling
US20130179894A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Platform as a service job scheduling
US20130211559A1 (en) 2012-02-09 2013-08-15 Rockwell Automation Technologies, Inc. Cloud-based operator interface for industrial automation
US20130212257A1 (en) 2012-02-14 2013-08-15 Hitachi, Ltd. Computer program and monitoring apparatus
US20210349749A1 (en) 2012-02-14 2021-11-11 Aloke Guha Systems and methods for dynamic provisioning of resources for virtualized
US20130290538A1 (en) 2012-04-27 2013-10-31 Daniel Juergen Gmach Evaluation of cloud computing services
US9329915B1 (en) 2012-05-08 2016-05-03 Amazon Technologies, Inc. System and method for testing in a production environment
US9729414B1 (en) 2012-05-21 2017-08-08 Thousandeyes, Inc. Monitoring service availability using distributed BGP routing feeds
US9071537B2 (en) 2012-06-15 2015-06-30 Citrix Systems, Inc. Systems and methods for propagating health of a cluster node
US10127097B2 (en) 2012-06-15 2018-11-13 Citrix Systems, Inc. Systems and methods for propagating health of a cluster node
US20130343213A1 (en) 2012-06-22 2013-12-26 BlueStripe Software, Inc. Methods and Computer Program Products for Correlation Analysis of Network Traffic in a Network Device
US20130346594A1 (en) 2012-06-25 2013-12-26 International Business Machines Corporation Predictive Alert Threshold Determination Tool
US20140006862A1 (en) 2012-06-28 2014-01-02 Microsoft Corporation Middlebox reliability
US20140059179A1 (en) 2012-08-23 2014-02-27 Adobe Systems Incorporated Auto-scaling management of web content
US9256452B1 (en) 2012-11-14 2016-02-09 Amazon Technologies, Inc. Providing an instance availability estimate
US20140143406A1 (en) 2012-11-20 2014-05-22 Bank Of America Corporation Dynamically Scalable Real-Time System Monitoring
US20140173675A1 (en) 2012-12-14 2014-06-19 Biscotti Inc. Distributed Infrastructure
US20150358391A1 (en) 2012-12-21 2015-12-10 Bmc Software, Inc. Application Monitoring for Cloud-Based Architectures
US9319343B2 (en) 2013-01-02 2016-04-19 International Business Machines Corporation Modifying an assignment of nodes to roles in a computing environment
US9032078B2 (en) 2013-01-02 2015-05-12 International Business Machines Corporation Predictive scaling for clusters
US20140215621A1 (en) 2013-01-25 2014-07-31 REMTCS Inc. System, method, and apparatus for providing network security
US20140215058A1 (en) 2013-01-26 2014-07-31 Lyatiss, Inc. Methods and systems for estimating and analyzing flow activity and path performance data in cloud or distributed systems
US20140229706A1 (en) 2013-02-14 2014-08-14 International Business Machines Corporation Dynamic thread status retrieval using inter-thread communication
US20140282160A1 (en) 2013-03-12 2014-09-18 Business Objects Software Ltd. Binning visual definition for visual intelligence
US9817699B2 (en) 2013-03-13 2017-11-14 Elasticbox Inc. Adaptive autoscaling for virtualized applications
US9483286B2 (en) 2013-03-15 2016-11-01 Avi Networks Distributed network services
US20140280886A1 (en) 2013-03-15 2014-09-18 Comcast Cable Communications, Llc Consolidated performance metric analysis
US20140304414A1 (en) 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods for dynamically expanding load balancing pool
US9459980B1 (en) 2013-04-17 2016-10-04 Amazon Technologies, Inc. Varying cluster sizes in a predictive test load while testing a productive system
US20140344439A1 (en) 2013-05-15 2014-11-20 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for providing network services orchestration
US20140351226A1 (en) 2013-05-22 2014-11-27 International Business Machines Corporation Distributed Feature Collection and Correlation Engine
US9288193B1 (en) 2013-06-25 2016-03-15 Intuit Inc. Authenticating cloud services
US20160149832A1 (en) 2013-07-31 2016-05-26 Guangzhou Ucweb Computer Technology Co., Ltd. Method and apparatus for increasing subresource loading speed
US9450700B1 (en) 2013-08-05 2016-09-20 Amazon Technologies, Inc. Efficient network fleet monitoring
US20150058265A1 (en) 2013-08-23 2015-02-26 Vmware, Inc. Automated scaling of multi-tier applications using reinforced learning
US20150074679A1 (en) 2013-09-11 2015-03-12 Cisco Technology Inc. Dynamic Scaling for Multi-Tiered Distributed Computing Systems
US20150081880A1 (en) 2013-09-17 2015-03-19 Stackdriver, Inc. System and method of monitoring and measuring performance relative to expected performance characteristics for applications and software architecture hosted by an iaas provider
US20150106523A1 (en) 2013-10-15 2015-04-16 Vmware, Inc. Distributed global load-balancing system for software-defined data centers
US20150124640A1 (en) 2013-11-05 2015-05-07 Cisco Technology, Inc. Hardware percentile latency measurement
US9571516B1 (en) 2013-11-08 2017-02-14 Skyhigh Networks, Inc. Cloud service usage monitoring system
US9558465B1 (en) 2013-11-11 2017-01-31 Amazon Technologies, Inc. Annotations-based generic load generator engine
US20150134831A1 (en) 2013-11-13 2015-05-14 Fujitsu Limited Management method and apparatus
US20170134481A1 (en) 2013-12-10 2017-05-11 International Business Machines Corporation Software-defined networking single-source enterprise workload manager
US9300553B2 (en) 2013-12-16 2016-03-29 International Business Machines Corporation Scaling a cloud infrastructure
US9300552B2 (en) 2013-12-16 2016-03-29 International Business Machines Corporation Scaling a cloud infrastructure
US20150199219A1 (en) 2014-01-10 2015-07-16 Samsung Electronics Co., Ltd. Method and apparatus for server cluster management
US20150212829A1 (en) 2014-01-30 2015-07-30 International Business Machines Corporation Automatic systems configuration
US10237135B1 (en) 2014-03-04 2019-03-19 Amazon Technologies, Inc. Computing optimization
US20160127204A1 (en) 2014-03-07 2016-05-05 Hitachi, Ltd. Performance evaluation method and information processing device
US10003550B1 (en) 2014-03-14 2018-06-19 Amazon Technologies Smart autoscaling of a cluster for processing a work queue in a distributed system
US20150278061A1 (en) 2014-03-31 2015-10-01 Microsoft Corporation Predictive load scaling for services
US20150288682A1 (en) 2014-04-05 2015-10-08 Wearable Intelligence, Inc. Systems and methods for digital workflow and communication
US20150293954A1 (en) 2014-04-15 2015-10-15 Splunk Inc. Grouping and managing event streams generated from captured network data
US20150295796A1 (en) 2014-04-15 2015-10-15 Splunk Inc. Adjusting network data storage based on event stream statistics
US20150295780A1 (en) 2014-04-15 2015-10-15 Splunk Inc. Grouping and managing event streams generated from captured network data
US9979617B1 (en) 2014-05-15 2018-05-22 Amazon Technologies, Inc. Techniques for controlling scaling behavior of resources
US8977728B1 (en) 2014-05-16 2015-03-10 Iboss, Inc. Maintaining IP tables
US20150370852A1 (en) 2014-05-20 2015-12-24 Google Inc. Dimension widening aggregate data
US9692811B1 (en) 2014-05-23 2017-06-27 Amazon Technologies, Inc. Optimization of application parameters
US9626275B1 (en) 2014-06-05 2017-04-18 Amazon Technologies, Inc. Dynamic rate adjustment for interaction monitoring
US9674302B1 (en) 2014-06-13 2017-06-06 Amazon Technologies, Inc. Computing resource transition notification and pending state
US9712410B1 (en) 2014-06-25 2017-07-18 Amazon Technologies, Inc. Local metrics in a service provider environment
US20160064277A1 (en) 2014-08-27 2016-03-03 Samsung Electronics Co., Ltd. Methods of fabricating semiconductor devices using nanowires
US20160087879A1 (en) 2014-09-24 2016-03-24 Hitachi, Ltd. Communication system, node device, node program, and communication program
US9935829B1 (en) 2014-09-24 2018-04-03 Amazon Technologies, Inc. Scalable packet processing service
US20160094431A1 (en) 2014-09-30 2016-03-31 Splunk Inc. Service Analyzer Interface
US20160094401A1 (en) 2014-09-30 2016-03-31 International Business Machines Corporation Dynamic metering adjustment for service management of computing platform
US20160094483A1 (en) 2014-09-30 2016-03-31 Sony Computer Entertainment America Llc Methods and systems for portably deploying applications on one or more cloud systems
US20160094410A1 (en) 2014-09-30 2016-03-31 International Business Machines Corporation Scalable metering for cloud service management based on cost-awareness
US9210056B1 (en) 2014-10-09 2015-12-08 Splunk Inc. Service monitoring interface
US20160105335A1 (en) 2014-10-09 2016-04-14 Splunk Inc. Service monitoring interface
US20160103717A1 (en) 2014-10-10 2016-04-14 International Business Machines Corporation Autoscaling applications in shared cloud resources
US20180041408A1 (en) 2014-10-30 2018-02-08 Adaptive Spectrum And Signal Alignment, Inc. Method and apparatus for providing performance and usage information for a wireless local area network
US9830192B1 (en) 2014-11-10 2017-11-28 Turbonomic, Inc. Managing application performance in virtualization systems
US9613120B1 (en) 2014-11-11 2017-04-04 Amazon Technologies, Inc. Replicated database startup for common database storage
US20160164738A1 (en) 2014-12-03 2016-06-09 Amazon Technologies, Inc. Vertical Scaling Of Computing Instances
US20170331907A1 (en) 2014-12-12 2017-11-16 Hewlett Packard Enterprise Development Lp Cloud service tuning
US20160182399A1 (en) 2014-12-23 2016-06-23 Facebook, Inc. Continuous resource pool balancing
US20180004582A1 (en) 2015-01-19 2018-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Timers in stateless architecture
US20160217022A1 (en) 2015-01-23 2016-07-28 Opsclarity, Inc. Anomaly detection using circumstance-specific detectors
US20180018244A1 (en) 2015-01-30 2018-01-18 Nec Corporation Node system, server apparatus, scaling control method, and program
US9608880B1 (en) 2015-02-19 2017-03-28 Dell Products L.P. Systems and methods for real-time performance monitoring
US20170063933A1 (en) 2015-03-13 2017-03-02 Varmour Networks, Inc. Context aware microsegmentation
US9467476B1 (en) 2015-03-13 2016-10-11 Varmour Networks, Inc. Context aware microsegmentation
US11283697B1 (en) 2015-03-24 2022-03-22 Vmware, Inc. Scalable real time metrics management
US20160294722A1 (en) 2015-03-31 2016-10-06 Alcatel-Lucent Usa Inc. Method And Apparatus For Provisioning Resources Using Clustering
US20160323197A1 (en) 2015-04-30 2016-11-03 Amazon Technologies, Inc. Background processes in update load balancers of an auto scaling group
US20160323377A1 (en) 2015-05-01 2016-11-03 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters
US20160359719A1 (en) 2015-06-05 2016-12-08 Apple Inc. System and method for predicting changes in network quality
US20160378635A1 (en) 2015-06-26 2016-12-29 Amazon Technologies, Inc. Retrieval of authoritative measurement data from in-memory datastores
US9882830B2 (en) 2015-06-26 2018-01-30 Amazon Technologies, Inc. Architecture for metrics aggregation without service partitioning
US9959188B1 (en) 2015-07-02 2018-05-01 Amazon Technologies, Inc. Managing processor usage of a physical host configured for hosting computing instances
US20200014594A1 (en) 2015-07-13 2020-01-09 Telefonaktiebolaget Lm Ericsson (Publ) Analytics-driven dynamic network design and configuration
US20170041386A1 (en) 2015-08-05 2017-02-09 International Business Machines Corporation Provisioning a target hosting environment
US10594562B1 (en) 2015-08-25 2020-03-17 Vmware, Inc. Intelligent autoscale of services
US20200287794A1 (en) 2015-08-25 2020-09-10 Vmware, Inc. Intelligent autoscale of services
US10313211B1 (en) 2015-08-25 2019-06-04 Avi Networks Distributed network service risk monitoring and scoring
US20170093986A1 (en) 2015-09-24 2017-03-30 Barefoot Networks, Inc. Data-plane stateful processing units in packet processing pipelines
US9531614B1 (en) 2015-10-30 2016-12-27 AppDynamics, Inc. Network aware distributed business transaction anomaly detection
US20170126792A1 (en) 2015-11-02 2017-05-04 Telefonaktiebolaget L M Ericsson (Publ) System and methods for intelligent service function placement and autoscale based on machine learning
US9967275B1 (en) 2015-12-17 2018-05-08 EMC IP Holding Company LLC Efficient detection of network anomalies
US9749888B1 (en) 2015-12-21 2017-08-29 Headspin, Inc. System for network characteristic assessment
US10693734B2 (en) 2016-03-04 2020-06-23 Vmware, Inc. Traffic pattern detection and presentation in container-based cloud computing architecture
US10212041B1 (en) 2016-03-04 2019-02-19 Avi Networks Traffic pattern detection and presentation in container-based cloud computing architecture
US20190123970A1 (en) 2016-03-04 2019-04-25 Avi Networks Traffic pattern detection and presentation in container-based cloud computing architecture
US10931548B1 (en) 2016-03-28 2021-02-23 Vmware, Inc. Collecting health monitoring data pertaining to an application from a selected set of service engines
US20170324555A1 (en) 2016-05-05 2017-11-09 Auburn University System and method for preemptive self-healing security
US9716617B1 (en) 2016-06-14 2017-07-25 ShieldX Networks, Inc. Dynamic, load-based, auto-scaling network security microservices architecture
US20180041470A1 (en) 2016-08-08 2018-02-08 Talari Networks Incorporated Applications and integrated firewall design in an adaptive private network (apn)
US20180046482A1 (en) 2016-08-09 2018-02-15 International Business Machines Corporation Expediting the provisioning of virtual machines based on cached repeated portions of a template
US20180063193A1 (en) * 2016-08-27 2018-03-01 Ganesan Chandrashekhar Distributed Network Encryption for Logical Network Implemented in Public Cloud
US20180089328A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Techniques for ingesting metrics data
US20180088935A1 (en) 2016-09-27 2018-03-29 Ca, Inc. Microservices application configuration based on runtime environment
US20180136931A1 (en) 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US10372600B2 (en) 2017-03-01 2019-08-06 Salesforce.Com, Inc. Systems and methods for automated web performance testing for cloud apps in use-case scenarios
US10630543B1 (en) 2017-03-17 2020-04-21 Amazon Technologies, Inc. Wireless mesh network implementation for IOT devices
US10547521B1 (en) 2017-03-29 2020-01-28 Juniper Networks, Inc. Network dashboard with multifaceted utilization visualizations
US20180287902A1 (en) 2017-03-29 2018-10-04 Juniper Networks, Inc. Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control
US10873541B2 (en) 2017-04-17 2020-12-22 Microsoft Technology Licensing, Llc Systems and methods for proactively and reactively allocating resources in cloud-based networks
US20180309637A1 (en) 2017-04-25 2018-10-25 Nutanix, Inc. Systems and methods for networked microservice modeling and visualization
US20210119923A1 (en) 2017-04-28 2021-04-22 Opanga Networks, Inc. System and method for tracking domain names for the purposes of network management
US20180335946A1 (en) 2017-05-18 2018-11-22 Aetna Inc. Scalable distributed computing system for determining exact median and other quantiles in big data applications
US20180367596A1 (en) 2017-06-14 2018-12-20 International Business Machines Corporation Optimizing internet data transfers using an intelligent router agent
US20190199790A1 (en) * 2017-12-22 2019-06-27 A10 Networks, Inc. Managing health status of network devices in a distributed global server load balancing system
US20190297014A1 (en) 2018-03-22 2019-09-26 Futurewei Technologies, Inc. System and method for supporting icn-within-ip networking
US10728121B1 (en) 2018-05-23 2020-07-28 Juniper Networks, Inc. Dashboard for graphic display of computer network topology
US10999168B1 (en) 2018-05-30 2021-05-04 Vmware, Inc. User defined custom metrics
WO2020086956A1 (en) 2018-10-26 2020-04-30 Vmware, Inc. Collecting samples hierarchically in a datacenter
US11044180B2 (en) 2018-10-26 2021-06-22 Vmware, Inc. Collecting samples hierarchically in a datacenter
US11171849B2 (en) 2018-10-26 2021-11-09 Vmware, Inc. Collecting samples hierarchically in a datacenter
US20200136939A1 (en) 2018-10-26 2020-04-30 Vmware, Inc. Collecting samples hierarchically in a datacenter
US20200136942A1 (en) 2018-10-26 2020-04-30 Vmware, Inc. Collecting samples hierarchically in a datacenter
US20220141102A1 (en) 2018-10-26 2022-05-05 Vmware, Inc. Collecting samples hierarchically in a datacenter
US20200169479A1 (en) 2018-11-28 2020-05-28 Microsoft Technology Licensing, Llc Efficient metric calculation with recursive data processing
US20200382390A1 (en) 2019-05-30 2020-12-03 Vmware, Inc. Partitioning health monitoring in a global server load balancing system
US11290358B2 (en) 2019-05-30 2022-03-29 Vmware, Inc. Partitioning health monitoring in a global server load balancing system

Non-Patent Citations (20)

* Cited by examiner, † Cited by third party
Title
Author Unknown, "Autoscaler," Compute Engine—Google Cloud Platform, Jun. 29, 2015, 6 pages, retrieved at http://web.archive.org/web/20150629041026/https://cloud.google.com/compute/docs/autoscaler/.
Author Unknown, "Autoscaling," Aug. 20, 2015, 4 pages, Amazon Web Services, retrieved from http://web.archive.org/web/20150820193921/https://aws.amazon.com/autoscaling/.
Author Unknown, "BPF, eBPF, XDP and Bpfilter . . . What are These Things and What do They Mean for the Enterprise?," Apr. 16, 2018, 11 pages, Netronome, retrieved from https://www.netronome.com/blog/bpf-ebpf-xdp-and-bpfilter-what-are-these-things-and-what-do-they-mean-enterprise/.
Catania, V., et al., "PMT: A Tool to Monitor Performances in Distributed Systems," Proceedings of the 3rd IEEE International Symposium on High Performance Distributed Computing, Aug. 2-5, 1994, 8 pages, San Francisco, CA, USA.
Davis, David, "Post #8—Understanding vCenter Operations Badges," David Davis Blog, Apr. 29, 2014, 5 pages, retrieved from http://blogs.vmware.com/management/2014/04/david-davis-on-vcenter-operations-post-8-understanding-vcenter-operations-badges.html.
De George, Andy, "Howto Scale an Application," Jun. 16, 2015, 8 pages, Github.com.
Liu, Feng, et al., "Monitoring of Grid Performance Based-on Agent," 2007 2nd International Conference on Pervasive Computing and Applications, Jul. 26-27, 2007, 6 pages, IEEE, Birmingham, UK.
Non-Published commonly owned U.S. Appl. No. 15/055,450, filed Feb. 26, 2016, 37 pages, VMware, Inc.
Non-Published commonly Owned U.S. Appl. No. 15/453,258, filed Mar. 8, 2017, 34 pages, VMware, Inc.
Non-Published commonly owned U.S. Appl. No. 15/993,443, filed May 30, 2018, 31 pages, Vmware, Inc.
Non-Published commonly owned U.S. Appl. No. 16/663,360, filed Oct. 25, 2019, 54 pages, VMware, Inc.
Non-Published commonly owned U.S. Appl. No. 16/669,227, filed Oct. 30, 2019, 53 pages, VMware, Inc.
Non-Published commonly owned U.S. Appl. No. 16/746,790, filed Jan. 17, 2020, 34 pages, VMware, Inc.
Non-Published commonly Owned U.S. Appl. No. 16/817,604, filed Mar. 12, 2020, 52 pages, VMware, Inc.
Non-Published commonly Owned U.S. Appl. No. 16/905,571, filed Jun. 18, 2020, 40 pages, VMware, Inc.
Non-Published commonly Owned U.S. Appl. No. 17/700,037, filed Mar. 21, 2022, 43 pages, VMware, Inc.
Sevcik, Peter, et al., "Apdex Alliance," May 24, 2014, 5 pages, www.apdex.org.
Wallace, Paul, et al., "Feature Brief: Stingray's Autoscaling Capability," Brocade Community Forums, May 1, 2013, 5 pages, retrieved from http://community.brocade.com/t5/vADC-Docs/Feature-Brief-Stingray-s-Autoscaling-capability/ta-p/73843.
Yar, Mohammed, et al., "Prediction Intervals for the Holt-Winters Forecasting Procedure," International Journal of Forecasting, Month Unknown 1990, 11 pages, vol. 6, Issue 1, Elsevier Science Publishers B.V.
Zhang, Xuehai, et al., "A Performance Study of Monitoring and Information Services for Distributed Systems," Proceedings of the 12th IEEE International Symposium on High Performance Distributed Computing, Jun. 22-24, 2003, 12 pages, IEEE Computer Society, Washington, D.C., USA.

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11736372B2 (en) 2018-10-26 2023-08-22 Vmware, Inc. Collecting samples hierarchically in a datacenter
US11909612B2 (en) 2019-05-30 2024-02-20 VMware LLC Partitioning health monitoring in a global server load balancing system
US11811861B2 (en) 2021-05-17 2023-11-07 Vmware, Inc. Dynamically updating load balancing criteria
US11792155B2 (en) 2021-06-14 2023-10-17 Vmware, Inc. Method and apparatus for enhanced client persistence in multi-site GSLB deployments
US11799824B2 (en) 2021-06-14 2023-10-24 Vmware, Inc. Method and apparatus for enhanced client persistence in multi-site GSLB deployments

Also Published As

Publication number Publication date
US20230171171A1 (en) 2023-06-01
US11290358B2 (en) 2022-03-29
US20200382584A1 (en) 2020-12-03
US11909612B2 (en) 2024-02-20
US20200382390A1 (en) 2020-12-03

Similar Documents

Publication Publication Date Title
US11582120B2 (en) Partitioning health monitoring in a global server load balancing system
US11489720B1 (en) Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics
US20220006756A1 (en) Methods and apparatus for application aware hub clustering techniques for a hyper scale sd-wan
US20220407820A1 (en) Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds
US20220407773A1 (en) Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of sub-types of resource elements in the public clouds
US20220407790A1 (en) Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics
US20220407915A1 (en) Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics
US20220407774A1 (en) Method and apparatus for modifying the deployment of resource elements in public clouds based on harvested performance metrics
US20220231950A1 (en) Network-aware load balancing
US20220232411A1 (en) Proactive optimization across network segments to maintain end-to-end performance
US20220231949A1 (en) Network-aware load balancing
US9391856B2 (en) End-to-end monitoring and optimization of a content delivery network using anycast routing
US8738766B1 (en) End-to-end monitoring and optimization of a content delivery network using anycast routing
WO2022265681A1 (en) Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics
EP4189937A1 (en) Network-aware load balancing
US9172632B2 (en) Optimized content distribution based on metrics derived from the end user
US8745128B2 (en) Optimized content distribution based on metrics derived from the end user
US20230025679A1 (en) Security aware load balancing for a global server load balancing system
US20230024475A1 (en) Security aware load balancing for a global server load balancing system
US20240007522A1 (en) Dynamically updating load balancing criteria
US20240022499A1 (en) Dns-based gslb-aware sd-wan for low latency saas applications
US11909815B2 (en) Routing based on geolocation costs
US20240031428A1 (en) Transparent load balancing
US20230396538A1 (en) Context-aware routing for sd-wan
US20230412567A1 (en) Globally available vpn as a service

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

AS Assignment

Owner name: VMWARE, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BASAVAIAH, MURALI;PARTHASARATHY, ANAND;IYER, SREERAM;AND OTHERS;REEL/FRAME:054229/0805

Effective date: 20200124

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STCV Information on status: appeal procedure

Free format text: NOTICE OF APPEAL FILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STCF Information on status: patent grant

Free format text: PATENTED CASE