Agraphs

If an Agraph deployment type is chosen, an Agraph cluster component is defined.

This object is used to apply actions to an entire cluster of Agraphs and their associated Dgraphs, rather than manually iterating over a number of graphs. In addition, the object contains logic associated with Agraph restart strategies, which are described below. Multiple Agraph clusters can be defined, with no restriction around which graphs belong to each cluster or how many clusters a graph belongs to.

An Agraph cluster is configured with references to all Agraphs and Dgraphs that belong to that cluster. In addition, the cluster can be configured to copy data in parallel or serially. This setting applies to copies that are performed to distribute a new index, partial updates or configuration updates to each server that hosts a graph. By default, the template sets this value to true.
<!--
########################################################################
# Agraph Cluster
#
-->
<agraph-cluster id="AgraphCluster" getDataInParallel="true">
  <agraph ref="Agraph1" />
  <agraph ref="Agraph2" />
  <dgraph ref="Dgraph1" />
  <dgraph ref="Dgraph2" />
</agraph-cluster>
In an Agraph deployment, two Agraphs and two Dgraphs are defined by the template by default. In order to avoid defining shared configuration for multiple Agraphs in each Agraph's XML configuration, the document provides an agraph-defaults element, where shared settings can be configured and inherited (or overridden) by each Agraph defined in the document. This defaults object specifies a number of custom configuration properties that are used by the update scripts to define operational functionality.
 <!--
    ########################################################################
    # Global Agraph settings, inherited by all agraphs
    #
  -->
  <agraph-defaults>
    <properties>
      <property name="srcIndexDir" value="./data/agidx_output" />
      <property name="srcIndexHostId" value="ITLHost" />
      <property name="numLogBackups" value="10" />
    </properties>
    <directories>
      <directory name="localIndexDir">./data/agraphs/local_agraph_input</directory>
    </directories>
    <args>
      <arg>--no-partial</arg>
    </args>
    <startup-timeout>120</startup-timeout>
  </agraph-defaults>

Each Agraph defined in the document inherits from the settings defined in the agraph-defaults element, and also specifies settings that are unique to the Agraph. In addition to standard Agraph configuration and process arguments, Agraphs add a custom property used to define a restart strategy.

restartGroup - Indicates the Agraph's membership in a restart group. When applying a new index or configuration updates to a cluster of graphs (or when updating a cluster of graphs with a provisioning change such as a new or modified process argument), the Agraph cluster object applies changes simultaneously to all graphs in a restart group. This means that a few common restart strategies can be applied as follows:
  1. Restart/update all Agraphs at once: specify the same restartGroup value for each Agraph and associated Dgraphs.
  2. Restart/update Agraphs one at a time: specify a unique restartGroup value for each Agraph and associated Dgraphs.
  3. Restart/update Agraphs on each server simultaneously: specify the same restartGroup value for each Agraph and associated Dgraphs on a physical server.
<agraph id="Agraph1" host-id="MDEXHost" port="14000">
  <properties>
    <property name="restartGroup" value="A" />
  </properties>
  <dgraph-children>
    <dgraph-child>Dgraph1</dgraph-child>
    <dgraph-child>Dgraph2</dgraph-child>
  </dgraph-children>
  <log-dir>./logs/agraphs/Agraph1</log-dir>
  <input-dir>./data/agraphs/Agraph1/agraph_input</input-dir>
</agraph>

Restart group values are arbitrary strings. The Agraph cluster iterates through the groups in alphabetical order, though non-standard characters may result in groups being updated in an unexpected order.

The Agraph component (and agraph-defaults) can specify pre-shutdown and post-startup scripts in the same way as the Dgraph component. Refer to the previous section for details.

Enabling SSL for the Agraph

As with the Dgraph, three SSL elements can be included in the Agraph provisioning definition to specify the certificates to use. The cert-file element (for the eneCert.pem certificate), the ca-file element (for the eneCA.pem Certificate Authority file), and the optional cipher element can be used. as shown in this example:
<agraph id="Agraph1" host-id="MDEXHost" port="14000">
...
   <cert-file>
      C:\Endeca\PlatformServices\workspace\etc\eneCert.pem
   </cert-file>
   <ca-file>
      C:\Endeca\PlatformServices\workspace\etc\eneCA.pem
   </ca-file>
	  <cipher>AES128-SHA</cipher>
</agraph>