<div class="content" name="Overview (synopsis)" uuid="c44360ae-2649-4bab-9798-8667d6672540"><p>The ClusAPI Protocol is used to remotely manage a <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_feef37b3-c173-4f51-aab6-b55a6366259b" data-linktype="relative-path">cluster</a></span>.
For example, this protocol can be used for the following purposes:</p><ul><li><p><span><span> 
</span></span>Determining whether a computer system is configured or active as
a <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_762051d8-4fdc-437e-af9d-3f4da77c3c7d" data-linktype="relative-path">node</a></span>
in a cluster.</p>
</li><li><p><span><span> 
</span></span>Querying the configuration of the cluster; for example, cluster
and node versions.</p>
</li><li><p><span><span> 
</span></span>Storing data in and retrieving data from the <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_13de67f6-ac9d-491f-8dfb-12601a8b0838" data-linktype="relative-path">cluster
registry</a></span>.</p>
</li><li><p><span><span> 
</span></span>Querying the configuration of applications and services that are
hosted by the cluster.</p>
</li><li><p><span><span> 
</span></span>Starting and stopping applications and services that are hosted
by the cluster.</p>
</li></ul><p>An implementation can include methods that are executed
using implementation-specific methods between servers. These include adding
nodes to a cluster, changing the configuration of the cluster (for example,
quorum policies or cluster version), restoring the cluster, and configuring
applications and services to be hosted by a cluster. Such methods are specific
to cluster-<span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_434b0234-e970-4e8c-bdfa-e16a30d96703" data-linktype="relative-path">server</a></span>
implementations.</p><p>A cluster is composed of computer systems that are called
nodes. Before a computer can participate in a cluster as a node, it is
configured as a cluster node. A node can be configured as a member of only one
cluster at a time. After it is configured, a node can actively participate in
its cluster.</p><p>The nodes of a cluster are interconnected by one or more <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_5d7cd0af-d5a4-4a59-bb13-9c57663c5ea7" data-linktype="relative-path">cluster
networks</a></span> and their corresponding <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_1e84f613-804f-42bb-a523-658b8ab0df6a" data-linktype="relative-path">cluster network interfaces</a></span>.
A cluster network represents a distinct communication path between a set of
nodes and typically represents a subnet in the underlying <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_912e1c9c-aad3-4f40-9119-efd2b05854e8" data-linktype="relative-path">network</a></span>
infrastructure. A cluster network interface is an instance of a connection
point on a cluster network and is associated with a specific node. Thus, a
given cluster network has a set of interfaces that defines the set of nodes
that are reachable on that cluster network.</p><p>Applications and services that are hosted by a cluster are
represented as cluster <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_94e97f15-2f1a-406f-a740-607bb97761ec" data-linktype="relative-path">resources</a></span>. A
resource can be started and stopped, consequently starting and stopping the
application or service that the resource represents. Resources are contained in
logical units called groups. A resource can be configured to depend on other
resources in the same group. Resources are started and stopped in dependency
order. A group is owned by one cluster node at a time, and a <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_60e0e1fa-66fe-41e1-b5e3-ceab97e53506" data-linktype="relative-path">client</a></span>
can request that a group be moved from one node to another node. Moving a group
in this manner stops all the resources on one node and starts them on the other
node.</p><p>Each resource is of one <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_597fe367-f504-4295-9ed9-92cd892796cd" data-linktype="relative-path">resource type</a></span>. The
resource type codifies how the resource is hosted by the cluster; for example,
the semantics of starting or stopping it. Resource types that codify similar
functionality can be grouped into a <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_cc618d9a-89bb-4c84-9309-6ade99bba728" data-linktype="relative-path">resource class</a></span>. For
example, resources that represent data storage devices can be grouped into a
storage class even if they are of different resource types. The configuration
of an object includes its common and private properties if such properties are
part of the object&#39;s configuration and have been defined. </p><p>Applications are made aware of changes in both the
non-volatile and volatile <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_93ba0f62-7125-4a3e-ab60-5fd4f504bc8c" data-linktype="relative-path">cluster state</a></span>
through a <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_aedc8c3e-1557-4dfc-a89c-ff6f04345886" data-linktype="relative-path">notification port</a></span>.
The application can subscribe to a variety of events, such as the creation and
deletion of objects and changes in object state and property <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_7bc13a0c-ca1a-4c78-b1bf-67e243f778bb" data-linktype="relative-path">values</a></span>.</p><p>The cluster registry is organized in a hierarchical tree
structure that consists of keys and values. The cluster registry is rooted at a
single key. Each object is associated with a key in the cluster registry, and
the object&#39;s properties are stored under this key. </p><p>In a typical ClusAPI Protocol session, the client connects
to the server and requests to open a <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_0db09eb6-111b-473a-b821-12cd6d6342b1" data-linktype="relative-path">cluster object</a></span> on
the server. If the server accepts the request, it responds with an <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_9dfe84e3-a772-4ad1-9a25-1255c1dc0f84" data-linktype="relative-path">RPC
context handle</a></span> that refers to the cluster object. The client uses
this RPC context handle to operate on that cluster object. Typically, the
client then sends another request to the server and specifies the type of
operation to perform and any specific parameters that are associated with that
operation. If the server accepts this request, it attempts to query or change
the state of the cluster object based on the request and responds to the client
with the result of the operation. After the client is finished operating on the
server cluster object, it terminates the protocol by sending a request to close
the RPC context handle.</p><p>The ClusAPI Protocol is an <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_8a7f6700-8311-45bc-af10-82e10accd331" data-linktype="relative-path">RPC</a></span>-based protocol.
For every method that the server receives, it executes the method against the
current server configuration and cluster state. The server maintains client
state information, and in some cases, protocol methods are executed in a
particular order. </p><p>In response to some specific errors that are returned by the
server or the <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_c2eeb200-3cd0-4916-966e-d7d6bff1737a" data-linktype="relative-path">RPC transport</a></span>, a
client might attempt to connect to a different server in the cluster and
reissue the method, thus masking the error from the caller.</p></div>