<?xml version="1.0"?>
<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->

<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-High-Availability">
  <title>High Availability</title>

  <section xml:id="Java-Broker-High-Availability-GeneralIntroduction">
    <title>General Introduction</title>
    <para>The term High Availability (HA) usually refers to having a number of instances of a
      service such as a Message Broker available so that should a service unexpectedly fail, or
      requires to be shutdown for maintenance, users may quickly connect to another instance and
      continue their work with minimal interruption. HA is one way to make a overall system more
      resilient by eliminating a single point of failure from a system.</para>
    <para>HA offerings are usually categorised as <emphasis role="bold">Active/Active</emphasis> or
        <emphasis role="bold">Active/Passive</emphasis>. An Active/Active system is one where all
      nodes within the group are usually available for use by clients all of the time. In an
      Active/Passive system, one only node within the group is available for use by clients at any
      one time, whilst the others are in some kind of standby state, awaiting to quickly step-in in
      the event the active node becomes unavailable. </para>
  </section>

  <section xml:id="Java-Broker-High-Availability-OverviewOfHA">
    <title>High Availability Overview</title>
    <para>The Broker provides a HA implementation offering an <emphasis role="bold">Active/Passive</emphasis> mode of operation.
      When using HA, many instances of the Broker work together to form an high availability group of two or more nodes.</para>
    <para>The remainder of this section now talks about the specifics of how HA is achieved in terms
      of the <link linkend="Java-Broker-Concepts">concepts</link> introduced earlier in this
      book.</para>
    <para>The <link linkend="Java-Broker-Concepts-Virtualhosts">Virtualhost</link> is the unit of
      replication. This means that any <emphasis>durable</emphasis> queues, exchanges, and bindings
      belonging to that virtualhost, any <emphasis>persistent</emphasis> messages contained within
      the queues and any attribute settings applied to the virtualhost itself are automatically
      replicated to all nodes within the group.<footnote>
        <para>Transient messages and messages on non-durable queues are not replicated.</para>
      </footnote></para>
    <para>It is the <link linkend="Java-Broker-Concepts-Virtualhost-Nodes">Virtualhost Nodes</link>
      (from different Broker instances) that join together to form a group. The virtualhost nodes
      collectively to coordinate the group: they organise replication between the master and
      replicas and conduct elections to determine who becomes the new master in the event of the old
      failing.</para>
    <para>When a virtualhost node is in the <emphasis>master</emphasis> role, the virtualhost
      beneath it is available for messaging work. Any write operations sent to the virtualhost are
      automatically replicated to all other nodes in group.</para>
    <para>When a virtualhost node is in the <emphasis>replica</emphasis> role, the virtualhost
      beneath it is always unavailable for message work. Any attempted connections to a virtualhost
      in this state are automatically turned away, allowing a messaging client to discover where the
      master currently resides. When in replica role, the node sole responsibility is to consume a
      replication stream in order that it remains up to date with the master.</para>
    <para>Messaging clients discover the active virtualhost.This can be achieved using a static
      technique (for instance, a failover url (a feature of the Apache Qpid JMS and Apache Qpid JMS AMQP 0-x clients),
      or a dynamic one utilising some kind of proxy or virtual IP (VIP).</para>
    <para>The figure that follows illustrates a group formed of three virtualhost nodes from three
      separate Broker instances. A client is connected to the virtualhost node that is in the master
      role. The two virtualhost nodes <literal>weather1</literal> and <literal>weather3</literal>
      are replicas and are receiving a stream of updates.</para>
    <figure xml:id="Java-Broker-High-Availability-OverviewOfHA-Figure">
      <title>3-node group deployed across three Brokers.</title>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/HA-Overview.png" format="PNG" scalefit="1"/>
        </imageobject>
        <textobject>
          <phrase>Diagram showing a 3 node group deployed across three Brokers</phrase>
        </textobject>
      </mediaobject>
    </figure>
    <para>Currently, the only virtualhost/virtualhost node type offering HA is BDB HA. Internally,
      this leverages the HA capabilities of the Berkeley DB JE edition.</para>
    <note>
      <para>The HA solution from the Apache Qpid Broker-J is incompatible with the HA solution offered by the CPP
        Broker. It is not possible to co-locate Qpid Broker-J and CPP Brokers within the same group.</para>
    </note>
  </section>
  <section xml:id="Java-Broker-High-Availability-CreatingGroup">
    <title>Creating a group</title>
    <para>This section describes how to create a group. At a high level, creating a group involves
      first creating the first node standalone, then creating subsequent nodes referencing the first
      node so the nodes can introduce themselves and gradually the group is built up.</para>
    <para>A group is created through either <link linkend="Java-Broker-Management-Channel-Web-Console">Web Management</link> or the <link linkend="Java-Broker-Management-Channel-REST-API">REST API</link>. These instructions
      presume you are using Web Management. To illustrate the example it builds the group
      illustrated in figure <xref linkend="Java-Broker-High-Availability-OverviewOfHA-Figure"/></para>
    <para><orderedlist>
        <listitem>
          <para>Install a Broker on each machine that will be used to host the group. As messaging
            clients will need to be able to connect to and authentication to all Brokers, it usually
            makes sense to choose a common authentication mechanism e.g. Simple LDAP Authentication,
            External with SSL client authentication or Kerberos.</para>
        </listitem>
        <listitem>
          <para>Select one Broker instance to host the first node instance. This choice is an
            arbitrary one. The node is special only whilst creating group. Once creation is
            complete, all nodes will be considered equal.</para>
        </listitem>
        <listitem>
          <para>Click the <literal>Add</literal> button on the Virtualhost Panel on the Broker
            tab.</para>
          <para>
            <orderedlist>
              <listitem>
                <para>Give the Virtualhost node a unique name e.g. <literal>weather1</literal>. The
                  name must be unique within the group and unique to that Broker. It is best if the
                  node names are chosen from a different nomenclature than the machine names
                  themselves.</para>
              </listitem>
              <listitem>
                <para>Choose <literal>BDB_HA</literal> and select <literal>New group</literal>
                </para>
              </listitem>
              <listitem>
                <para>Give the group a name e.g. <literal>weather</literal>. The group name must be
                  unique and will be the name also given to the virtualhost, so this is the name the
                  messaging clients will use in their connection url.</para>
              </listitem>
              <listitem>
                <para>Give the address of this node. This is an address on this node's host that
                  will be used for replication purposes. The hostname <emphasis>must</emphasis> be
                  resolvable by all the other nodes in the group. This is separate from the address
                  used by messaging clients to connect to the Broker. It is usually best to choose a
                  symbolic name, rather than an IP address.</para>
              </listitem>
              <listitem>
                <para>Now add the node addresses of all the other nodes that will form the group. In
                  our example we are building a three node group so we give the node addresses of
                    <literal>chaac:5000</literal> and <literal>indra:5000</literal>.</para>
              </listitem>
              <listitem>
                <para>Click Add to create the node. The virtualhost node will be created with the
                  virtualhost. As there is only one node at this stage, the role will be
                  master.</para>
              </listitem>
            </orderedlist>
            <figure>
              <title>Creating 1st node in a group</title>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="images/HA-Create-1.png" format="PNG" scalefit="1"/>
                </imageobject>
                <textobject>
                  <phrase>Creating 1st node in a group</phrase>
                </textobject>
              </mediaobject>
            </figure>
          </para>
        </listitem>
        <listitem>
          <para>Now move to the second Broker to be the group. Click the <literal>Add</literal>
            button on the Virtualhost Panel on the Broker tab of the second Broker.</para>
          <para>
            <orderedlist>
              <listitem>
                <para>Give the Virtualhost node a unique name e.g.
                  <literal>weather2</literal>.</para>
              </listitem>
              <listitem>
                <para>Choose <literal>BDB_HA</literal> and choose <literal>Existing group</literal>
                </para>
              </listitem>
              <listitem>
                <para>Give the details of the <emphasis>existing node</emphasis>. Following our
                  example, specify <literal>weather</literal>, <literal>weather1</literal> and
                    <literal>thor:5000</literal></para>
              </listitem>
              <listitem>
                <para>Give the address of this node.</para>
              </listitem>
              <listitem>
                <para>Click Add to create the node. The node will use the existing details to
                  contact it and introduce itself into the group. At this stage, the group will have
                  two nodes, with the second node in the replica role.</para>
              </listitem>
              <listitem>
                <para>Repeat these steps until you have added all the nodes to the group.</para>
              </listitem>
            </orderedlist>
            <figure>
              <title>Adding subsequent nodes to the group</title>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="images/HA-Create-2.png" format="PNG" scalefit="1"/>
                </imageobject>
                <textobject>
                  <phrase>Adding subsequent nodes to the group</phrase>
                </textobject>
              </mediaobject>
            </figure>
          </para>
        </listitem>

      </orderedlist></para>
    <para>The group is now formed and is ready for us. Looking at the virtualhost node of any of the
      nodes shows a complete view of the whole group. <figure>
        <title>View of group from one node</title>
        <mediaobject>
          <imageobject>
            <imagedata fileref="images/HA-Create-3.png" format="PNG" scalefit="1"/>
          </imageobject>
          <textobject>
            <phrase>View of group from one node</phrase>
          </textobject>
        </mediaobject>
      </figure></para>
  </section>

  <section xml:id="Java-Broker-High-Availability-Behaviour">
    <title>Behaviour of the Group</title>
    <para>This section first describes the behaviour of the group in its default configuration. It
      then goes on to talk about the various controls that are available to override it. It
      describes the controls available that affect the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://en.wikipedia.org/wiki/ACID#Durability">durability</link> of transactions and
      the data consistency between the master and replicas and thus make trade offs between
      performance and reliability.</para>

    <section xml:id="Java-Broker-High-Availability-Behaviour-Default-Behaviour">
      <title>Default Behaviour</title>
      <para>Let's first look at the behaviour of a group in default configuration.</para>
      <para>In the default configuration, for any messaging work to be done, there must be at least
          <emphasis>quorum</emphasis> nodes present. This means for example, in a three node group,
        this means there must be at least two nodes available.</para>
      <para>When a messaging client sends a transaction, it can be assured that, before the control
        returns back to his application after the commit call that the following is true:</para>
      <para><itemizedlist>
          <listitem>
            <para>At the master, the transaction is <emphasis>written to disk and OS level caches
                are flushed</emphasis> meaning the data is on the storage device.</para>
          </listitem>
          <listitem>
            <para>At least quorum minus 1 replicas, <emphasis>acknowledge the receipt of
                transaction</emphasis>. The replicas will write the data to the storage device
              sometime later.</para>
          </listitem>
        </itemizedlist></para>
      <para>If there were to be a master failure immediately after the transaction was committed,
        the transaction would be held by at least quorum minus one replicas. For example, if we had
        a group of three, then we would be assured that at least one replica held the
        transaction.</para>

      <para>In the event of a master failure, if quorum nodes remain, those nodes hold an election.
        The nodes will elect master the node with the most recent transaction. If two or more nodes
        have the most recent transaction the group makes an arbitrary choice. If quorum number of
        nodes does not remain, the nodes cannot elect a new master and will wait until nodes rejoin.
        You will see later that manual controls are available allow service to be restored from
        fewer than quorum nodes and to influence which node gets elected in the event of a
        tie.</para>

      <para>Whenever a group has fewer than quorum nodes present, the virtualhost will be
        unavailable and messaging connections will be refused. If quorum disappears at the very
        moment a messaging client sends a transaction that transaction will fail.</para>

      <para>You will have noticed the difference in the synchronization policies applied the master
        and the replicas. The replicas send the acknowledgement back before the data is written to
        disk. The master synchronously writes the transaction to storage. This is an example of a
        trade off between durability and performance. We will see more about how to control this
        trade off later.</para>
    </section>
    <section xml:id="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy">
      <title>Synchronization Policy</title>
      <para>The <emphasis>synchronization policy</emphasis> dictates what a node must do when it
        receives a transaction before it acknowledges that transaction to the rest of the
        group.</para>
      <para>The following options are available: <itemizedlist>
          <listitem>
            <para><emphasis>SYNC</emphasis>. The node must write the transaction to disk and flush
              any OS level buffers before sending the acknowledgement. SYNC is offers the highest
              durability but offers the least performance.</para>
          </listitem>
          <listitem>
            <para><emphasis>WRITE_NO_SYNC</emphasis>. The node must write the transaction to disk
              before sending the acknowledgement. OS level buffers will be flush as some point
              later. This typically provides an assurance against failure of the application but not
              the operating system or hardware.</para>
          </listitem>
          <listitem>
            <para><emphasis>NO_SYNC</emphasis>. The node immediately sends the acknowledgement. The
              transaction will be written and OS level buffers flushed as some point later. NO_SYNC
              offers the highest performance but the lowest durability level. This synchronization
              policy is sometimes known as <emphasis>commit to the network</emphasis>.</para>
          </listitem>
        </itemizedlist></para>
      <para>It is possible to assign a one policy to the master and a different policy to the
        replicas. These are configured as <link linkend="Java-Broker-Management-Managing-Virtualhost-Attributes">attributes on the
          virtualhost</link>. By default the master uses <emphasis>SYNC</emphasis> and replicas use
          <emphasis>NO_SYNC</emphasis>.</para>
    </section>
    <section xml:id="Java-Broker-High-Availability-Behaviour-NodePriority">
      <title>Node Priority</title>
      <para>Node priority can be used to influence the behaviour of the election algorithm. It is
        useful in the case were you want to favour some nodes over others. For instance, if you wish
        to favour nodes located in a particular data centre over those in a remote site. </para>
      <para>The following options are available: <itemizedlist>
          <listitem>
            <para><emphasis>Highest</emphasis>. Nodes with this priority will be more favoured. In
              the event of two or more nodes having the most recent transaction, the node with this
              priority will be elected master. If two or more nodes have this priority the algorithm
              will make an arbitrary choice.</para>
          </listitem>
          <listitem>
            <para><emphasis>High</emphasis>. Nodes with this priority will be favoured but not as
              much so as those with Highest.</para>
          </listitem>
          <listitem>
            <para><emphasis>Normal</emphasis>. This is default election priority.</para>
          </listitem>
          <listitem>
            <para><emphasis>Never</emphasis>. The node will never be elected <emphasis>even if the
                node has the most recent transaction</emphasis>. The node will still keep up to date
              with the replication stream and will still vote itself, but can just never be
              elected.</para>
          </listitem>
        </itemizedlist>
      </para>
      <para>Node priority is configured as an <link linkend="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">attribute on the
          virtualhost node</link> and can be changed at runtime and is effective immediately.</para>
      <important>
        <para>Use of the Never priority can lead to transaction loss. For example, consider a group
          of three where replica-2 is marked as Never. If a transaction were to arrive and it be
          acknowledged only by Master and Replica-2, the transaction would succeed. Replica 1 is
          running behind for some reason (perhaps a full-GC). If a Master failure were to occur at
          that moment, the replicas would elect Replica-1 even though Replica-2 had the most recent
          transaction.</para>
        <para>Transaction loss is reported by message <link linkend="Java-Broker-Appendix-Operation-Logging-Message-HA-1014">HA-1014</link>.</para>
      </important>
    </section>
    <section xml:id="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes">
      <title>Required Minimum Number Of Nodes</title>
      <para>This controls the required minimum number of nodes to complete a transaction and to
        elect a new master. By default, the required number of nodes is set to
          <emphasis>Default</emphasis> (which signifies quorum).</para>
      <para>It is possible to reduce the required minimum number of nodes. The rationale for doing
        this is normally to temporarily restore service from fewer than quorum nodes following an
        extraordinary failure.</para>
      <para>For example, consider a group of three. If one node were to fail, as quorum still
        remained, the system would continue work without any intervention. If the failing node were
        the master, a new master would be elected.</para>
      <para>What if a further node were to fail? Quorum no longer remains, and the remaining node
        would just wait. It cannot elect itself master. What if we wanted to restore service from
        just this one node?</para>
      <para>In this case, Required Number of Nodes can be reduced to 1 on the remain node, allowing
        the node to elect itself and service to be restored from the singleton. Required minimum
        number of nodes is configured as an <link linkend="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">attribute on the
          virtualhost node</link> and can be changed at runtime and is effective immediately.</para>
      <important>
        <para>The attribute must be used cautiously. Careless use will lead to lost transactions and
          can lead to a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://en.wikipedia.org/wiki/Split-brain_(computing)">split-brain</link> in the event of a network partition. If used to temporarily restore
          service from fewer than quorum nodes, it is <emphasis>imperative</emphasis> to revert it
          to the Default value as the failed nodes are restored.</para>
        <para>Transaction loss is reported by message <link linkend="Java-Broker-Appendix-Operation-Logging-Message-HA-1014">HA-1014</link>.</para>
      </important>
    </section>
    <section xml:id="Java-Broker-High-Availability-Behaviour-DesignatedPrimary">
      <title>Allow to Operate Solo</title>
      <para>This attribute only applies to groups containing exactly two nodes.</para>
      <para> In a group of two, if a node were to fail then in default configuration work will cease
        as quorum no longer exists. A single node cannot elect itself master. </para>
      <para>The <literal>allow to operate solo</literal> flag allows a node in a two node group to elect itself master and
        to operate sole. It is configured as an <link linkend="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">attribute on the
          virtualhost node</link> and can be changed at runtime and is effective immediately.</para>
      <para>For example, consider a group of two where the master fails. Service will be interrupted
        as the remaining node cannot elect itself master. To allow it to become master, apply the
        <literal>allow to operate solo</literal> flag to it. It will elect itself master and work can continue, albeit
        from one node.</para>
      <important>
        <para>It is imperative not to allow the <literal>allow to operate solo</literal> flag to be set on both nodes at once. To
          do so will mean, in the event of a network partition, a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://en.wikipedia.org/wiki/Split-brain_(computing)">split-brain</link> will
            occur.</para>
        <para>Transaction loss is reported by message <link linkend="Java-Broker-Appendix-Operation-Logging-Message-HA-1014">HA-1014</link>.</para>
      </important>
    </section>
    <section xml:id="Java-Broker-High-Availability-Behaviour-MaximumMessageSize">
      <title>Maximum message size</title>
      <para>
        Internally, BDB JE HA restricts the maximum size of replication stream records passed from the master
        to the replica(s). This helps prevent DOS attacks.
        If expected application maximum message size is greater than 5MB, the BDB JE setting
        <literal>je.rep.maxMessageSize</literal> and Qpid context variable <literal>qpid.max_message_size</literal>
        needs to be adjusted to reflect this in order to avoid running into the BDB HA JE limit.
      </para>
    </section>
  </section>
  <section xml:id="Java-Broker-High-Availability-NodeOperations">
    <title>Node Operations</title>
    <section xml:id="Java-Broker-High-Availability-NodeOperations-Lifecycle">
      <title>Lifecycle</title>
      <para>Virtualhost nodes can be stopped, started and deleted.</para>
      <itemizedlist>
        <listitem>
          <para><emphasis>Stop</emphasis></para>
          <para>Stopping a master node will cause the node to temporarily leave the group. Any
            messaging clients will be disconnected and any in-flight transaction rollbacked. The
            remaining nodes will elect a new master if quorum number of nodes still remains.</para>
          <para>Stopping a replica node will cause the node to temporarily leave the group too.
            Providing quorum still exists, the current master will continue without interruption. If
            by leaving the group, quorum no longer exists, all the nodes will begin waiting,
            disconnecting any messaging clients, and the virtualhost will become unavailable.</para>
          <para>A stopped virtualhost node is still considered to be a member of the group.</para>
        </listitem>
        <listitem>
          <para><emphasis>Start</emphasis></para>
          <para>Starting a virtualhost node allows it to rejoin the group.</para>
          <para>If the group already has a master, the node will catch up from the master and then
            become a replica once it has done so.</para>
          <para>If the group did not have quorum and so had no master, but the rejoining of this
            node means quorum now exists, an election will take place. The node with the most up to
            date transaction will become master unless influenced by the priority rules described
            above.</para>
          <note>
            <para>The length of time taken to catch up will depend on how long the node has been
              stopped. The worst case is where the node has been stopped for more than one hour. In
              this case, the master will perform an automated <literal>network restore</literal>.
              This involves streaming all the data held by the master over to the replica. This
              could take considerable time.</para>
          </note>
        </listitem>
        <listitem>
          <para><emphasis>Delete</emphasis></para>
          <para>A virtualhost node can be deleted. Deleting a node permanently removes the node from
            the group. The data stored locally is removed but this does not affect the data held by
            the remainder of the group.</para>
          <note>
            <para>The names of deleted virtualhost node cannot be reused within a group.</para>
          </note>
        </listitem>
      </itemizedlist>
      <para>It is also possible to add nodes to an existing group using the procedure described
        above.</para>
    </section>
    <section xml:id="Java-Broker-High-Availability-NodeOperations-TransferMaster">
      <title>Transfer Master</title>
      <para>This operation allows the mastership to be moved from node to node. This is useful for
        restoring a business as usual state after a failure.</para>
      <para>When using this function, the following occurs. <orderedlist>
          <listitem>
            <para>The system first gives time for the chosen new master to become reasonable up to
              date. </para>
          </listitem>
          <listitem>
            <para>It then suspends transactions on the old master and allows the chosen node to
              become up to date.</para>
          </listitem>
          <listitem>
            <para>The suspended transactions are aborted and any messaging clients connected to the
              old master are disconnected.</para>
          </listitem>
          <listitem>
            <para>The chosen master becomes the new master. The old master becomes a replica.</para>
          </listitem>
          <listitem>
            <para>Messaging clients reconnect the new master.</para>
          </listitem>
        </orderedlist></para>
    </section>
  </section>

  <section xml:id="Java-Broker-High-Availability-ClientFailover">
    <title>Client failover</title>
    <para>As mentioned above, the clients need to be able to find the location of the active
      virtualhost within the group.</para>
    <para>Clients can do this using a static technique, for example , utilising the failover feature of the Apache Qpid
      JMS and Apache Qpid JMS AMQP 0-x clients where the client has a list of all the nodes, and tries each node in
      sequence until it discovers the node with the active virtualhost.</para>
    <para>Another possibility is a dynamic technique utilising a proxy or Virtual IP (VIP). These
      require other software and/or hardware and are outside the scope of this document.</para>
  </section>

  <section xml:id="Java-Broker-High-Availability-DiskSpace">
    <title>Disk space requirements</title>
    <para>In the case where node in a group are down, the master must keep the data they are missing
      for them to allow them to return to the replica role quickly.</para>
    <para>By default, the master will retain up to 1hour of missed transactions. In a busy
      production system, the disk space occupied could be considerable.</para>
    <para>This setting is controlled by virtualhost context variable
        <literal>je.rep.repStreamTimeout</literal>.</para>
  </section>

  <section xml:id="Java-Broker-High-Availability-Network-Requirements">
    <title>Network Requirements</title>
    <para>The HA Cluster performance depends on the network bandwidth, its use by existing traffic,
      and quality of service.</para>
    <para>In order to achieve the best performance it is recommended to use a separate network
      infrastructure for the Qpid HA Nodes which might include installation of dedicated network
      hardware on Broker hosts, assigning a higher priority to replication ports, installing a group
      in a separate network not impacted by any other traffic.</para>
  </section>

  <section xml:id="Java-Broker-High-Availability-Security">
    <title>Security</title>
    <para>The replication stream between the master and the replicas is insecure and can be
      intercepted by anyone having access to the replication network.</para>
    <para>In order to reduce the security risks the entire HA group is recommended to run in a
      separate network protected from general access and/or utilise SSH-tunnels/IPsec.</para>
  </section>

  <section xml:id="Java-Broker-High-Availability-Backup">
    <title>Backups</title>
    <para>It is recommend to use the hot backup script to periodically backup every node in the
      group. <xref linkend="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"/>.</para>
  </section>


  <section xml:id="Java-Broker-High-Availability-Reset-Group-Infomational">
    <title>Reset Group Information</title>
    <para>BDB JE internally stores details of the group within its database. There are some
      circumstances when resetting this information is useful.<itemizedlist>
        <listitem>
          <para>Copying data between environments (e.g. production to UAT)</para>
        </listitem>
        <listitem>
          <para>Some disaster recovery situations where a group must be recreated on new
            hardware</para>
        </listitem>
      </itemizedlist></para>
    <para>This is not an normal operation and is not usually required</para>
    <para>The following command replaces the group table contained within the JE logs files with the
      provided information. </para>
    <example>
      <title>Resetting of replication group with <classname>DbResetRepGroup</classname></title>
      <cmdsynopsis>
        <command>java</command>
        <arg choice="plain">-cp je-${bdb-version}.jar</arg>
        <arg choice="plain">com.sleepycat.je.rep.util.DbResetRepGroup</arg>
        <arg choice="plain">-h <replaceable>path/to/jelogfiles</replaceable></arg>
        <sbr/>
        <arg choice="plain">-groupName <replaceable>newgroupname</replaceable></arg>
        <arg choice="plain">-nodeName <replaceable>newnodename</replaceable></arg>
        <arg choice="plain">-nodeHostPort <replaceable>newhostname:5000</replaceable></arg>
      </cmdsynopsis>
    </example>
    <para>The modified log files can then by copied into
        <literal>\${QPID_WORK}/&lt;nodename&gt;/config</literal> directory of a target Broker. Then
      start the Broker, and add a BDB HA Virtualhost node specify the same group name, node name and
      node address. You will then have a group with a single node, ready to start re-adding
      additional nodes as described above. </para>
  </section>

</chapter>
