Patent Document

CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    The present application is a continuation of, and claims the priority benefit of, U.S. Nonprovisional patent application Ser. No. 13/154,399, filed Jun. 6, 2011, titled “Synchronization of Configuration File of Virtual Application Distribution Chassis”, now U.S. Pat. No. 9,154,577, issued on Oct. 6, 2015. The disclosure of the above application is hereby incorporated by reference in its entirety, including all references cited therein. 
     
    
     FIELD 
       [0002]    This invention relates generally to data communications, and more specifically, to a virtual cluster system. 
       BACKGROUND 
       [0003]    Web services and cloud computing are deployed in an unprecedented pace. New servers are unloaded and installed at datacenters every day. Demands of web services and corporate computing come from many market segments. Consumer oriented services include mobile apps such as iPhone™ apps, iPad™ apps, Android™ apps, mobile applications such as location based services, turn-by-turn navigation services, e-book services such as Kindle™, video applications such as YouTube™ or Hulu™, music applications such as Pandora™ or iTunes™, Internet television services such as Netflix™, and many other fast growing consumer Web services. On the corporate front, cloud computing based services such as Google™ docs, Microsoft™ Office Live and Sharepoint™ software, Salesforce.com™&#39;s on-line software services, tele-presence and Web conferencing services, and many other corporate cloud computing services. 
         [0004]    More and more servers are deployed to accommodate the increasing computing needs. These servers are typically managed by service controllers such as server load balancers (SLB) or application delivery controllers (ADC). These controllers manage the load balancing and delivery of service sessions from client host computers to servers. As more servers are deployed, more controllers are deployed accordingly. These network controllers can be pooled together for several significant purposes—to provide scalable services and solutions when dealing with large number of users; to offer high availability of service when dealing with possible unscheduled or scheduled unavailability of a server; to help ease the complexity of administration and management of a larger number of controllers. The controllers in a cluster pool work in tandem with each other in order to provide a consistent service to the users. If there is a configuration change to a controller in a cluster, the change can have a significant adverse effect on operation of other controllers in the cluster if the change conflicts with existing configurations of these controllers. Often, the totality of existing configuration of the cluster is recorded in a configuration file. All controllers in the cluster must adhere to the configuration according to the configuration file for proper operation of the controllers in the cluster. When there is a change of configuration, the configuration file must be updated to include the change. A new configuration file combining the new configuration change and the existing configuration file becomes the most recent configuration file. The new configuration file is to be informed to all controllers in the cluster. If one controller in the cluster becomes unavailable and available again, the newly available controller needs to apply the configuration in the new configuration file in order to work in tandem with other controllers in the cluster. 
         [0005]    Therefore, there is a need for a method for a virtual chassis system to synchronize a configuration file in the cluster of controllers. 
       SUMMARY 
       [0006]    This summary is provided to introduce a selection of concepts in a simplified form that are further described in the Detailed Description below. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
         [0007]    According to some embodiments, the present technology is directed to a method for synchronizing configuration files by a master blade of a virtual application distribution chassis comprising a plurality of blades, comprises: processing a configuration command received from an administrative host by the master blade; determining that the received configuration command applies changes to at least one network application implemented by one or more blades of the virtual application distribution chassis; updating a first configuration file with the received configuration command and generating an updated tag associated with the updated first configuration file, the updated first configuration file comprising the received configuration command; sending a first configuration message to one or more slave blades of the plurality of blades informing of the updated configuration file; in response to the configuration message informing the one or more slave blades of the updated configuration file, receiving a request for the updated configuration file from at least one slave blade; and sending a second configuration message comprising the updated first configuration file and updated tag. 
         [0008]    In one aspect of the present disclosure, the processing a configuration command received from an administrative host by the master blade comprises identifying at least one slave blade from the plurality of blades in the virtual application distribution chassis for the configuration command. 
         [0009]    In various aspects of the present disclosure, the updated tag is a time stamp, integer, or revision number. 
         [0010]    In various embodiments, the master blade of the virtual application distribution chassis is a server load balancer or application delivery controller. 
         [0011]    System and computer readable storage medium corresponding to the above-summarized methods are also described and claimed herein. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE FIGURES 
         [0012]    Embodiments are illustrated by way of example and not by limitation in the figures of the accompanying drawings, in which like references indicate similar elements. 
           [0013]      FIG. 1  illustrates an exemplary embodiment of a virtual application distribution chassis connecting to an administrative host computer. 
           [0014]      FIG. 2  illustrates components of an exemplary embodiment of a virtual application distribution chassis. 
           [0015]      FIG. 3  illustrates connectivity of blades in an exemplary embodiment of a virtual application distribution chassis. 
           [0016]      FIG. 4  illustrates a virtual application distribution chassis processing a configuration command according to an exemplary embodiment. 
           [0017]      FIG. 5  illustrates a master blade updating a configuration file after processing a configuration command according to an exemplary embodiment. 
           [0018]      FIG. 6  illustrates a master blade synchronizing an updated configuration file to a slave blade according to an exemplary embodiment. 
           [0019]      FIG. 7  illustrates a new slave blade synchronizing a configuration file in the process of joining the virtual application distribution chassis according to an exemplary embodiment. 
       
    
    
     DETAILED DESCRIPTION 
       [0020]    The following description is presented to enable one of ordinary skill in the art to make and use the invention and is provided in the context of a patent application and its requirements. Various modifications to the embodiment will be readily apparent to those skilled in the art and the generic principles herein may be applied to other embodiments. Thus, the present invention is not intended to be limited to the embodiment shown but is to be accorded the widest scope consistent with the principles and features described herein. 
         [0021]    The present invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the present invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. 
         [0022]    Furthermore, the present invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
         [0023]    The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. 
         [0024]    A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
         [0025]    Input/output or I/O devices (including but not limited to keyboards, displays, point devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. 
         [0026]    Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. 
         [0027]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified local function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
         [0028]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0029]      FIG. 1  illustrates an exemplary embodiment of a virtual application distribution chassis  300  managed by an administrative host  100 . The administrative host  100  may also be referred to herein as host  100 . 
         [0030]    Administrative host  100  is a computing device with network access capabilities. As shown in  FIG. 2 , the host  100  is operationally coupled to a processor  103 , a computer readable medium  104  and a network interface  105 . The computer readable medium  104  stores computer program code executable by the processor  103 . The network interface  105  connects to data network  153 . Examples of network interface  105  include Ethernet, WiFi, mobile network interface, Bluetooth, WiMAX, digital subscriber line (DSL), cable interface, broadband network interfaces such as T 1  or T 3 , optical network interfaces, wireless network interfaces or other data network interfaces. In one embodiment, host  100  is a workstation, a desktop personal computer or a laptop personal computer. In one embodiment, host  100  is a Personal Data Assistant (PDA), a smartphone, a tablet, or a cellular phone. 
         [0031]    In  FIG. 1 , the virtual application distribution chassis  300  includes a plurality of blades such as blade  310 , blade  312 , blade  314  and blade  316 . Each blade, for example blade  310 , as illustrated in  FIG. 2 , is operationally coupled to a processor  303 , a computer readable medium  304  and a network interface  305 . The computer readable medium  304  stores computer readable program code, which when executed by the processor  303 , implements the various exemplary embodiments as described herein. Returning to  FIG. 1 , in one embodiment, virtual application distribution chassis  300  implements at least a network application  350 , such as a server load balancing application, an application delivery controlling application, a service delivery application, a traffic managing application, a security gateway application, a component of a firewall system, a component of a virtual private network (VPN), a load balancer for video servers, or a service gateway to distribute load to a plurality of servers. The network application  350  is implemented by one or more blades of virtual application distribution chassis  300 . In one embodiment, the network application  350  is implemented by all the blades of virtual application distribution chassis  300 . In one embodiment, the network application  350  is implemented by one or more, but not all, blades of virtual application distribution chassis  300 . The network interface  305  ( FIG. 2 ) connects to data network  153 . In  FIG. 1 , blades  310 ,  312 ,  314 ,  316  form the virtual application distribution chassis  300  through their connections to the data network  151 . In one embodiment, data network  151  connects virtual application distribution chassis  300  to data network  153 . In one embodiment, data network  151  includes data network  153 . In one embodiment, data network  151  resides in a data center, spans across multiple data centers over a wide area network such as optical network, or spreads over multiple buildings in a campus area network. 
         [0032]    Blade  310  includes storage  306  ( FIG. 2 ) to store various data necessary for the execution of the program code stored in the computer readable medium  304 , as well as other data. In one embodiment, storage  306  includes a memory module, a hard disk, a solid state disk, a flash memory module, a dynamic memory module, a memory cache, or a removable memory module, such as a removable hard disk or flash memory drive. 
         [0033]    Assume that blade  310  is the master blade of the virtual application distribution chassis  300 . Master blade  310  additionally includes management interface  307 , as illustrated in  FIG. 2 . Master blade  310  uses management interface  307  to communicate with administrative host  100 . Management interface  307  is a network interface connecting to data network  153 . In one embodiment, network interface  305  and management interface  307  reside on the same network card. In one embodiment, management interface  307  resides in a different network card from network interface  305 . 
         [0034]    In  FIG. 1 , administrative host  100  sends a configuration command  113  to master blade  310  using data network  153 . Master blade  310  receives the configuration command  113  over management interface  307 . In this embodiment, configuration command  113  is applied to configure one or more blades of virtual application distribution chassis  300 . For example, configuration command  113  configures network interface of blade  314  such as setting up an Ethernet address, an IP address, of an Ethernet port of blade  314 . In another example, configuration command  113  configures a buffer size in the network interface of blade  312 . 
         [0035]    In another embodiment, configuration command  113  is applied to configure a network application  350  of virtual application distribution chassis  300 . For example, the network application  350  is a server load balancing application, and configuration command  113  sets up a server load balancer policy for a server. In one example, the network application  350  is a network traffic management application, and configuration command  113  configures a quality of service parameters for the traffic management application. In another example, the network application  350  is a VPN firewall application, and configuration command  113  configures a company user account for the VPN access. In another example, the network application  350  is a high availability service for another network application, and configuration command  113  configures the high availability service. 
         [0036]    In one embodiment, the network application configuration command  113  applies to all the blades, when the network application  350  is implemented by all the blades. In one embodiment, the network application configuration command  113  applies to one or more of the blades implementing the network application  350 . 
         [0037]    Data network  153  connects the host  100  and the virtual application distribution chassis  300 , also referred to as virtual cluster system  300 . In various embodiments, data network  153  is an Internet Protocol (IP) network, a corporate data network, a regional corporate data network, an Internet service provider network, or a residential data network. Data network  153  includes a wired network such as Ethernet, and/or a wireless network such as a WiFi network, or cellular network. 
         [0038]    Data network  151  connects virtual cluster system  300  to data network  153 . In one embodiment, data network  151  resides in a data center, spans across multiple data centers over a wide area network such as optical network, or spreads over multiple buildings in a campus area network. 
         [0039]      FIG. 3  illustrates connectivity of the blades of an embodiment of a virtual application distribution chassis according to the present invention. In this embodiment, blade  310  is a separate piece of hardware from the other blades. Blade  310  connects to the other blades  312 ,  314 , and  316  over data network  151 . In one embodiment, data network  151  includes a plurality of network switches such as switch  414 , switch  412  and switch  416 . Network switch  412  or network switch  414  is a networking device connecting a plurality of blades and network switches. In one embodiment, switch  412  is an Ethernet switch, an IP router, an optical network switch, WAN network equipment, an ATM switch, a MPLS switch, a layer-2 network switch/hub/bridge, or a layer-3 network switch/router. In the embodiment illustrated in  FIG. 3 , switch  412  connects blade  312 , blade  310  and switch  416 ; switch  414  connects blades  314 , blade  316  and switch  416 . In this embodiment, blade  312  communicates with blade  310  using switch  412 , and with blade  316  using switches  412 ,  416 , and  414 . 
         [0040]    In one embodiment, switches  412 ,  414 , and  416  reside in a same physical location, such as a data center. In one embodiment, switches  412 ,  414 , and  416  reside in different locations, such as in two or more data centers. Assume that in this embodiment, blades  310 ,  312 ,  314  and  316  reside in different data centers. 
         [0041]    Blade  310  communicates with the other blades by sending and receiving a virtual cluster system (VCS) message  500 . In one embodiment blade  310  sends virtual cluster system message  500  using a broadcast network address such as an Ethernet broadcast address. In one embodiment, virtual cluster system message  500  uses a multicast address, such as an Ethernet multicast address, an IP multicast address, or other multicast network address. In one embodiment, blade  310  establishes a communication session (not shown) with blade  312  and sends virtual cluster system message  500  to blade  312  using the communication session. Blade  310  establishes a separate communication session with each of the other blades to send virtual cluster system message  500  to the other blades. Examples of the communication session include an UDP session, a TCP session, an IP-based communication session, a peer-to-peer communication session, a unicast communication session or other form of data communication session. In one embodiment, blade  310  receives virtual cluster system message  500  using a broadcast, a multicast address or a communication session with blade  312  or one of the other blades. 
         [0042]    In one embodiment, blade  310  sends and receives a configuration message  502  which is a type of virtual cluster system message  500 . Configuration message  502  communicates a configuration command  113  to the receiving blades. The configuration command  113  in the configuration message  502  may be the actual configuration command sent by the host  100 , or may instead be a command which implements the host&#39;s configuration command at the receiving slave blade. 
         [0043]      FIG. 4  illustrates virtual application distribution chassis  300  processing a configuration command  113  according to an embodiment of the present invention. Administrative host  100  sends configuration command  113  to virtual cluster system  300 . 
         [0044]    Master blade  310  of virtual cluster system  300  receives configuration command  113  from administrative host  100  ( 800 ). Master blade  310  determines that configuration command  113  is to be applied by one or more slave blades. For purposes of illustration, assume that master blade  310  determines that configuration command  113  is to be applied by slave blade  314  ( 801 ). In one embodiment, administrative host  100  specifies an identity of blade  314  in configuration command  113 . In one scenario, configuration command  113  is a configuration of a network interface of blade  314 . Administrative host  100  includes blade  314  identity in configuration command  113 . Master blade  310  determines that the configuration command  113  is to be applied by blade  314  from the blade  314  identity in configuration command  113 . In one embodiment, configuration command  113  includes an identity of the network interface. Master blade  310  determines that the configuration command  113  is to be applied by blade  314  using the network interface identity in configuration command  113 . In one embodiment, master blade  310  stores in storage  306  a plurality of network interface identities and identities of the blades in virtual application distribution chassis  300 , where each network interface identity is associated with a blade identity. Master blade  310  matches the network interface identity with the plurality of network interface identities in storage  306 . Master blade  310  obtains the blade identity of the matching network interface in the storage module  306 . 
         [0045]    In one embodiment, configuration command  113  applies to network application  350  which is to be applied by all of the blades implementing network application  350 . Master blade  310  determines based on configuration command  113  that all of these blades are to apply the configuration command  113 . In one embodiment, master blade  310  stores in storage  306  a plurality of configuration commands which are applicable to all of these blades. Master blade  310  matches configuration command  113  with one or more of the plurality of configuration commands in storage  306  and determines that the configuration command  113  is to be applied by all of these blades. For this embodiment, the processing of the configuration command  113  by the master blade  310  with blade  314  is repeated for each of the other blades of the virtual application distribution chassis  300 . 
         [0046]    In one embodiment, configuration command  113  includes an identity of blade  314  and a configuration for network application  350 . Master blade  310  determines that the configuration command  113  is to be applied by blade  314  based on the blade  314  identity from configuration command  113 . 
         [0047]    In response to determining that the configuration command  113  is to be applied by blade  314 , master blade  310  sends a configuration message  502  to slave blade  314  ( 804 ). In various embodiments, master blade  310  includes configuration command  113  in configuration message  502 . The configuration message  502  is delivered to slave blade  314  is as described above with reference to  FIG. 3 . Slave blade  314  receives configuration message  502  and retrieves configuration command  113  ( 816 ). Slave blade  314  applies a configuration or change according to configuration command  113  ( 818 ). Configuration command  113  may apply to the network interface  314   b  of slave blade  314  or an implementation of a network application  314   a  by slave blade  314 . After slave blade  314  completes the application of the configuration command  113 , slave blade  314  replies to master blade  310  ( 819 ). Slave blade  314  sends a reply configuration message  503  as a response to master blade  310  to indicate that the configuration command  113  has been applied by blade  314 . Master blade  310  receives the reply configuration message  503  in step  807  from slave blade  314  ( 807 ). 
         [0048]      FIG. 5  illustrates a master blade updating a configuration file after processing a configuration command according to an embodiment of the present invention. Master blade  310  includes storage  306 . Storage  306  includes a most recent configuration file  330 . Configuration file  330  includes a plurality of configuration commands recently received and processed by virtual application distribution chassis  300 . Upon completing processing configuration command  113 , master blade  310  updates configuration file  330  to configuration file  331 , which includes configuration commands of configuration file  330  and configuration command  113 . Configuration file  331  is more recent than configuration file  330 . In various embodiments, master blade  310  replaces configuration file  330  with configuration file  331 , or archives configuration file  330  to a different location in storage  306 . For example, master blade  310  changes the file name of configuration file  330 . Configuration file  331  becomes the most recent configuration file. In order to distinguish configuration file  331  as more recent than configuration file  330 , configuration file  330  includes a tag  340 . Master blade  310  puts a tag  341  different from tag  340  in configuration file  331 . Tag  341  indicates that configuration file  331  is more recent than configuration file  330 . In one embodiment, tag  341  is a time stamp. Tag  341  is a time stamp when master blade  310  creates configuration file  331 . Tag  341  is a time stamp later than tag  340 , and therefore indicates configuration file  331  is more recent than configuration file  330 . In this embodiment, master blade  310  includes a clock (not shown). Master blade  310  obtains the current time from the clock and uses the current time as the time stamp for tag  341 . In one embodiment, master blade  310  obtains the current time after receiving the response from slave blade  314  as described above with reference to  FIG. 4 . 
         [0049]    In one embodiment, tag  341  is a number. Tag  341  is a number larger than tag  340  to indicate configuration file  331  is more recent than configuration file  330 . For example, tag  341  is an integer, and tag  341  is one larger than tag  340 . In one embodiment, master blade  310  obtains tag  340  from configuration file  330  and calculates tag  341  by adding one to tag  340 . 
         [0050]    In one embodiment, tag  341  is a revision number. Master blade  310  obtains tag  340  from configuration file  330  and calculates a newer revision number based on tag  340 . Master blade  310  puts the newer revision number as tag  341 . 
         [0051]    After master blade  310  creates configuration file  331 , master blade  310  informs the slave blades of configuration file  331  in order to synchronize configuration file  331  with the configuration files stored locally by the slave blades. Master blade  310  sends a configuration message  505  to slave blades  312 ,  314  and  316  to inform them of configuration file  331 . In one embodiment, master blade  310  includes tag  341  in configuration message  505 . Slave blades  312 ,  314  and  316  receives configuration message  505  and retrieves tag  341 . 
         [0052]    In one embodiment, master blade  310  includes configuration file  331  in configuration message  505 . 
         [0053]      FIG. 6  illustrates a master blade synchronizing an updated configuration file with a slave blade according to an embodiment of the present invention. Master blade  310  sends configuration message  505  to slave blade  312 . Slave blade  312  receives configuration message  505  and retrieves tag  341  from configuration message  505 . Slave blade  312  includes storage  413 . In one embodiment, storage  413  includes configuration file  330  being the most recent configuration file that slave blade  312  had obtained from a master blade. Configuration file  330  in storage  413  includes tag  340 . Upon retrieving tag  341  from configuration message  505 , slave blade  312  obtains tag  340  from configuration file  330  in storage  413 . Slave blade  312  compares tag  340  and tag  341 , and determines that tag  341  is more recent than tag  340 . Thus, slave blade  312  determines that there is a more recent configuration file  331  than configuration file  330  in storage  413 . In one embodiment, configuration message  505  does not include tag  341 . Upon receiving configuration message  505 , slave blade  312  sends a request configuration message to master blade  310  for tag  341 , and master blade  310  responds with tag  341  using another configuration message. 
         [0054]    In response to determining that tag  341  is more recent than tag  340 , slave blade  312  sends a request configuration message  507  to master blade  310  to request a configuration file. In one embodiment, slave blade  312  places tag  341  in request configuration message  507 . Master blade  310  receives the request configuration message  507  and retrieves tag  341 . Master blade  310  finds a match of tag  341  from configuration message  507  against tag  341  from configuration file  331  in storage  306 . Master blade  310  sends configuration file  331  to blade  312 . In one embodiment, master blade  310  sends configuration file  331  in a configuration message  509  to slave blade  312 . In one embodiment, master blade  310  sends configuration file  331  using a separate file transfer communication session with slave blade  312 . 
         [0055]    In one embodiment, request configuration message  507  does not include tag  341 . After receiving request configuration message  507 , master blade  310  automatically sends the most recent configuration file, say configuration file  331 , to slave blade  312 . 
         [0056]    After receiving configuration file  331  from configuration message  509  or a file transfer communication session, slave blade  312  stores configuration file  331  and tag  341  into storage  413  of blade  312 . In various embodiments, slave blade  312  replaces configuration file  330  by configuration file  331 , or stores configuration file  330  in a different location or using a different file name in storage  413 . Configuration file  331  becomes the most recent configuration file for slave blade  312 . 
         [0057]    In one embodiment, master blade  310  has a configuration file more recent than configuration file  331 . For example, between the sending of the configuration message  505  by the master blade  310  and the sending of the reply configuration message  507  by the slave blade  312 , another configuration command may have been received from the host  100 , resulting in a further configuration change. In this case, master blade  310  sends the more recent configuration file to slave blade  312 , despite the fact that slave blade  312  asked for configuration file  331  corresponding to tag  341 . 
         [0058]    In one embodiment, master blade  310  sends configuration message  502  about tag  341  more than once. In this way, slave blade  312  will receive at least one copy of the configuration message  502  in case slave blade  312  fails to receive the other copies of configuration message  502 . In one embodiment, master blade  310  sends configuration message  502  periodically, such as once every 30 seconds, 1 second, 5 minutes, or 100 milliseconds. 
         [0059]      FIG. 7  illustrates a new slave blade synchronizing a configuration file in the process of joining the virtual application distribution chassis according to an embodiment of the present invention. Slave blade  316 , a blade of virtual application distribution chassis  300 , re-joins virtual application distribution chassis  300 . Slave blade  316  may have failed while master blade  310  was processing configuration command  113 . Slave blade  316  becomes available and re-joins virtual application distribution chassis  300 . Slave blade  316  includes storage  417  with the configuration file  330  stored in the storage  417 . In one embodiment, slave blade  316  obtains configuration file  330  as the most recent configuration file received earlier from a master blade such as master blade  310 . Slave blade  316  retrieves configuration file  330  from storage  417  and applies the plurality of configuration commands in configuration file  330 . Slave blade  316  joins virtual application distribution chassis  300  with a blade configuration associated to configuration file  330 . 
         [0060]    Slave blade  316  receives configuration message  505  from master blade  310 , and retrieves tag  341  from configuration message  505 . Slave blade  316  compares tag  341  with tag  340  of configuration file  330  in storage  417 . Slave blade  316  determines tag  341  is more recent than tag  340 . Slave blade  316  obtains configuration file  331  from master blade  310 , as described above with reference to  FIG. 6 . 
         [0061]    Once slave blade  316  obtains configuration file  331 , slave blade  316  applies configuration commands in configuration file  331 . In one embodiment, slave blade  316  resets itself to clear the configuration based on configuration file  330 . After slave blade  316  is reset, slave blade  316  finds configuration file  331  in storage module  416  and applies configuration commands in configuration file  331 . In one embodiment, slave blade  316  applies configuration commands in configuration file  331  without clearing the configuration based on the configuration commands in configuration file  330 . In one embodiment, slave blade  316  undoes configuration commands based on configuration file  330 , and applies configuration commands in configuration file  331 . 
         [0062]    After slave blade  316  applies configuration commands in configuration file  331 , slave blade  316  rejoins virtual application distribution chassis  300 . When slave blade  316  receives configuration message  502  and obtains tag  341  from configuration message  505 , slave blade  316  compares tag  341  of configuration message  505  with tag  341  from configuration file  331  in storage module  416 . Slave blade  316  determines the two tags are the same and configuration file  331  is the most recent configuration file indicated by master blade  310 . 
         [0063]    Although the present invention has been described in accordance with the embodiments shown, one of ordinary skill in the art will readily recognize that there could be variations to the embodiments and those variations would be within the spirit and scope of the present invention. Accordingly, many modifications may be made by one of ordinary skill in the art without departing from the spirit and scope of the appended claims.

Technology Category: 5