text:
On a brisk autumn day in 1686, eighteen-year-old Nella Oortman arrives in Amsterdam to begin a new life as the wife of illustrious merchant trader Johannes Brandt. But her new home, while splendorous, is not welcoming. Johannes is kind yet distant, always locked in his study or at his warehouse office-leaving Nella alone with his sister, the sharp-tongued and forbidding Marin.Read more...
- Retail Price:
(Save 78%)
FREE Shipping for Club Members
What is a Bargain?
- [-] Other Available FormatsOur PriceNew & Used MarketplaceThe Miniaturist (Paperback)
Published: 2015-06-02
Publisher: Ecco Press$16.99The Miniaturist (Large Print Paperback)
Published: 2014-08-26
Publisher: HarperLuxe$26.99The Miniaturist (Audio Compact Disc - Unabridged)
Published: 2014-08-26
Publisher: HarperCollins$44.99
Customers Also Bought
On a brisk autumn day in 1686, eighteen-year-old Nella Oortman arrives in Amsterdam to begin a new life as the wife of illustrious merchant trader Johannes Brandt. But her new home, while splendorous, is not welcoming. Johannes is kind yet distant, always locked in his study or at his warehouse office-leaving Nella alone with his sister, the sharp-tongued and forbidding Marin.
But Nella's life changes when Johannes presents her with an extraordinary wedding gift: a cabinet-sized replica of their home. To furnish her gift, Nella engages the services of a miniaturist-an elusive and enigmatic artist whose tiny creations mirror their real-life counterparts in eerie and unexpected ways...
Johannes's gift helps Nella pierce the closed world of the Brandt household. But as she uncovers its unusual secrets, she begins to understand-and fear-the escalating dangers that await them all. In this repressively pious society where gold is worshipped second only to God, to be different is a threat to the moral fabric of society, and not even a man as rich as Johannes is safe. Only one person seems to see the fate that awaits them. Is the miniaturist the key to their salvation...or the architect of their destruction?
Enchanting, beautifully written, and exquisitely suspenseful, The Miniaturist is a magnificent story of love and obsession, betrayal and retribution, appearance and truth.
- Publisher: Ecco Press
- Publish Date: August 2014
- Page Count: 397
Related Categories
Publishers Weekly® Reviews
- Reviewed in: Publishers Weekly, page .
- Review Date: 2014-06-23
- Reviewer: Staff
Late 17th-century Amsterdam is the sumptuous backdrop for this debut novel about a young Dutch girl from the village of Assendelft, Nella Oortman, who is chosen to be the bride of Johannes Brandt, a wealthy merchant with a shocking secret. Not long after Nella's arrival in the city, her enigmatic husband presents her with a beautifully wrought cabinet, an exact replica of the house in which they live with Brandt's sister, Marin, and their loyal servants. Nella engages a miniaturist to fill it and begins to encounter mysteries no one is willing to explain, secrets in which everyone in the household is implicated. The elusive miniaturist, too, seems to know more than Nella, as reflected in the tiny dolls and furniture he creates for the cabinet. The artisan may even be able to predict the future: he sends Nella portentous objects she has not commissioned, such as a cradle and a perfect replica of Brandt's beloved dog stained with blood. As in all good historical novels, the setting is a major character; in this case the city of Amsterdam, with its waterways and warehouses, confectioners' shops, and kitchens, teems with period detail. Myriad plot twists involve Brandt's commercial activities, especially the stores of precious sugar cones from Surinam, and the tragic, fatal consequences of illicit love affairs. Strangely enough, however, the central mystery, the miniaturist's uncanny knowledge of the future, is never solved, and the reader is left unsatisfied. (Aug.)
Artful drama meets historic Amsterdam
Fans of historical fiction will be drawn to The Miniaturist, a fantastical tale from British debut novelist Jessie Burton that takes place in 17th-century Amsterdam. The story begins as 18-year-old Nella Oortman arrives at the home of her wealthy merchant husband, Johannes Brandt. Surprisingly, though, he is nowhere to be found. In his stead is his strictly religious sister, Marin; housemaid Cornelia; and his manservant, a former slave named Otto. Nella, a country girl, is forced to forge her way alone as head of the household.
Upon Johannes' return, he doesn't seem remotely interested in visiting the marriage bed. Marin is reluctant to hand over the reins to the household and continues to decide what foods they must eat (plain, cold herring) and how much money they are allowed to spend (practically none, in spite of their wealth). Still, Johannes surprises his new bride with an exorbitant gift: a cabinet-sized replica of their home, based on an actual doll house owned by the real-life Petronella Oortman, which can be seen at the Rijksmuseum in Amsterdam.
Disregarding Marin's monetary anxiety, Nella commissions a miniaturist to furnish her doll house. The artisan's work is exquisite, but soon the miniaturist begins creating objects that Nella never asked for and which the miniaturist could not have possibly seen: their whippets, the oil paintings in their bedchamber and finally, replicas of the members of the household. Nella demands that the miniaturist stop, but the exquisitely crafted items keep arriving, slowly morphing to reveal lethal secrets that hide in the Brandts' walls.
The fantastical elements of the story are intriguing; however, the novel takes a disappointing turn with an unsatisfying resolution to the mystery of the miniaturist. Regardless, The Miniaturist excels in depicting Amsterdam and its wealthy upper class, and lovers of art and of Amsterdam will be drawn to Burton's imaginative story, which flows as effortlessly as water down a canal.
RELATED CONTENT: Read a Q&A with Jessie Burton about The Miniaturist.
This article was originally published in the September 2014 issue of BookPage. Download the entire issue for the Kindle or Nook.


text:
Sitter in Fort Worth
I am looking to help a family with their Childcare need. I am currently a student at university of phoenix taking classes in child psychology. I am taking online classes and have a very flexible schedule to work with. I have a strong passion for children so you can ensure that your child will be in good hands I am also up to date on my CPR, FIRST AID, SHAKEN BABY classes. I look forward to meeting with you.
Sitter Details
|Email Address
|Phone Number
|Provider Type
Notes made here will only be seen by you. If you want to message the owner of this listing
More in Fort Worth, Texas
Find Babysitting Near Fort Worth
Featured Child Care Providers near Fort Worth, TX

subset: commoncrawl


text:
MLB, Players Association reportedly reach deal on new collective bargaining agreement
Players and owners reached a 5-year deal
Baseball averted a labor meltdown, as the Major League Baseball Players Association and Major League Baseball agreed to a new Collective Bargaining Agreement just hours before the deadline, per Ken Rosenthal of Fox Sports.
The new term of the CBA is five years, per Jeff Passan of Yahoo Sports.
The offseason, and regular season, will continue as scheduled. Baseball, which had a World Series cancelled in 1994 with a strike that raged into the 1995 season, has had relative labor peace since, now over two decades.
Despite soaring franchise values, steady attendance, and financial stability, negotiations for the new CBA were unexpectedly tense. The owners and players were reportedly at odds with several changes to the previous CBA that would have helped control player salaries and bonuses, including an international draft, draft-pick compensation, and changes to the current competitive-balance tax (commonly known as the "luxury tax").
The details aren't yet known, but among the major issues discussed were draft-pick compensation for free agents, something the players hoped to avoid; changes to the international bonus pool, and the luxury tax threshold.
From the owners' perspective, a strong luxury-tax penalty limits just how much of an advantage the richest teams in baseball have in the free agent market.
From the players' perspective, a heavy luxury-tax penalty, or a threshold set low enough to affect more than just the highest payroll teams, could force an overwhelming majority of teams to keep their payroll under a specific, arbitrary number, which sounded suspiciously close to a salary cap. The agreement means that both sides reached some common ground on this issue.
From 2006 to 2016, the luxury tax increased just over 38 percent, despite salaries increasing by approximately 56 percent over the same period, and the MLBPA and MLB could not agree how much of an increase to the threshold was necessary to balance the disparity.
Although it was unlikely that any regular season games were going to be at risk, the possible repercussions of not coming to an agreement before the deadline were still substantial. If the owners did to lock the players out, it would have paused the offseason. The Winter Meetings would have been effectively cancelled for MLB teams and representatives, and there would be a moratorium on trades, signings, and other roster moves, including the Rule 5 draft.
But now, the sport can continue its offseason, which is especially important now since the winter meetings start on Sunday in Maryland. Let the hot stove begin.
Via:: http://www.sbnation.com/mlb/2016/11/30/13799698/mlb-mlbpa-collective-bargaining-agreement


text:
Forgot your password? Enter the email address you signed up with and we will send you a link to create a new password.
Your password reset has been submitted to the address provided.
Standard character mark
Retractable pen that has a handcuff key incorporated in the end of the pen for use in law enforcement
Business in Pompton Plains, NJ


text:
How High Earners Remain Poor
The point is … you don't need to do "everything" to be rich. Take just one main line of business. Learn the ropes in and out. Understand the dynamics well and you will surely make all the monies you need with that one line. Diversify only after the main line of business can stand on its own.


text:
Alumni & Friends
Please mark your calendars and signup (RSVP) for the 2017 MSU-CVM Fall Alumni Weekend! The reunion will be held on October 13-14, 2017. All Alumni are invited to attend and the honor years are: Class of 2012, Class of 2007, Class of 2002, Class of 1997, Class of 1992, Class of 1987, and Class of 1982.
Schedule of Events: For the 2017 MSU-CVM Fall Alumni Weekend!
Welcome, MSU-CVM Alumni! We love hearing from you, sharing the good things you're doing, and getting your great ideas. Are you keeping up with us on Facebook? We share lots of stories and photos relevant to our MSU-CVM alumni, so be sure to check us out our very own MSU-CVM Alumni group on Facebook by clicking here.
We're also interested in keeping up with where you are and what you're doing. Has your contact information changed recently? If so, please update that information here.


text:
LEGO 4032/4778/7688/2928, air plane version, sealed
Sold for:
Start Free Trial
or Sign In to see what it's worth.
- Sold Date:
- Source: eBay
You can collect 4 sets of Lego air version airplane one time!4032 Passenger Plane - LEGO Air Version
137 Parts, 3 Minifigs, 2004 4778 Desert Biplane
104 Parts, 1 Minifig, 2005 7688 The flight show brickset consists of an airplane and a service car.
The set consists of 105 pieces.
Suggested age: 5-12 years 2928 Airline Promotional Set MISB only available on inflight sales on a few airlines - not available in any domestic store. 1. This item is brand new never used or opened. 2. I only accept PAYPAL as payment option . PAYMENTS EXPECTED WITHIN 5 DAYS OF AUCTION CLOSE. 3. Serious bidders only! Do Not bid if you Don't want to pay. 4. Items will usually ship within 24 to 48 hours of receipt of payment. 5. International shipping has an average delivery time of 7-14 business days. You will receive a tracking number after it is sent. 6. Any items returned to sender will be charged a 25% restocking fee, no exceptions. We do not accept returns
For more information, feel free to contact us. Ready to land? Come in to our airport!


text:
|Publication number
|Publication type
|Application number
|Publication date
|Dec 6, 2005
|Filing date
|May 31, 2000
|Priority date
|May 31, 2000
|Fee status
|Publication number
|Marcos N. Novaes, Gregory D. Laib, Jeffrey S. Lucash, Ronald T. Goering, George Sohos
|Original Assignee
|International Business Machines Corporation
|Export Citation
|BiBTeX, EndNote, RefMan
|Patent Citations (24), Non-Patent Citations (1), Referenced by (53), Classifications (16), Legal Events (6)
|External Links: USPTO, USPTO Assignment, Espacenet
This application contains subject matter which is related to the subject matter of the following applications, each of which is assigned to the same assignee as this application and filed on the same day as this application. Each of the below listed applications is hereby incorporated herein by reference in its entirety:
This invention relates, in general, to a distributed computing environment, and in particular, to managing one or more clusters of nodes of a distributed computing environment.
Distributed systems are highly-available, scalable systems that are utilized in various situations, including those situations that require a high-throughput of work or continuous or nearly continuous availability of the system.
A distributed system that has the capability of sharing resources is referred to as a cluster. A cluster includes operating system instances, which share resources and collaborate with each other to perform system tasks. While various cluster systems exist today (such as the RS/6000 SP system offered by International Business Machines Corporation), further enhancements to the existing cluster systems are still desired. For example, enhancements are desired to facilitate the administration of cluster systems.
The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of managing identifiers of components of a distributed computing environment. The method includes, for instance, providing, by an operating system instance of the distributed computing environment, a unique identifier of a component of the distributed computing environment to a cluster of the distributed computing environment; and automatically managing by the cluster the unique identifier.
System and computer program products corresponding to the above-summarized methods are also described and claimed herein.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
In accordance with one or more aspects of the present invention, a distributed computing environment, which utilizes one or more copies of an operating system, is managed. Each copy of the operating system is configured such that it has access to a set of resources (e.g., processors, network interfaces, files, file systems, storage devices, peripherals, etc.). This access can be exclusive or shared with the other copies of the operating system. If the resources are to be shared, then the individual copies of the operating system collaborate and share the system resources that they control. In order to share the resources, the operating system copies negotiate the access, such that the integrity of the resources are preserved. For example, two copies of an operating system which need to write multiple blocks of data to a certain segment of a storage device negotiate the access to the segment, otherwise the order of the write operations may compromise the integrity of the data being written.
One example of a distributed computing environment incorporating and using aspects of the present invention is depicted in
In one example, distributed computing environment 100 includes eight (8) frames, each of which includes a plurality of processing nodes 106. In one instance, each frame includes sixteen (16) processing nodes (each having one or more processors). Each processing node is, for instance, a RISC/6000 computer running AIX, a UNIX based operating system. Each processing node within a frame is coupled to the other processing nodes of the frame via, for example, an internal LAN connection. Additionally, each frame is coupled to the other frames via LAN gates 104.
As examples, each LAN gate 104 includes either a RISC/6000 computer, any computer network connection to the LAN, or a network router. However, these are only examples. It will be apparent to those skilled in the relevant art that there are other types of LAN gates, and that other mechanisms can also be used to couple the frames to one another.
The distributed computing environment of
A distributed computing environment, which has the capability of sharing resources, is termed a cluster. In particular, a computing environment can include one or more clusters. For example, as shown in
There are two aspects in considering the membership of a node to a particular cluster. One aspect is related to the static configuration of the cluster. This aspect is referred to as the node definition (see
The static aspect of the node is different than its dynamic (or run-time) attribute, called cluster membership. The cluster membership refers to the fact that a node is considered to be a member of the cluster when it is defined operational (i.e., online). The term operational here alludes to the fact that the node is perceived by the other members of the cluster as a functional node; that is, a node which is capable of performing basic functions which are termed liveness tasks. As one example, a node performs a set of liveness tasks continuously, and reports to the other nodes on its ability to perform such tasks by sending to the other members of the cluster heartbeat messages at regular intervals.
The cluster membership can be viewed as a list of nodes, which are functioning as an integral part of the cluster at any point in time. This list is available to all nodes, and in an aspect of the present invention, the cluster architecture ensures that all nodes have access to the same membership list at any point in time, even in shared-nothing distributed systems. (A shared-nothing distributed system is a system in which the nodes do not have any shared physical resources, such as disks or memory.) In order to maintain an identical view of the particular data in such systems, sophisticated synchronization protocols are used, since the data has to be distributed to all nodes in atomic transactions.
Specific protocols are used to add or delete a node from the membership list. For example, the process by which a node is added to the membership list is called a node join process. Conversely, a node is deleted from the membership list by the node leave process. If a node is not listed in the cluster membership, the node has left the cluster.
Each cluster is managed by a cluster architecture, which includes a plurality of components. Each component executes one or more corresponding processes on one or more nodes of the cluster, as described in more detail herein. If the component executes a plurality of processes on a plurality of nodes, then the architecture is distributed across those nodes. A distributed architecture is only one example, however. One or more aspects of the present invention can be employed on a single or non-distributed system.
In one example, the components of the cluster architecture include a Distributed Configuration Manager (DCM) 400 (
In one embodiment, as shown in
Distributed Configuration Manager (DCM) subsystem 400 provides a copy of a computer program, referred to as a Distributed Configuration Manager Daemon (DCMD) 412, on each node that is to be configured as part of the cluster. The DCMD is the bootstrapping agent of the cluster. As such, the DCMD process is responsible for starting the other cluster components with the appropriate cluster configuration. The DCMD is also the process which stops the other cluster components when appropriate, such as in the case that a node is moved from one cluster to another. The DCMD is itself bootstrapped by the base operating system of the node, and is the only cluster component, in this example, to be bootstrapped directly by the operating system.
The DCMD maintains a collection of files in local storage of each node, which are related to one or more cluster configurations. In addition to the local configuration data, the DCMD also stores global configuration data in the Server Repository. The cluster configuration data is described further below.
System Registry component 402 provides the function of global data storage. It is highly available, and in one example, replicated among a plurality of nodes as System Registry processes 414 (
Liveness component 404 (
Group Services component 406 provides generic membership services to the other components. These services include facilities for carrying out two phase commit protocols, also called atomic broadcasts. It also includes facilities with which the members of a group can control membership to the group and maintain a group state. (One example of Group Services is described in detail in U.S. Pat. No. 5,748,958 entitled "System For Utilizing Batch Requests To Present Membership Changes To Process Groups", issued on May 5, 1998, which is hereby incorporated herein by reference in its entirety.)
Resource Management component 408 provides a basic communications layer to other cluster services, which are not part of the core cluster services (e.g., DCM, System Registry, Liveness, Group Services and Resource Manager). These services fall in the category of additional resource controllers, as described below. In one example, this communications protocol is object oriented. Thus, any resource controller that is to be controlled by the Resource Management component provides to the Resource Management component a resource description file, which defines the resource objects that it controls. This definition is made in terms of a set of attributes or data fields, and of functions which are supported by each resource controller.
Each of the components of the cluster architecture has one or more data and/or functional dependencies on one or more other components of the architecture, which define relationships between the various components (i.e., intercomponent relationships). These relationships are designed, in accordance with one aspect of the present invention, such that the data and functional dependencies form an acyclic graph (i.e., a cycle of dependency relationships is avoided.)
One example of the data dependencies for each component is pictorially illustrated in
For example, a node may malfunction and be sent for repair. In the meantime, the system administrator of the clustered system may decide to undefine the damaged node, therefore deleting its definition from the global registry with an undefine node operation. When the damaged node is fixed, and then reconnected to the cluster, it should no longer be allowed to share the cluster resources, since it has been undefined to the cluster. Nevertheless, the local cluster configuration in the recently fixed node is out of date, and still shows the node as defined to the cluster. In order to detect such cases, the DCMD daemon, which is the bootstrapping agent for all the other cluster components, checks the validity of the local cluster definition before starting the node join process. This creates a data dependency 602 of the DCMD daemon on the System Registry component.
One example of the functional dependencies of each component is pictorially illustrated in
The functional dependency on the Group Services component only effects write operations, however. The System Registry component has no dependencies on the Group Service component for operations of type read. Therefore, the System Registry component is able to complete the first phase of its initialization (further described below) after being bootstrapped by the DCMD component. After this phase is complete, the System Registry has retrieved the most recently updated copy of the cluster configuration database, and is capable of allowing the other components to read the cluster configuration data. This in turn allows the Group Services component to complete its own initialization, which makes it possible for the System Registry component to proceed with a second phase of its initialization, as described below.
The additional resource managers also have a functional dependency (714) on DCM, as well as a functional dependency (716) on the Resource Manager component.
The data and/or functional dependencies of the components are satisfied during a bootstrapping process of the clustering technique. In one example, a particular sequence of events and messages is utilized in order to satisfy the dependencies during the cluster bootstrap process. One example of this sequence is depicted in
At Step 0, the bootstrapping sequence is commenced. The cluster architecture is designed, for instance, as a layer of software, which is started by the operating system. After the basic operating system bootstrap process, the operating system bootstraps the cluster software by starting the Distributed Configuration Manager process. The DCMD daemon is then started and is executed throughout the life of the operating system instance.
As previously mentioned, the DCM maintains a set of data structures stored in local storage of each node (as one example). The data structures include, for instance, a cluster data structure 900 (
Cluster data structure 900 includes, for instance, a cluster name 906 and a unique cluster identifier 908. In one example, the unique identifier is used as a key field (unique field). The key field in the cluster data structure protects the individual instances of the operating system from being re-labeled with the same cluster names. The clusters are often created by human administrators, and could easily be labeled with identical names during the configuration process of a large number of processors. Furthermore, the cluster configuration infrastructure described herein is very dynamic, and thus, makes possible the creation and deletion of clusters. Clusters can be dynamically created and destroyed according to the needs of the distributed system. The unique identifier is generated at the time that the cluster is created, with a define cluster operation, described below. This feature makes possible for the detection of the re-use of a cluster name. For example, if a cluster labeled A is created, deleted and created again, the data structures for these two definitions of A would be different, because the unique identifier fields would be distinct.
Further, the unique identifier in the cluster definition data structure is at the root of the mapping of the other cluster resources. In this system, the unique identifier for the cluster data structure is at the prefix of the label in the cluster resources. The use of the unique identifier mapping, and the architecture described herein, prevents cluster resources from being accessed by clients, which are under the wrong assumption of the cluster configuration.
Node definition data structure 902 includes, for instance, a node number 910; a node name 912, which is used as a convenience to make the node identification easier to a human administrator, but it is not used by any of the cluster resource managers as a means of accessing the configuration of a node; and a unique node identifier 914 that identifies the definition of a node. The unique identifier is associated with the specific operating system instance. This identifier is generated every time that a node is defined to a cluster. This unique identifier makes it possible to make a distinction between two nodes with identical names and also between a node that has been defined to the cluster, undefined, and then defined again (re-defined) with the same name.
Registry server nodes data structure 904 includes a list of the registry server nodes that are defined to the cluster. In one example, this data structure includes an ordered list of registry servers 916 and an indication of the primary registry server 918. This list is retrieved by other cluster components, which desire access to a System Registry process in order to read global configuration data of the system, as described below.
In addition to the above local data structures, each of the cluster components maintains a local storage data structure, where each component is reserved space for storing information, which is relevant to the local node. One example of a local data configuration is depicted in
It should be noted that the data structure depicted in
One example of the local storage data fields is described below:
In addition to the local configuration data, the DCM also stores global configuration data. The global configuration data, which is stored in the Server Repository, includes, for instance, a copy of the cluster definition data structure, as well as a copy of the node definition data structure. The values of the fields of the cluster data structure and node definition data structure are set at the time that a node is defined to the cluster, and should remain consistent. During processing, the data fields of the local data structures are compared to the data fields of the global data structure. If the comparison yields any differences, this may indicate that the node definition is no longer valid in the cluster.
Returning to
In Steps 2–4, the DCMD daemon starts the Liveness component, Group Services component and Resource Manager component in, for instance, all of the nodes of the cluster. Then, at Step 5, the System Registry subsystem performs the first phase of its initialization. In particular, it performs a procedure that retrieves the most recently available copy of the global configuration database. During this phase, the System Registry processes, which were bootstrapped by the DCMD, exchange messages, which contain the incarnation number of the global configuration database. The System Registry component then selects the copies of the configuration database, which have the highest incarnation number. These copies are allowed to proceed with the second phase of the component's initialization, as described below.
After the completion of the first phase of initialization, the System Registry component allows the other components to issue operations of type read, which enable the other core cluster components to complete their initialization. That is, after the first initialization phase is complete, the System Registry subsystem is now capable of serving the global cluster configuration data to the other cluster components. The System Registry component allows the other components to read the global configuration data, but does not allow any modifications to the global configuration. This is because any modifications to the global configuration data is performed through write operations, and the System Registry component has a dependency on the Group Membership function in order to perform write operations. For this reason, any operations that modify the global cluster configuration data need to wait for the completion of the second phase of the System Registry initialization, described below.
At Step 6, the DCMD can now read the global cluster configuration data from the System Registry. Thus, at Step 7, it is able to verify if the local configuration that it stores in each node is consistent with the global cluster configuration stored in the System Registry. The DCMD component cannot yet at this point make any changes to the global cluster configuration, because the System Registry is not yet able to write operations. Nevertheless, it can determine if the local configuration is consistent with the global cluster configuration, and then continue with the cluster bootstrapping process and start the other components, which will eventually satisfy the other dependencies, such that the System Registry will in turn be able to complete the second phase of its initialization and become write enabled.
At Step 8, the Liveness component is to read the global configuration data. But first, it needs to know the location of a System Registry server, and that information is in the local cluster configuration. Thus, the Liveness component makes a call to the DCMD in order to retrieve this information.
At Step 9, in a procedure similar to the previous step, the Group Services component also retrieves the local cluster configuration data from the DCMD component.
At Step 10, the Liveness subsystem satisfies its dependency on the global configuration data by reading the global configuration data from a System Registry server. Further, at Step 11, the Liveness component has now fulfilled all of its dependencies and can now conclude its initialization and make available the liveness function to the other cluster components.
At Step 12, the Group Services component can also read the global configuration data from the System Registry. The Group Services component can now utilize the liveness function from the Liveness component, as indicated in Step 13.
At Step 14, the Group Services component completes its initialization, and is able to make the group membership function available to the other cluster components.
At Step 15, the System Registry component satisfies its requirement of membership services, which allows the System Registry to perform the second phase of the initialization procedure. In this phase, the copies of the global configuration database, which had a lower incarnation number as determined by the first phase, are updated using a membership service offered by the Group Services component. This allows the System Registry component to finish the second phase of its initialization and allows write operations to be issued against the global cluster configuration.
At Step 16, the System Registry component now concludes the second phase of its initialization. After this phase is complete, the System Registry component is able to use the membership services in order to perform replicated write operations, and therefore, allows other cluster components to make modifications to their global cluster configuration database.
At Step 17, the Resource Manager component retrieves the local configuration data from the DCMD component. The Resource Manager component reads the global configuration data from the System Registry and makes any modifications to it that are desired (Step 18).
Further, at Step 19, the Resource Manager component utilizes the member services of the Group Services component to determine the version number of its configuration database. The Resource Manager component now has all of its data and functional requirements fulfilled, and has completed its initialization (Step 20). Thus, the Resource Manager component can bootstrap any other configured resource controllers (Step 21).
The additional resource controllers read the local cluster configuration from the DCMD component (Step 22), and the global cluster configuration from the System Registry (Step 23). Further, they perform any desired modifications. At Step 24, the additional resource controllers conclude their initialization.
Subsequent to performing the above bootstrapping process, all of the cluster components are fully available and all of the data and functional requirements of the components are fulfilled.
In order to manage a cluster, various definition operations are employed, in accordance with at least one aspect of the present invention. These operations include, for example:
In addition to the various definition operations, various control operations are used to manage a cluster, a node and a registry server. These operations include, for instance:
Each of the above definition and control operations can be utilized in order to manage a cluster. One or more of these operations are described in further detail below.
As described herein, in an aspect of the present invention, the cluster architecture utilizes a unique identifier, which is generated at the time that an operating system instance (i.e., a node) is defined to the cluster. The unique identifier is generated in such a way that it is meaningful to the implementation of the cluster system (see
For a multiple operating system computer 1102, the operating system instance may just generate a unique identifier at the time that the node is defined, using a known unique identifier generation technique.
Further, for a computing device 1104 with a distinguished piece of hardware, the identity of the operating system is derived from the single piece of hardware. Such implementation is meaningful in a variety of applications, such as in devices which utilize smart cards for the identification of an authorized user.
The identifier is stored in both the local configuration storage, as well as in the global configuration database. Since both types of storage are used, a set of rules is provided, in accordance with an aspect of the present invention, to reconcile the data, if the data was to get out of sequence, for any reason (e.g., maintenance procedures). For example, if the out of sequence data is the node's identifier, then a set of rules is provided to reconcile the identifier. This particular example is described in further detail below. However, it should be recognized that similar rules are used to reconcile other inconsistent data.
Since a distributed cluster system is a set of machines, each of which may be disconnected from the communications network at different times, an instance of the operating system is identified at the time of its definition as a node of a given cluster. However, the instance of the operating system may halt due to power outages or maintenance operations, and it should be able to recognize itself as a member of a given cluster, if it has ever been defined as such. Thus, each time that a node joins the cluster, it checks if the unique identifier in local storage matches the global identifier for that node.
In particular, in one embodiment, the unique identifier is read by the operating system, during the basic bootstrapping process of the basic operating system. The basic operating system then passes the unique identifier to the Distributed Configuration Manager at the beginning of the cluster bootstrapping sequence. The Distributed Configuration Manager in turn stores this unique identifier at the time that it is defined to the cluster, both in global storage 1106 and local storage 1108. Each time that the Distributed Configuration Manager performs the operation of joining a node to the cluster, it checks the validity of the three different instances of the unique identifier, (i.e., the identifier passed by the operating system in the bootstrap sequence, referred to herein as the original copy (UID) 1110; the locally stored (cached) copy 1108; and the globally stored copy 1106.
During the process in which a node joins the cluster, the three identifiers are compared as follows:
These comparisons may yield four different results, which are shown below:
Scenario Number and Action Taken
Scenario 1: Normal Case, proceed
with join process
Scenario 2: complete node
Scenario 3: correct node
Scenario 4: complete node
The Distributed Configuration Manager then adopts, for example, the following actions according to each of these scenarios:
Scenario 1: In this case, all three identifiers are the same, and therefore, the node definition is correct. This is the normal case. The other three cases only exist as a result of operations, such as maintenance operations, which affect the node definition.
Scenario 2: In this case, the original identifier is equal to the local identifier, but the local identifier is not the same as the global identifier. This occurs when a node definition is deleted, while the node is not connected to the cluster. Because the node is not connected to the cluster, it is not able to participate in the node deletion process. Therefore, the local data structures are not updated to the effect that the node has been deleted. When the maintenance on the node finishes and the node attempts to rejoin, it notices its own deletion, and is thus, able to clean up the local data definition to the effect that the node has been deleted from a particular cluster.
Scenario 3: In this case, the original identifier disagrees with the local identifier, and the local identifier agrees with the global identifier. Thus, the original identifier has been replaced in a maintenance operation, for instance. This occurs when the original identifier is obtained from a hardware resource, which had to be replaced. Examples of such resources are smart cards and mother boards that have their unique identifiers stored in read only memory (ROM). If it becomes necessary or desirable to substitute the hardware where the original identifier is stored, then the cluster logic is to distinguish this case from an incorrect definition as in Scenarios 2 and 4. In this case, the local and global identifiers agree, which indicates that the node definition is still valid in the cluster. Therefore, the action taken is to correct the node definition to the effect that the original identifier has been replaced. Thus, the Distributed Configuration Manager changes both the local and global identifiers to agree with the new original identifier.
Scenario 4: In this case, the original node identifier does not agree with the local identifier, and the local identifier does not agree with the global identifier. Thus, the node has been subject to two maintenance operations. It has been deleted from the global configuration, while the node was disconnected from the cluster, and the original identifier has also been replaced. This case is analogous to Scenario 2 above, because the determining factor is that the global configuration does not agree with the last cached value in the local storage. Therefore, the action taken is to clean up the local data definitions to the effect that the node has been deleted from the cluster.
In one embodiment, in certain scenarios, such as Scenario 3, the Distributed Cluster Manager is able to perform an automatic correction of the original identifier, which is a desired effect in the case that the unique hardware which identifies the cluster is replaced in a maintenance operation. This feature could allow, for example, for another smart card to be used in the case of the loss of a previous card. The Distributed Configuration Manager is able to identify the machine that had been previously defined to the cluster by consulting the value in the global database. It would not, however, allow for a new card to be used in a machine which has never before been defined to the cluster, as illustrated in Scenario 4. This feature is also desired, since the cluster definition operation is an explicit operation that any machine that is to be defined to the cluster is to execute.
Further details regarding maintaining data consistency, for reliably defining a node as a member of a cluster system, and for joining a cluster are described below.
Since changes are made to both the local configuration and the global cluster configuration databases, and since the data in both repositories is to be kept consistent, operations, such as the node define operation, are performed in an atomic manner (i.e., the operation is either performed to completion or aborted). If the operation is aborted, the data in both repositories is reverted to a state which is consistent with the clustering architecture. This takes into account that a node may be defined and undefined several times, and that the node may be disconnected from the cluster, when an undefine operation occurs.
In order to enforce the consistency of the node definition to a cluster, the node definition operation has the node itself participate in the node definition protocol. During this operation, the unique identifier of the node is associated with a node number, which is also unique to the particular cluster to which the node is being defined. The node number is not, however, unique across all clusters. Thus, when a pool of nodes is utilized for multiple cluster deployment (described below), it is possible that a node may be defined with the same or a different number in each cluster. However, in this embodiment, a node can be online (active) in only one cluster, at any specific point in time.
The node number identifier is an internal identifier with which the node is known to the cluster. The node definition process ensures, in one example, that a given node number is associated with an instance of the operating system, which was originally defined with a specific unique identifier. Further details of the node definition process is described with reference to the example depicted in
Referring to
At Step 1, a define node request is passed to the member DCM process. In one example, passed with the request is the node (e.g., IP) address of the node to be defined. A unique node identifier, node number and node name may also be passed, as optional parameters. If not explicitly set, values are generated by the member DCM process for a unique identifier, node number and node name.
The node address obtained in Step 1 is utilized by the member DCM to contact the non-member DCM process (Step 2). In this message, the member DCM process passes the cluster identifier to the non-member DCM process.
At Step 3, the non-member DCM process receives the request to be defined as a member of the cluster, which is identified by the received cluster identifier. The non-member DCM checks that it has no local configuration identified by the unique cluster identifier already. (In some of the scenarios discussed above, it is possible that the node has an old definition.) The non-member DCM replies to this request with its own unique identifier, that was passed by the host operating system. It also includes in this reply a status code which denotes if a previous definition for that cluster ID was found in local storage.
The member DCM receives the reply from the non-member DCM (Step 4), which contains the unique identifier of the non-member DCM node. It saves this value and checks if the node identifier was reported in the global storage (Step 5). For example, the member DCM makes a lookup request to the System Registry process to find any node in the cluster defined with the specific unique identifier. The System Registry replies with a message that contains a possible node definition that corresponds to the unique node identifier passed in Step 4, or with a return code that denotes that no such definition exists (Step 6).
At Step 7, the member DCM receives the message described above. If such a definition is found, the member DCM checks if this definition is the same as the one reported by the non-member DCM. If these definitions are identical, a message is sent back to the node definition requester to the effect that the non-member node is already defined to the cluster (the define node request was issued in error, and the "nonmember" label in this case is not appropriate). If the definitions are not identical, both the local and global definitions are deleted and the define node process continues. The remaining possibility is that the non-member node reports a local definition that cannot be found in the global cluster configuration. In this case, as in the case that the definitions do not match, the non-member DCM is requested to erase the previous definition.
In Step 8, the member DCM requests the System Registry to make an entry for the new node, passing to it the unique node identifier, node number, node name and the node address, which was originally given in Step 1. The System Registry commits the entry described above to the global cluster configuration and sends a message back to the member DCM informing of the success of the operation (Step 9).
At Step 10, the member DCM receives the message above. If the operation was not successful, the node definition process is aborted, and a message is sent back to the requester of the node definition that the process failed. Otherwise, the process continues. The member DCM now requests the non-member DCM to commit the new node definition to local storage, and to erase any previous definition, if appropriate (Step 11).
At Step 12, the non-member DCM performs the request described above, and send a message back to the member DCM informing of the success of the requested operation. The member DCM receives the message (Step 13). If the result reported by the non-member DCM is a failure, then the member DCM aborts the definition operation, and reports a failure to the requester of the node define operation. The member DCM also attempts to erase the definition in the global storage that was made in Step 8. Otherwise, the process continues.
The member DCM process has successfully completed the node definition operation and now returns a message to the requester indicating the success of the operation (Step 14).
Subsequent to defining a node to a cluster, the node can be inserted (join) into the cluster without requiring any additional action on the part of the system administrator by using, for instance, an automatic cluster configuration technique of the present invention. This technique may be initiated, for example, immediately following the node definition, or at the time that an online node request is issued.
One embodiment of an automatic cluster configuration technique is described with reference to
Referring to
At the time of the node definition, only a minimal amount of data is exchanged between the new node and the cluster (Step 1,
When the new node is requested to join the cluster (Step 2,
Thereafter, the resource controllers update the System Registry (Step 5,
The DCM process on the new node receives (Step 9,
In a parallel action, System Registry process 1414 on cluster 1416 sends an event (Step 7,
The above procedure allows for a node to configure itself as a member of the cluster without requiring any information from the system administrator. The administrator only supplies, in one example, a node address for the node define procedure. During the node define procedure, the list of registry servers is seeded into the new node. When the new node is requested to join the cluster, it uses the list of registry servers to find a working System Registry process. Then, the resource controllers on the new node are requested to discover the configuration of the resources that they control and to write this information in the global cluster configuration database. (The resource controllers are processes, which are written for specific resources and know how to discover their configuration.) Advantageously, this operation is initiated by the new node, and does not require the system administrator to provide this information manually.
In one example, the above procedure is repeated each time that a node joins the cluster, in order to ensure that the node's configuration is consistent with the global repository. For instance, this procedure allows a system administrator to disconnect a node from the cluster, add some hardware, such as new communications adapters, make changes to the node's configuration, and then reconnect it to the cluster without having to notify the cluster of any of the changes made while the node was offline from the cluster.
In accordance with at least one aspect of the present invention, a computing environment can have one or more clusters defined therein. For example, a computing environment 1600 (
Each cluster has one or more registry servers associated therewith. For instance, Cluster A has registry servers 1608 and Cluster B has registry servers 1610. Registry servers 1608 include one or more server nodes 1612. Similarly, registry servers 1610 include one or more server nodes 1614. One or more of the server nodes of one set of registry servers can overlap one or more nodes of another set of registry servers.
In a further aspect of the present invention, a node can be quickly moved from one cluster into another. This capability makes it possible to shift nodes among the workload that a cluster is experiencing at any given moment. For example, consider an enterprise that has a pool of nodes that are to be used for two different applications, such as web serving and database services. Using the clustering technique of the present invention, the enterprise would be able to define two clusters, Cluster A and Cluster B, each dedicated to one application. Now, assume that the workload in these applications varies according to the time of day, in which web serving is more active during the day and database services is more active during the night. The enterprise would like to move a few nodes from Cluster A into Cluster B, when the load in Cluster B is greater, and vice versa.
In traditional clustering systems, the system administrator would have to first move the node offline in Cluster A, then undefine the node in Cluster A and then define it to Cluster B (usually requiring a great deal of manual configuration), and then moving the node online in Cluster B. The traditional system involves manual intervention and is very time consuming. The time that is spent in the process of moving a node is very important when considering workload balancing applications, because typically, the workload is a very dynamic measurement, that changes not only between night and day, as in this example, but in a matter of minutes. Thus, the operation that moves a node from one cluster to another is to be very fast, in order to have value in workload balancing applications.
Therefore, in accordance with an aspect of the present invention, a node is moved from one cluster into another cluster rapidly by allowing overlapping cluster definitions. That is, a node is allowed to be defined to more than one cluster, although, in one embodiment, it is only active in a single cluster at any particular point in time.
When a node is defined to a cluster, the DCM makes a special storage area where it keeps the local configuration for the cluster to which the node has just been defined. The DCM component stores the local cluster configuration in this local storage area. Among the values stored in the local cluster configuration are, for example, the cluster name, the cluster id, the node name, the node id and the list of registry servers for the particular cluster. As a further example, the DCM also keeps the following two fields in local storage: The current cluster pointer, which contains an identifier (id) of the cluster of which a node is currently online; and a target cluster pointer, which contains the id of the cluster to which the node is moving.
The value of these pointers is only different during the operation that moves the node from one cluster into another. In order to be able to move a node into a certain cluster, at least one registry server node for that cluster is to be online. In order to move a node, the DCM moves the target cluster pointer to point to the cluster to which the node is supposed to join, and then sends a refresh signal to the other cluster components, which are running in the node being moved. When the refresh signal is received by a component, the component refreshes its configuration, i.e., it reads its configuration again from the global cluster repository. In order to reach the repository, the components retrieve the list of registry servers that are defined to the specific cluster. The process that retrieves the list of registry servers in the node being moved utilizes the target cluster pointer in order to decide which list to use, as described further below.
One embodiment of the logic associated with a node moving from one cluster into another cluster is described below with reference to
At Step 1 (
The other cluster components retrieve (Step 4,
The registry server provides (Step 6,
The DCM now changes (Step 8,
When all the components report back to the DCM that they finished the refresh operation and are successfully online in Cluster B, the current cluster pointer is moved to point to Cluster B. If the node is unable to join Cluster B for any reasons, then it reverts back to the cluster, which is named in the current cluster pointer.
The above procedure makes possible the very quick movement of a node from one cluster into another. The reason that such fast movements are possible is due to the fact that this architecture allows for a node to be defined in multiple clusters.
The various components of the cluster architecture send and receive messages and overall cause system communications traffic. The term "system communications" is used herein to reference network traffic that is generated by the clustering logic itself, as opposed to the service traffic, which is the traffic generated by applications which run in the clustered system. For example, system traffic includes the network traffic that is generated by the Liveness subsystem, which sends periodic verification messages to its peers on every node. A further example includes the network traffic that is generated by the System Registry component, which sends the global configuration of the cluster to the other components. In typical deployments of the cluster system, more than one interconnecting network is utilized, resulting in multiple communications paths between the nodes. Thus, it is desirable to offer a facility to the system administrator in which the system traffic can be confined to specific communications paths, such that it does not interfere with the other applications running in the system.
In accordance with one aspect of the present invention, in order to control the network traffic generated by the clustering logic, the cluster architecture defines network objects. Each cluster component, which generates system traffic, specifies a preference for the network objects to be used for such traffic. For example, a cluster may include one or more networks, in which each network includes one or more subnetworks, and each subnetwork includes one or more nodes.
As described above, a node is defined to a cluster by a define node operation. Likewise, a subnetwork object is defined by a define subnetwork operation. A subnetwork can be implicitly defined by the DCM process, if it receives notification that a new communications adapter has been discovered in the cluster whose node address is not mapped to any existing subnetwork object. Further, an undefine subnetwork operation deletes a subnetwork definition from the global cluster configuration; and a modify subnetwork operation modifies attributes of a subnetwork definition. Attributes which can be modified include, for instance, the subnetwork name, as well as the network definition to which the subnetwork is mapped.
Similarly, a define network operation creates a network definition, which is mapped to one or more subnetwork definitions; and an undefine network operation erases a network definition from the global cluster database. Further, a modify network operation is used to modify attributes of a network definition. One attribute that can be changed is, for instance, the network name.
Each node, subnetwork and network is defined by at least one corresponding data structure, as described below. These data structures are stored, for instance, in the global repository.
In one embodiment, each node is represented by one or more node address definition data structures. In one example, a node address definition data structure 1900 (
The node address is a secondary key field, which is also unique. The node address is unique because the Distributed Configuration Manager component does not allow for the definition of two node addresses which have the same node address. In the examples described herein, the addresses are internet protocol (IP) addresses, since in one particular implementation of aspects of the present invention, the internet protocol is used as a means of communication between the nodes. However, it is understood by those skilled in the art that any other communications protocol can be utilized. In any event, there is to be at least one address which is identified for each node, such that the node can be reached using the chosen protocol. If more than one communications protocol is utilized, then the protocol type may be an additional field of the node address definition.
In accordance with an aspect of the present invention, each node address definition is mapped to a subnetwork definition. One example of a subnetwork definition data structure is described with reference to
As one example, a subnetwork definition data structure 2000 includes, for instance, a unique identifier 2002, which provides uniqueness of the subnetwork definition; a subnetwork prefix 2004, which in this particular implementation includes a node address which identifies the prefix of the subnetwork; a subnetwork mask 2006, which is a bit mask denoting how many bits in the subnetwork prefix are relevant; and a network name 2008, which maps the subnetwork definition to an existing network definition.
In the example described herein, the subnetwork object is derived from the way in which the IP protocol mandates their computers be interconnected. For instance, in an IP network, nodes are configured with an IP address and a sub-network mask. All nodes connected to the same subnetwork should have an address with the same prefix, the length of the prefix being determined by the subnetwork mask. The implementation shown here uses this aspect of IP networks to group the node addresses in groups; in this case, each group includes all of the nodes which are in the same subnetwork. The subnetworks have been mapped into network definitions, and the routing of the cluster traffic is then controlled by modifying the parameters of the network objects, as described below.
One example of a network definition data structure is depicted in
For example, a cluster may be defined with three network objects, named A, B and C. Suppose that a cluster component wants to read the global configuration from the System Registry. It first retrieves the list of registry servers for the specific cluster. In this example, the list contains three addresses, which are labeled, 1, 2 and 3. It then chooses which one to use, according to the priorities which are set by the system administrator. This component then follows a mapping described below, which maps a service node address (which is listed in the list of registry servers) to a network object.
In this example, Address 1 maps to Network A, Address 2 to Network B and Address 3 maps to Network C. Now, the component reads the priority value stored in the service routing table of each network object, which refers to the service that it wants to use (e.g., the System Registry). These values are set by the system administrator, according to his or her preferences for that system. In this example, assume that the value for the System Registry priority is 3 in Network A, 2 in Network B and 1 in Network C. The highest priority number is found in Network A, and therefore, the component tries to reach the System Registry component using first the address that maps to Network A (labeled 1, above). Then, if that fails, the component tries to use the address that maps to Network B, and finally the address that maps to Network C.
Further details relating to the manner in which a client of cluster services chooses a specific address for a service are described with reference to the example depicted in
In one embodiment, initially, the client retrieves a list of possible addresses where the service is present, STEP 2200 (
Subsequent to obtaining the list of node addresses, the client looks up each node address in the node address definition data structure, stored in the global cluster configuration. For each address, the client performs a logical AND operation of the node address and subnetwork mask (see
Thereafter, the client retrieves the subnetwork object for each of the addresses, STEP 2204, and for each subnetwork object, the client retrieves the network name, which is associated with the subnetwork, STEP 2206.
Subsequently, the client retrieves each network to which the service addresses are mapped, STEP 2208. It then reads the service priority numbers from the service routing table, which is stored in each network object, STEP 2210. The client then orders the list of node addresses, according to the priorities, which were set by the system administrator in the network objects, STEP 2212.
Thereafter, the client attempts to contact the service in order of the priorities, STEP 2214.
The above technique provides the administrator of the cluster with a mechanism that contains the traffic associated with specific kinds of services to specific networks. The technique offers network traffic control in such a way that is meaningful for an administrator. It can be noted that the client retrieves a list of node addresses for this service. Initially, this list is not ordered, since the list is published by the service itself. In the example above, it is the System Registry which publishes, by means of the DCM component, the list of its node addresses. However, the System Registry has no knowledge of the network structure or of the system administrator preferences, and therefore, cannot offer an ordered list. Thus, the system administrator can assign subnetwork objects to network objects, as the above mapping indicates.
A change made by the system manager affects the service priority assignments for all addresses which map to the subnetwork which was moved. This operation is localized to a change in the subnetwork table, which is understood by the other components. This facility offers a central point of control with which a system administrator can control the system traffic for all components of the cluster system.
Described above is one technique for ordering a list of service addresses according to priorities set by the system administrator. However, in some cases, the system administrator may employ equivalent networks, for which there is no priority preference. In this case, it is desirable, for instance, to order the list of service addresses in order of proximity to the client, in terms of routing steps, or hops. In the standard IP protocol, a datagram which is sent from a specific subnetwork will only reach nodes in that specific subnetwork, if it is not routed. In order for the datagram to reach other nodes, it is routed (i.e., it goes through a router, or package switching node, which is connected to both the subnetwork where the datagram is originated and to either the target network or to another router or sequence of routers, one of which has access to the target network.) The step of routing a package through a package switching node is termed a hop. There is a cost in performance associated with a hop, since the package switching operation slows the receiving of the packet in the target subnetwork.
Therefore, when the system administrator does not set any priority preferences for the utilization of the cluster networks for a specific service, it is beneficial to order the list according to the minimal number of hops that a datagram will incur in being routed from the server to the client. Furthermore, if more than one server is equidistant to the client (i.e., if more than one server can be reached using exactly the same number of hops), then it becomes beneficial to order the lists differently for each client, such that the service load is spread equally among the equidistant servers.
The following technique offers a facility with which a list of service addresses is ordered according to the criteria of lower distance and load balancing. This technique is employed by the DCM when it stores the list of registry servers in each node (in the case that the system administrator has not set any priorities for the utilization of the cluster networks). As described below, this technique utilizes both the distance of the client to the server, as well as a mapping which distributes the workload equally among the servers. The workload distribution is based on a formula which is derived from the total number of nodes in each subnetwork, from the individual node number of each node, and from the number of equidistant servers.
One embodiment of the logic used to produce an ordered list of addresses to be used by a particular node in the cluster to reach a specific service, is described with reference to
The output is an ordered list of service addresses, which is tailored for the specific node which is identified by the unique node number. This list is ordered according to minimal cost and uses load balancing for equidistant servers.
Referring to
In the case that there are equidistant servers (i.e., servers that are reachable using the same number of hops), a further optimization of the ordering is possible. If there are two equidistant servers, it is beneficial to list one of them first in half of the clients and to list the other first in the other half. That makes half of the clients have a preference for one server and the other half to the other server, achieving an ideal load balancing scheme. If there were three servers, the first position can be split in three ways.
One technique for deciding which server is to be listed first is described herein, STEP 2404. In particular, initially, a set of equidistant servers (i.e., a set of servers having the same number of hops) is indexed 0, 1, 2, etc., according to their node addresses, from lowest to highest, STEP 2406. Since node addresses are unique, this mapping is also unique.
Next, the mapping index for one of the equidistant servers is calculated using a predefined equation, STEP 2408. In particular, for k=0 to the number of equidistant servers-1, the mapping index is equal to the [((node—number)mod(number—of—equidistant—servers)+k) mod(number—of—equidistant—servers)], where mod refers to the module operation defined as the integer remainder of a division operation.
After calculating the mapping index, a corresponding address of the mapping index is then added to the list, STEP 2410.
Subsequently, a determination is made as to whether there are more equidistant servers in the set, INQUIRY 2412. If there are more equidistant servers in the set, then processing continues with STEP 2408. Otherwise, processing continues with INQUIRY 2414, in which a determination is made as to whether there are more servers to be processed in the input list. If there are more servers, then the process continues with STEP 2402. If not, then a final ordered list of service addresses is provided, and the procedure is complete, STEP 2416.
One example demonstrating the above procedure is described below. Assume the following input:
To obtain an ordering, the above rules are followed:
It can be observed that the output list would be different for each client node number, resulting in a balanced list for each client.
In addition to the above, DCM maintains the ordered lists. In one example, it refreshes the local list, whenever it receives notification that a new service node has been added or deleted.
Described above are various aspects of managing a clustered environment. A clustered architecture, as well as techniques for managing clusters, are provided. Various techniques of the invention are applicable to single systems, homogeneous systems, as well as heterogenous systems. As one example, capabilities are provided to facilitate the interoperability of the systems of a heterogeneous environment.
In the embodiments described herein, the global data is stored remotely from the nodes in one or more repositories (global storage). However, in other examples, each repository can be local to one or more nodes. Further, each repository can be remote or local to users of the repository.
The present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.
Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
Although preferred embodiments have been depicted and described in detail herein, it will be apparent to those skilled in the relevant art that various modifications, additions, substitutions and the like can be made without departing from the spirit of the invention and these are therefore considered to be within the scope of the invention as defined in the following claims.
|Cited Patent
|Filing date
|Publication date
|Mar 1, 1982
|Sep 4, 1984
|Burroughs Corporation
|High speed interconnection network for a cluster of processors
|Mar 31, 1986
|Jul 25, 1989
|Wang Laboratories, Inc.
|Loosely-coupled computer system using global identifiers to identify mailboxes and volumes
|Jul 19, 1991
|Aug 24, 1993
|International Business Machines Corporation
|Method for reducing disk I/O accesses in a multi-processor clustered type data processing system
|Aug 3, 1992
|Sep 20, 1994
|Fujitsu Limited
|Initial program load control system in a multiprocessor system
|Jun 15, 1994
|Dec 24, 1996
|International Business Machines Corporation
|Universal buffered interface for coupling multiple processors memory units, and I/O interfaces to a common high-speed interconnect
|Aug 23, 1996
|Jul 1, 1997
|International Business Machines Corporation
|System and method for managing a hierarchical storage system through improved data migration
|May 27, 1994
|Aug 5, 1997
|International Business Machines Corporation
|Accessing remote data objects in a distributed memory environment using parallel address locations at each local memory to reference a same data object
|Nov 23, 1994
|Nov 4, 1997
|Bay Networks Group, Inc.
|Method and apparatus for determining and maintaining agent topology information in a multi-segment network
|Jun 20, 1996
|Jan 27, 1998
|Hewlett-Packard Company
|Network anaysis method for identifying global and local node servers and for determining a reconfigured network to provide improved traffic patterns
|Apr 30, 1996
|May 5, 1998
|International Business Machines Corporation
|System for utilizing batch requests to present membership changes to process groups
|Jan 17, 1996
|Jun 2, 1998
|Nippon Telegraph And Telephone Corp.
|Information navigation system using clusterized information resource topology
|Jul 1, 1996
|Apr 6, 1999
|Sun Microsystems, Inc.
|Multiprocessing system configured to perform efficient block copy operations
|May 21, 1996
|Aug 17, 1999
|Industrial Technology Research Institute
|Address translation for shared-memory multiprocessor clustering
|Sep 30, 1997
|Oct 12, 1999
|Tandem Computers Incorporated
|Method for sequential and consistent startup and/or reload of multiple processor nodes in a multiple node cluster
|Oct 21, 1997
|Jan 11, 2000
|Sun Microsystems, Inc.
|Highly-available distributed cluster configuration database
|Jan 6, 1998
|Mar 14, 2000
|Sony Corporation Of Japan
|Method and system for providing a device identification mechanism within a consumer audio/video network
|Feb 6, 1998
|Jun 20, 2000
|Ncr Corporation
|Volume set configuration using a single operational view
|Feb 6, 1998
|Aug 15, 2000
|Ncr Corporation
|I/O protocol for highly configurable multi-node processing system
|Nov 3, 1997
|Jan 23, 2001
|Microsoft Corporation
|Method and system for resource monitoring of disparate resources in a server cluster
|Mar 3, 1998
|Sep 16, 1998
|Lucent Technologies Inc.
|Load distribution among servers in a TCP/IP network
|Jun 29, 1998
|Jan 7, 1999
|Sun Microsystems Inc.
|Global file system-based system and method for rendering devices on a cluster globally visible
|Dec 4, 2000
|Jul 18, 2001
|Sun Microsystems, Inc.
|Method and apparatus for performing a fast service lookup in cluster networking
|Sep 30, 1998
|Apr 8, 1999
|Tandem Computers Incorporated
|A fault tolerant method of maintaining and distributing configuration information in a distributed processing system
|Oct 1, 1998
|Apr 8, 1999
|Sun Microsystems, Inc.
|Highly-available cluster configuration database
|"Organizational Redundancy For A Parallel Processor Machine", IBM Technical Disclosure Bulletin, W.C. Brantley, R.D. Jackson, V.A. Norton and J. Weiss, Jun. 1985, vol. 28, No. 1, pp. 417-418.
|Citing Patent
|Filing date
|Publication date
|Jul 31, 2003
|Sep 19, 2006
|International Business Machines Corporation
|Dynamically configurable fault tolerance in autonomic computing with multiple service points
|Nov 22, 2000
|Feb 27, 2007
|International Business Machines Corporation
|Apparatus and method for communicating between computer systems using a sliding send window for ordered messages in a clustered computing environment
|Jul 12, 2006
|Feb 5, 2008
|International Business Machines Corporation
|Dynamically configurable fault tolerance in autonomic computing with multiple service points
|Sep 27, 2006
|Dec 2, 2008
|International Business Machines Corporation
|Arrangement and method for update of configuration cache data
|Dec 30, 2003
|Apr 14, 2009
|Sap Aktiengesellschaft
|System and method for managing multiple application server clusters using a hierarchical data object and a multi-parameter representation for each configuration property
|Dec 30, 2003
|Apr 28, 2009
|Sap Ag
|Configuration manager in enterprise computing system
|Dec 30, 2003
|May 12, 2009
|Sap Ag
|Startup framework and method for enterprise computing systems
|Jul 11, 2008
|Jun 29, 2010
|International Business Machines Corporation
|Arrangement and method for update of configuration cache data
|Apr 4, 2006
|Sep 21, 2010
|Computer Associates Think, Inc.
|Generating log sequence identifiers to apply a transaction to a storage system
|Apr 21, 2005
|Feb 15, 2011
|Siemens Aktiengsellschaft
|Configuration and method for operating a technical installation
|Nov 13, 2007
|Jun 7, 2011
|Abb Research Ltd
|Maintaining data consistency between integrated applications
|Jun 30, 2004
|Sep 13, 2011
|Microsoft Corporation
|Dependency filter object
|Mar 19, 2009
|Mar 6, 2012
|Oracle America, Inc.
|Method and system for fast retrieval of random universally unique identifiers through caching and parallel regeneration
|Dec 30, 2003
|May 29, 2012
|Sap Ag
|Cluster architecture having a star topology with centralized services
|Apr 10, 2007
|Jul 10, 2012
|International Business Machines Corporation
|Mechanism for recovery from site failure in a stream processing system
|Mar 26, 2007
|Oct 30, 2012
|Sybase, Inc.
|System and method for assignment of unique identifiers in a distributed environment
|Dec 30, 2003
|Nov 13, 2012
|Sap Ag
|Configuration data content for a clustered system having multiple instances
|Apr 10, 2007
|Jan 22, 2013
|International Business Machines Corporation
|Method and apparatus for cooperative data stream processing
|May 11, 2007
|Apr 9, 2013
|International Business Machines Corporation
|Mechanism for execution of multi-site jobs in a data stream processing system
|Dec 30, 2003
|Dec 3, 2013
|Sap Ag
|System and method for managing multiple sever node clusters using a hierarchical configuration data structure
|Nov 16, 2010
|Mar 4, 2014
|International Business Machines Corporation
|Clock optimization with local clock buffer control optimization
|May 11, 2007
|Apr 1, 2014
|International Business Machines Corporation
|Method for inter-site data stream transfer in cooperative data stream processing
|Jan 19, 2011
|May 13, 2014
|International Business Machines Corporation
|Minimizing the maximum required link capacity for three-dimensional interconnect routing
|Apr 20, 2009
|Aug 26, 2014
|Cleversafe, Inc.
|Management of network devices within a dispersed data storage network
|Aug 10, 2012
|Sep 30, 2014
|International Business Machines Corporation
|Automatically routing super-compute interconnects
|Jul 25, 2011
|Oct 7, 2014
|International Business Machines Corporation
|Automatically routing super-compute interconnects
|May 11, 2007
|Nov 18, 2014
|International Business Machines Corporation
|Method for the interoperation of virtual organizations
|Aug 25, 2014
|Jan 3, 2017
|International Business Machines Corporation
|Management of network devices within a dispersed data storage network
|Mar 13, 2015
|Mar 14, 2017
|Cask Data, Inc.
|Planner for cluster management system
|Nov 25, 2013
|Jul 4, 2017
|Sap Se
|System and method for managing multiple server node clusters using a hierarchical configuration data structure
|Jul 31, 2003
|Feb 3, 2005
|International Business Machines Corporation
|Dynamically configurable fault tolerance in autonomic computing with multiple service points
|Dec 30, 2003
|Jun 30, 2005
|Ingo Zenz
|Configuration manager in enterprise computing system
|Dec 30, 2003
|Jul 7, 2005
|Ingo Zenz
|Configuration data content for a clustered system having multiple instances
|Jul 12, 2006
|Nov 2, 2006
|International Business Machines Corporation
|Dynamically configurable fault tolerance in autonomic computing with multiple service points
|Oct 21, 2005
|Dec 7, 2006
|Kengo Oosawa
|Data management system, data server, data management method and storage medium thereof
|Sep 27, 2006
|Mar 1, 2007
|Carr David J
|Arrangement and Method for Update of Configuration Cache Data
|Apr 4, 2006
|Oct 11, 2007
|Devine John T
|Loosely Coupled Log Sequence Identifiers
|Apr 21, 2005
|Oct 25, 2007
|Siemens Aktiengesellschaft
|Configuration and Method for Operating a Technical Installation
|Mar 26, 2007
|Nov 29, 2007
|Sybase, Inc.
|System and Method for Assignment of Unique Identifiers in a Distributed Environment
|Nov 13, 2007
|Jun 5, 2008
|Abb Research Ltd.
|Maintaining data consistency between integrated applications
|Feb 8, 2007
|Aug 14, 2008
|Ibm Corporation
|Method and Apparatus for Changing Software Components in an Information Handling System
|May 11, 2007
|Oct 16, 2008
|International Business Machines Corporation
|Method for Inter-Site Data Stream Transfer in a Cooperative Data Stream Processing
|May 11, 2007
|Oct 16, 2008
|International Business Machines Corporation
|Mechanism for Execution of Multi-Site Jobs in a Data Stream Processing System
|Apr 10, 2007
|Oct 16, 2008
|International Business Machines Corporation
|Method and Apparatus for Cooperative Data Stream Processing
|Apr 10, 2007
|Oct 16, 2008
|International Business Machines Corporation
|Mechanism for Recovery from Site Failure in a Stream Processing System
|May 11, 2007
|Oct 16, 2008
|International Business Machines Corporation
|Method for the Interoperation of Virtual Organizations
|May 11, 2007
|Oct 16, 2008
|International Business Machines Corporation
|System and Method of Planning for Cooperative Information Processing
|Jul 11, 2008
|Jan 1, 2009
|International Business Machines Corporation
|Arrangement And Method For Update Of Configuration Cache Data
|Mar 19, 2009
|Sep 23, 2010
|Sun Microsystems, Inc.
|Method and system for fast retrieval of random universally unique identifiers through caching and parallel regeneration
|Apr 20, 2009
|Oct 21, 2010
|Bart Cilfone
|Natural action heuristics for management of network devices
|Aug 10, 2012
|Jan 31, 2013
|International Business Machines Corporation
|Automatically Routing Super-Compute Interconnects
|Jul 25, 2011
|Jan 31, 2013
|International Business Machines Corporation
|Automatically Routing Super-Compute Interconnects
|Aug 25, 2014
|Dec 11, 2014
|Cleversafe, Inc.
|Management of network devices within a dispersed data storage network
|U.S. Classification
|709/201, 714/51, 710/104, 712/1, 709/226, 711/148, 370/389, 711/114, 707/999.01, 707/999.202, 707/999.102
|International Classification
|Cooperative Classification
|European Classification
|Sep 29, 2000
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:NOVAES, MARCOS N.;LAIB, GREGORY D.;LUCASH, JEFFREY S.;AND OTHERS;REEL/FRAME:011185/0309;SIGNING DATES FROM 20000907 TO 20000925
|Mar 21, 2006
|Certificate of correction
|Apr 17, 2009
|Fee payment
Year of fee payment: 4
|Jul 19, 2013
|Maintenance fee reminder mailed
|Dec 6, 2013
|Lapse for failure to pay maintenance fees
|Jan 28, 2014
|Expired due to failure to pay maintenance fee
Effective date: 20131206


text:
Author's note: The First Chapter of What Zombies Fear: Legion will go live on KirkAllmond.com tonight at 10:00pm EST.
Demitri burst into the captain's ready room aboard La Chance de la Mer. "Captain Galain! The Windlass. She just sailed by, headed south."
"Impossible, the ship would be torn apart by the sheer," he said, referring to the force of the water where the current changed at the edge of the lee.
"I don't know how," replied Demitri. "But I saw it with my own eyes." Captain Jean Galain stood, unfolding himself from the desk in his ready room. He ducked his head to the side to avoid the beams that supported the poop deck above, and hurriedly made for the decks. Once at the starboard rail, he extended his spyglass and saw it for himself. A huge canvas kite towing The Windlass southward in the northbound current, and making good time. At this rate, he could cut a month off the trip to Shindow, and six weeks off the trip to Algrind, the two southernmost cities in The Strait. The ability to sail south in the lee meant he didn't have to make the round trip. It also meant he could attack Galain without warning from the current.
"I would never believe it. I wonder what he is up to," Galain said to himself as The Windlass passed his island headed towards Anwin. "Demitri, send a pigeon to Captain Anwin. Let him know The Windlass is making way towards him. And run!" Demitri leap the starboard railing to the gangplank connecting Le Chance to the docks. In seconds he was gone, headed for the tower.
Galain studied the strong southerly wind. Using his decades of experience in on the strait, he could tell that the current breeze would last at least through the end of the week. Cupping his hands over his mouth, he shouted to his crew. "Stow the repair kits marins! Prepare to make way chiens paresseux!" The men stopped what they were doing and looked at their captain for a moment. Most of them started immediately putting away the tools they were using to repair a large hole in the deck.
Three of his men started to protest. "Captain, repairs are almost completed, with another half day she'll be all…"
"Five lashes to that man for questioning an order. I'm the captain on this ship, Franks. I give the orders, you follow them." With the first mate off the ship on a captain's errand, the Navigator and Quartermaster were the ranking officers. They approached Franks before Captain Galain was even finished talking. "The lashes are suspended until we are underway. Snap to, Franks, and perhaps I'll be inspired to leniency!"
The men all redoubled their efforts. In minutes, gear was stowed and sailcloth was hoisted into position on the brand new mast. "Franks! Rig that Topgallant, and be quick about it. I will sail with you still up there to save myself the trouble of lashing you!"
Franks mumbled under his breath and climbed to the very top of the main-mast, carrying the hundred pound sail on his shoulder. It was an exhausting climb, and then required delicate knot work at the top to properly rig. He was still tying the rigging when Demitri vaulted back onto the ship.
"Captain, the pigeon is away. We're getting underway?"
"I want to make for the Algrind Coast, and make way south in the slower coastal eddy. I want to see The Windlass up close."
Demitri stood at attention, looking at his captain, who was staring out to sea while the men frantically worked to get the ship underway. "Sir, we'll catch her, in port or in the current. When we do, what are your orders?"
The captain looked at his first mate directly. "Stand off. Stay aft of her port guns, and out of range. Something's got Tilwin riled to make him risk the passage, and I aim to figure out what it is before we close. The ship is yours, Demitri. When we are underway, summon me. Franks has five lashes coming."
"Sir, the Captain shouldn't have to administer punishment to the crew, that is my job. If one of the men failed you, I take responsibility. With all respect, sir, please allow me to shoulder the crew's resentment," Demitri said, standing proudly.
"I ordered the punishment, and I shall see it done. I appreciate your concern, and it is noted. I'll be in my ready room. Contact me at first sight of the ship." Captain Galain left the poop deck and returned to his quarters.
Demitri called the cadence that took them out of port. "Cast off that line! Unfurl the main, step to, lads, Captain wants us underway ten minutes ago. I'll double Franks' lashes for any man not moving double-time! Half rations tonight for letting me down while I was off the ship, and you can all thank Franks for that! Now's the time to do work!"
Galain scrubbed his hands through his shaggy brown hair and tucked it behind his ears. "Tilwin, what are you up to," he said to himself. He'd only caught a brief, blurry view of the ship as it retreated towards the horizon. Had it been any ship other than The Windlass, he probably wouldn't have recognized it. Had it been most other ships in The Strait, he probably wouldn't have been able to make out much of anything from that distance. Tilwin's flagship was the largest ship ever built by almost a third. How could he drag such a massive ship down the lee without tearing it apart? And why?
The captain felt the ship leaving port, and then lurch up to tacking speed as they started the process of zig-zagging their way south-east across the Algrind coastal current. He looked briefly out the porthole by his chair, they were making good speed. The rhythmic rocking of the ship was comforting.
The answers would come, if he was fast enough. Galain put the plans for his new gun in the drawer of his desk and pulled out his charts. Running at top speed down the Algrind coast was no joke, the reefs along there were unpredictable, and although he'd made the journey up the coast hundreds of times, he rarely fought the current to go south. It was generally more accepted to cross the Lee, and come southward down the Moredand coast. At least until he got to the Shindow lands.
Galain lost himself in study of the charts, looking at his reef markings and familiarizing himself with the landmarks and sailing times based on current wind-speed. Making the southbound run would require him at the helm for the entire fourteen hours. Demitri was the best first mate Galain had ever had, but he was not practiced enough in command to take the ship through dangerous waters. The Algrind coast was dotted with rocky upshoots, coral reefs that would tear the bottom off his ship, and of course, Algrind soldiers who liked to take pot-shots at passing vessels for target practice. The captain wished his gun was finished. One day, he'd poke holes in their towers as he passed out of their range. Two summers ago, headed up the coast, they'd put four holes in the aft side of his ship. He'd had to dedicate sixteen men to pumping and bailing the bilge while he limped the ship back to his harbor to keep her on top of the water.
"Captain," Demitri's voice carried through the brass tube next to the helm down through the poop deck into the ready room below. "We're into the coastal current. You asked me to let you know when we were underway."
Galain reached over and grabbed the brass tube, twisting it towards his mouth. "Thank you, First Mate. Gather Franks, I'll be up in a second."
From his ready room, Galain heard Demitri yell, "Franks, ya scurvy fuckup. Captain's comin, and you've got hell to pay. Do ya need to be lashed to the mast or are you man enough to take five free handed?"
Galain fastened his sword-belt around his waist and grabbed the whip hanging by the door. Franks was standing with his back against the mast, surrounded by the entire compliment of the crew. Everyone knew attendance was mandatory. "Do any of ye question my authority as captain of this vessel?"
There was no response from the crowd. "Do any of ye, as crew members, care to speak on behalf of Mister Franks here?" Again only silence in response. "And finally, be there a man here who deem the punishment ill fitting the crime?" With the exception of the spray, and a lone gull, even the ship seemed to stop creaking.
"So be it. Franks, you are sentenced to five lashes for the crime of insubordination. Unless there be a man upon decks who volunteers to take these lashes for you, the punishment shall be carried out. Do you have anything to say for yourself that may stay my hand?" It was rare for the captain to administer a punishment such as this, the duty usually falling to the first mate. In this case, however, with the first mate off ship, and the insubordination happening directly, Galain felt it warranted that he do the lashing.
"I do not, Sir," said Franks. "I offer my apology for my insubordination, and state, for the record, that I do not desire for any member of the crew to follow my example."
"Apology noted, well said, Mister Franks. Turn and take your lashes." Franks turned, as ordered, and pressed his hands to the main mast, gripping the rope around them. Galain stepped forward, until he was the right distance, and flicked the whip out onto the deck until it was straight behind him. He brought his arm forward, then back, then forward one more time. The whip cracked as the lash on the end flayed Franks' back open vertically from just below the armpit to just above the waist of his pants. Franks screamed, the agony of having his skin flayed open was intensified by the salt-spray in the air. He counted the lash, and reset the whip, flicking his wrist to straighten it out behind him.
The second lash was exactly parallel to the first, two inches to the right. The gash created in Frank's back started below his shoulder blade and reached an inch above his belt. Again he counted and reset the whip. Three more lashes, three more perfectly parallel stripes on Franks' back. Each lash was perfectly placed, Galain's hand was well practiced from his tenure as a first mate. Not one cut near a joint. Each lash was placed so that Franks could continue to do his job, without tearing the wounds open regularly.
"Shanks, Demitri. Escort Mister Franks to sick bay. Clean him up, sew him closed get him back to work. Three days scullery duty while his back knits together."
The crew groaned as they turned to get back to work. Franks was a terrible cook.
Suddenly, the ship lurched to one side as something massive surfaced just starboard. Galain had to yell, "All Hands!" and grab the railing before the giant Narume smashed into the side of the ship. The entire ship was tossed into the air. Galain had time to wonder how strong the last patches to the hull were, and then start to call for port-side guns before the trimasted ship crashed back into the ocean. Men were thrown about the deck. Galain lost one hand on the rail, as a giant wall of water washed over him, trying to sweep him off the deck and out to sea.
The first ships to cross The Strait were made from the corpses of Narume that washed up on the shore of Algrind. The first pirate lords ruled the sea in vessels made from the spine and ribs of these creatures. It is said that one washes ashore every hundred years. Galain himself had never seen one, but he wasn't going to allow this one to get away. All thoughts of facing Tilwin were gone, replaced by an intense desire to bring this creature to port. Not only would it make him a fine flagship, the meat would feed his small town for a year, and the blubber would fill their oil tanks for several years to come.
The trick was to kill the creature, and once that was done, to tow it back to his island. By his estimation, the giant whale was nearly eight times the length of his ship.
Back to Chapter 6 On to Chapter 8
About the Author
Kirk Allmond started writing the first bestselling What Zombies Fear novel in 2010 as an online story as part of his website The Zombie Preparedness Initiative. When the idea to write a novel struck him, he took his own "Zombie Apocalypse" plan and turned it into a story. That story has now spawned six novels and two short stories, and is showing no sign of letting up.
When he's not writing or talking about zombies, the Michigan born writer holds firmly to the southern roots of his family. He grew up in Chicago IL, and Roswell, GA. Kirk has an amazing little boy who was born in 2007, who is the basis for the character Max in his novels. His time growing up in the south with his grandparents taught him the value and skills to live off the land. He is an avid outdoorsman, loves hunting, fishing and backpacking. When he's not honing his survival skills, Allmond is often found sitting at a role-playing game table, either as the GM of his own Zombie Apocalypse role playing game or as a participant in games run by one of the members of Grown as Gamers, the premier podcast for all things geek and pop culture.