US7000016B1ExpiredUtility

System and method for multi-site clustering in a network

Assignee: DATA RETURN LLCPriority: Oct 19, 2001Filed: Oct 19, 2001Granted: Feb 14, 2006
Est. expiryOct 19, 2021(expired)· nominal 20-yr term from priority
H04L 67/1001H04L 67/1008H04L 67/1021H04L 67/1017
76
PatentIndex Score
40
Cited by
31
References
56
Claims

Abstract

A method for multi-site clustering in a network includes receiving a domain name from a client at a first domain name server, and identifying a first network address and a second network address associated with the domain name. The first network address is associated with a first site that includes a load balancer coupled to a plurality of web servers, and the second network address is associated with a second site that includes a second domain name server. The method also includes determining whether the first site is available to serve the client, and determining whether the second site is available to serve the client. The method further includes communicating the first network address followed by the second network address to the client based at least partially on a determination that the first site and the second site are available, and communicating the second network address to the client based at least partially on a determination that the first site is not available.

Claims

exact text as granted — not AI-modified
1. A method for multi-site clustering in a network, comprising:
 receiving a domain name from a client at a first domain name server; 
 identifying a first network address and a second network address associated with the domain name, the first network address associated with a first site that includes a load balancer coupled to a plurality of web servers, the second network address associated with a second site that includes a second domain name server; 
 determining whether the first site is available to serve the client; 
 determining whether the second site is available to serve the client; 
 communicating the first network address followed by the second network address to the client based at least partially on a determination that the first site and the second site are available; and 
 communicating the second network address to the client based at least partially on a determination that the first site is not available. 
 
     
     
       2. The method of  claim 1 , wherein determining whether the first site is available comprises determining whether at least one of the web servers is available. 
     
     
       3. The method of  claim 2 , wherein determining whether at least one of the web servers is available comprises:
 communicating a message to the web servers; and 
 determining whether the web servers respond to the message. 
 
     
     
       4. The method of  claim 1 , wherein:
 the web servers are coupled to a database; and 
 determining whether the first site is available comprises determining whether the database is available. 
 
     
     
       5. The method of  claim 4 , wherein determining whether the database is available comprises:
 instructing at least one of the web servers to execute a web page; 
 receiving the executed web page; and 
 determining if the executed web page contains at least one expected keyword. 
 
     
     
       6. The method of  claim 5 , wherein the expected keyword comprises a name of a database server serving the database. 
     
     
       7. The method of  claim 1 , wherein determining whether the second site is available comprises determining whether the second domain name server is available. 
     
     
       8. The method of  claim 7 , wherein determining whether the second domain name server is available comprises determining if at least one message has been received at the first domain name server from the second domain name server during each of a plurality of time periods. 
     
     
       9. The method of  claim 1 , further comprising communicating the first network address to the client when the first site is available and the second site is not available. 
     
     
       10. The method of  claim 1 , wherein communicating the first network address followed by the second network address to the client is also based on at least one of a load placed on each of the first and second sites, a response time of each of the first and second sites, and a locality of the client to each of the first and second sites. 
     
     
       11. The method of  claim 10 , further comprising communicating the second network address followed by the first network address to the client based on the determination that the first site and the second site are available and at least one of the load placed on each of the first and second sites, the response time of each of the first and second sites, and the locality of the client to each of the first and second sites. 
     
     
       12. The method of  claim 1 , wherein: the first site includes a first database; and the second site includes a second database. 
     
     
       13. The method of  claim 12 , further comprising synchronizing information in the first and second databases. 
     
     
       14. The method of  claim 13 , wherein synchronizing the information in the first and second databases comprises:
 making first changes to the information in the first database; 
 communicating the first changes to the second database; 
 receiving second changes from the second database; and 
 replicating the second changes to the information in the first database. 
 
     
     
       15. The method of  claim 14 , wherein each first change comprises one of an addition of information to the first database, a modification to existing information in the first database, and a deletion of existing information from the first database. 
     
     
       16. The method of  claim 14 , further comprising storing the first changes in at least one change table. 
     
     
       17. The method of  claim 16 , wherein storing the first changes in at least one change table comprises storing at least a portion of a row of information from the first database, a row identifier, and a time stamp in the change table. 
     
     
       18. The method of  claim 17 , wherein storing at least a portion of a row of information from the first database in the change table comprises storing an entire row of information in the change table, the first change affecting at least one entry in the row. 
     
     
       19. The method of  claim 14 , further comprising consolidating the first changes that affect information in one row of information from the first database. 
     
     
       20. The method of  claim 19 , wherein consolidating the first changes comprises: combining first changes that affect different entries in the row; and
 deleting at least one of a plurality of first changes that affect one or more common entries in the row. 
 
     
     
       21. The method of  claim 14 , further comprising: determining if any of the second changes conflict with the first changes; and deleting one of the first and second changes that conflict. 
     
     
       22. The method of  claim 1 , wherein the web servers are operable to execute stateless applications. 
     
     
       23. The method of  claim 1 , wherein the client is operable to use the first network address until the first network address fails and then use the second network address. 
     
     
       24. A system for multi-site clustering in a network, comprising:
 at least one computer readable medium; and 
 logic encoded on the computer readable medium and operable when executed to:
 receive a domain name from a client; 
 identify a first network address and a second network address associated with the domain name, the first network address associated with a first site that includes a load balancer coupled to a plurality of web servers, the second network address associated with a second site that includes a domain name server; 
 determine whether the first site is available to serve the client; 
 determine whether the second site is available to serve the client; 
 communicate the first network address followed by the second network address to the client based at least partially on a determination that the first site and the second site are available; and 
 communicate the second network address to the client based at least partially on a determination that the first site is not available. 
 
 
     
     
       25. The system of  claim 24 , wherein the logic is operable to determine whether the first site is available by receiving an indication from the load balancer identifying whether at least one of the web servers is available. 
     
     
       26. The system of  claim 25 , wherein the load balancer is operable to determine whether at least one of the web servers is available by:
 communicating a message to the web servers; and 
 determining whether the web servers respond to the message. 
 
     
     
       27. The system of  claim 24 , wherein:
 the web servers are coupled to a database; and 
 the logic is operable to determine whether the first site is available by receiving an indication from the load balancer identifying whether the database is available. 
 
     
     
       28. The system of  claim 27 , wherein the load balancer is operable to determine whether the database is available by:
 instructing at least one of the web servers to execute a web page; 
 receiving the executed web page; and 
 determining if the executed web page contains at least one expected keyword. 
 
     
     
       29. The system of  claim 24 , wherein the logic is operable to determine whether the second site is available by determining whether the domain name server is available. 
     
     
       30. The system of  claim 29 , wherein the logic is operable to determine whether the domain name server is available by determining if at least one message has been received from the domain name server during each of a plurality of time periods. 
     
     
       31. The system of  claim 24 , wherein the logic is further operable to communicate the first network address to the client when the first site is available and the second site is not available. 
     
     
       32. The system of  claim 24 , wherein the logic is operable to communicate the first network address followed by the second network address to the client based also on at least one of a load placed on each of the first and second sites, a response time of each of the first and second sites, and a locality of the client to each of the first and second sites. 
     
     
       33. The system of  claim 32 , wherein the logic is further operable to communicate the second network address followed by the first network address to the client based on the determination that the first site and the second site are available and at least one of the load placed on each of the first and second sites, the response time of each of the first and second sites, and the locality of the client to each of the first and second sites. 
     
     
       34. The system of  claim 24 , wherein the first site includes a first database and the second site includes a second database, the databases operable to synchronize information in the first and second databases. 
     
     
       35. The system of  claim 34 , wherein the first database is operable to synchronize the information by:
 making first changes to the information in the first database; 
 storing the first changes in at least one change table; 
 communicating the first changes in the change table to the second database; 
 receiving second changes from the second database; and 
 replicating the second changes to the information in the first database. 
 
     
     
       36. The system of  claim 35 , wherein the first database is further operable to:
 combine first changes that affect different entries in the row; 
 delete at least one of a plurality of first changes that affect one or more common entries in the row; 
 determine if any of the second changes conflict with the first changes; and delete one of the first and second changes that conflict. 
 
     
     
       37. The system of  claim 24 , wherein the web servers are operable to execute stateless applications. 
     
     
       38. The system of  claim 24 , wherein the client is operable to use the first network  20  address until the first network address fails and then use the second network address. 
     
     
       39. A system for multi-site clustering in a network, comprising:
 a memory operable to store a first network address and a second network address associated with a domain name; and 
 at least one processor operable to:
 receive the domain name from a client; 
 identify the first network address and the second network address associated with the domain name, the first network address associated with a first site that includes a load balancer coupled to a plurality of web servers, the second network address associated with a second site that includes a domain name server; 
 determine whether the first site is available to serve the client; 
 determine whether the second site is available to serve the client; 
 communicate the first network address followed by the second network address to the client based at least partially on a determination that the first site and the second site are available; and 
 communicate the second network address to the client based at least partially on a determination that the first site is not available. 
 
 
     
     
       40. The system of  claim 39 , wherein the processor is operable to determine whether the first site is available by receiving an indication from the load balancer identifying whether at least one of the web servers is available. 
     
     
       41. The system of  claim 40 , wherein the load balancer is operable to determine whether at least one of the web servers is available by:
 communicating a message to the web servers; and 
 determining whether the web servers respond to the message. 
 
     
     
       42. The system of  claim 39 , wherein:
 the web servers are coupled to a database; and 
 the processor is operable to determine whether the first site is available by receiving an indication from the load balancer identifying whether the database is available. 
 
     
     
       43. The system of  claim 42 , wherein the load balancer is operable to determine whether the database is available by:
 instructing at least one of the web servers to execute a web page; 
 receiving the executed web page; and 
 determining if the executed web page contains at least one expected keyword. 
 
     
     
       44. The system of  claim 39 , wherein the processor is operable to determine whether the second site is available by determining whether the domain name server is available. 
     
     
       45. The system of  claim 44 , wherein the processor is operable to determine whether the domain name server is available by determining if at least one message has been received from the domain name server during each of a plurality of time periods. 
     
     
       46. The system of  claim 39 , wherein the processor is further operable to communicate the first network address to the client when the first site is available and the second site is not available. 
     
     
       47. The system of  claim 39 , wherein the processor is operable to communicate the first network address followed by the second network address to the client based also on at least one of a load placed on each of the first and second sites, a response time of each of the first and second sites, and a locality of the client to each of the first and second sites. 
     
     
       48. The system of  claim 47 , wherein the processor is further operable to communicate the second network address followed by the first network address to the client based on the determination that the first site and the second site are available and at least one of the load placed on each of the first and second sites, the response time of each of the first and second sites, and the locality of the client to each of the first and second sites. 
     
     
       49. The system of  claim 39 , wherein the first site includes a first database and the second site includes a second database, the databases operable to synchronize information in the first and second databases. 
     
     
       50. The system of  claim 49 , wherein the first database is operable to synchronize the information by:
 making first changes to the information in the first database; 
 storing the first changes in at least one change table; 
 communicating the first changes in the change table to the second database; receiving second changes from the second database; and 
 replicating the second changes to the information in the first database. 
 
     
     
       51. The system of  claim 50 , wherein the first database is further operable to: combine first changes that affect different entries in the row;
 delete at least one of a plurality of first changes that affect one or more common entries in the row; 
 determine if any of the second changes conflict with the first changes; and delete one of the first and second changes that conflict. 
 
     
     
       52. The system of  claim 39 , wherein the web servers are operable to execute stateless applications. 
     
     
       53. The system of  claim 39 , wherein the client is operable to use the first network address until the first network address fails and then use the second network address. 
     
     
       54. A method for multi-site clustering in a network, comprising:
 receiving a domain name from a client at a first domain name server; 
 identifying a first network address and a second network address associated with the domain name, the first network address associated with a first site that includes a load balancer coupled to a plurality of web servers and a first database, at least one of the web servers operable to execute stateless applications, the second network address associated with a second site that includes a second domain name server and a second database; 
 determining whether the first site is available to serve the client by:
 communicating a message to the web servers; 
 determining whether the web servers respond to the message; 
 instructing at least one of the web servers to execute a web page; 
 receiving the executed web page; and 
 determining if the executed web page contains at least one expected keyword; 
 
 determining whether the second site is available to serve the client by determining if at least one message has been received at the first domain name server from the second domain name server during each of a plurality of time periods; 
 communicating the first network address followed by the second network address to the client based on a determination that the first site and the second site are available and on at least one of a load placed on each of the first and second sites, a response time of each of the first and second sites, and a locality of the client to each of the first and second sites; and 
 communicating the second network address to the client based at least partially on a determination that the first site is not available. 
 
     
     
       55. A system for multi-site clustering in a network, comprising:
 at least one computer readable medium; and 
 logic encoded on the computer readable medium and operable when executed to:
 receive a domain name from a client; 
 identify a first network address and a second network address associated with the domain name, the first network address associated with a first site that includes a load balancer coupled to a plurality of web servers and a first database, at least one of the web servers operable to execute stateless applications, the second network address associated with a second site that includes a domain name server and a second database; 
 determine whether the first site is available to serve the client by:
 communicating a message to the web servers; 
 determining whether the web servers respond to the message; 
 instructing at least one of the web servers to execute a web page; receiving the executed web page; and 
 determining if the executed web page contains at least one expected keyword; 
 
 
 determine whether the second site is available to serve the client by determining if at least one message has been received from the domain name server during each of a plurality of time periods; 
 communicate the first network address followed by the second network address to the client based on a determination that the first site and the second site are available and on at least one of a load placed on each of the first and second sites, a response time of each of the first and second sites, and a locality of the client to each of the first and second sites; and 
 communicate the second network address to the client based at least partially on a determination that the first site is not available. 
 
     
     
       56. A system for multi-site clustering in a network, comprising:
 a memory operable to store a first network address and a second network address associated with a domain name; and 
 at least one processor operable to:
 receive the domain name from a client; 
 identify the first network address and the second network address associated with the domain name, the first network address associated with a first site that includes a load balancer coupled to a plurality of web servers and a first database, at least one of the web servers operable to execute stateless applications, the second network address associated with a second site that includes a domain name server and a second database; determine whether the first site is available to serve the client by:
 communicating a message to the web servers; 
 determining whether the web servers respond to the message; instructing at least one of the web servers to execute a web page; 
 receiving the executed web page; and 
 determining if the executed web page contains at least one expected keyword; 
 
 
 determine whether the second site is available to serve the client by determining if at least one message has been received from the domain name server during each of a plurality of time periods; 
 communicate the first network address followed by the second network address to the client based on a determination that the first site and the second site are available and on at least one of a load placed on each of the first and second sites, a response time of each of the first and second sites, and a locality of the client to each of the first and second sites; and 
 communicate the second network address to the client based at least partially on a determination that the first site is not available.

Join the waitlist — get patent alerts

Track US7000016B1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.