qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From acon...@apache.org
Subject svn commit: r1368244 [3/14] - in /qpid/site/docs/books/trunk: AMQP-Messaging-Broker-CPP-Book/html/ AMQP-Messaging-Broker-CPP-Book/html/css/ AMQP-Messaging-Broker-CPP-Book/pdf/ AMQP-Messaging-Broker-Java-Book/html/ AMQP-Messaging-Broker-Java-Book/html/c...
Date Wed, 01 Aug 2012 20:54:49 GMT
Modified: qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Active_Passive_Cluster.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Active_Passive_Cluster.html?rev=1368244&r1=1368243&r2=1368244&view=diff
==============================================================================
--- qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Active_Passive_Cluster.html (original)
+++ qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Active_Passive_Cluster.html Wed Aug  1 20:54:46 2012
@@ -1,31 +1,66 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>1.13. Active-passive Messaging Clusters (Preview)</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="ch01.html" title="Chapter 1.  Running the AMQP Messaging Broker"><link rel="prev" href="Using-message-groups.html" title="1.12.  Using Message Groups"><link rel="next" href="ch01s14.html" title="1.14. Queue Replication with the HA module"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">1.13. Active-passive Messaging Clusters (Preview)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Using-message-groups.html">Prev</a> </td><th
  width="60%" align="center">Chapter 1. 
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>1.13. Active-passive Messaging Clusters</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="ch01.html" title="Chapter 1.  Running the AMQP Messaging Broker"><link rel="prev" href="Using-message-groups.html" title="1.12.  Using Message Groups"><link rel="next" href="ch01s14.html" title="1.14. Queue Replication with the HA module"></head><body><div class="container" bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><DIV class="header"><DIV class="logo"><H1>Apache Qpid™</H1><H2>Open Source AMQP Messaging</H2></DIV></DIV><DIV class="menu_box"><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Apache Qpid</H3><UL><LI><A href="http://qpid.apache.org/index.
 html">Home</A></LI><LI><A href="http://qpid.apache.org/download.html">Download</A></LI><LI><A href="http://qpid.apache.org/getting_started.html">Getting Started</A></LI><LI><A href="http://www.apache.org/licenses/">License</A></LI><LI><A href="https://cwiki.apache.org/qpid/faq.html">FAQ</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Documentation</H3><UL><LI><A href="http://qpid.apache.org/documentation.html#doc-release">0.14 Release</A></LI><LI><A href="http://qpid.apache.org/documentation.html#doc-trunk">Trunk</A></LI><LI><A href="http://qpid.apache.org/documentation.html#doc-archives">Archive</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Community</H3><UL><LI><A href="http://qpid.apache.org/getting_involved.html">Getting Involved</A></LI><LI><A href="http://qpid.apache.org/source_repository.html">Source Repository</A></LI><LI><A href
 ="http://qpid.apache.org/mailing_lists.html">Mailing Lists</A></LI><LI><A href="https://cwiki.apache.org/qpid/">Wiki</A></LI><LI><A href="https://issues.apache.org/jira/browse/qpid">Issue Reporting</A></LI><LI><A href="http://qpid.apache.org/people.html">People</A></LI><LI><A href="http://qpid.apache.org/acknowledgements.html">Acknowledgements</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Developers</H3><UL><LI><A href="https://cwiki.apache.org/qpid/building.html">Building Qpid</A></LI><LI><A href="https://cwiki.apache.org/qpid/developer-pages.html">Developer Pages</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>About AMQP</H3><UL><LI><A href="http://qpid.apache.org/amqp.html">What is AMQP?</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>About Apache</H3><UL><LI><A href
 ="http://www.apache.org">Home</A></LI><LI><A href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</A></LI><LI><A href="http://www.apache.org/foundation/thanks.html">Thanks</A></LI><LI><A href="http://www.apache.org/security/">Security</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV></DIV><div class="main_text_area"><div class="main_text_area_top"></div><div class="main_text_area_body"><DIV class="breadcrumbs"><span class="breadcrumb-link"><a href="index.html">AMQP Messaging Broker (Implemented in C++)</a></span> &gt; <span class="breadcrumb-link"><a href="ch01.html">
       Running the AMQP Messaging Broker
-    </th><td width="20%" align="right"> <a accesskey="n" href="ch01s14.html">Next</a></td></tr></table><hr></div><div class="section" title="1.13. Active-passive Messaging Clusters (Preview)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="chap-Messaging_User_Guide-Active_Passive_Cluster"></a>1.13. Active-passive Messaging Clusters (Preview)</h2></div></div></div><div class="section" title="1.13.1. Overview"><div class="titlepage"><div><div><h3 class="title"><a name="id579486"></a>1.13.1. Overview</h3></div></div></div><p>
-      This release provides a preview of a new module for High Availability (HA). The new module is
-      not yet complete or ready for production use. It being made available so that users can
-      experiment with the new approach and provide feedback early in the development process.
-      Feedback should go to <a class="ulink" href="mailto:user@qpid.apache.org" target="_top">dev@qpid.apache.org</a>.
-    </p><p>
-      The old cluster module takes an <em class="firstterm">active-active</em> approach, i.e. all the
-      brokers in a cluster are able to handle client requests simultaneously. The new HA module
-      takes an <em class="firstterm">active-passive</em>, <em class="firstterm">hot-standby</em> approach.
-    </p><p>
-      In an active-passive cluster only one broker, known as the <em class="firstterm">primary</em>, is
-      active and serving clients at a time. The other brokers are standing by as
-      <em class="firstterm">backups</em>. Changes on the primary are immediately replicated to all the
-      backups so they are always up-to-date or "hot".  If the primary fails, one of the backups is
-      promoted to take over as the new primary. Clients fail-over to the new primary
-      automatically. If there are multiple backups, the backups also fail-over to become backups of
-      the new primary.  Backup brokers reject connection attempts, to enforce the requirement that
-      only the primary be active.
+    </a></span> &gt; <span class="breadcrumb-node">Active-passive Messaging Clusters</span></DIV><div class="section" title="1.13. Active-passive Messaging Clusters"><div class="titlepage"><div><div><h2 class="title"><a name="chap-Messaging_User_Guide-Active_Passive_Cluster"></a>1.13. Active-passive Messaging Clusters</h2></div></div></div><div class="section" title="1.13.1. Overview"><div class="titlepage"><div><div><h3 class="title"><a name="id480158"></a>1.13.1. Overview</h3></div></div></div><p>
+
+      The High Availability (HA) module provides
+      <em class="firstterm">active-passive</em>, <em class="firstterm">hot-standby</em>
+      messaging clusters to provide fault tolerant message delivery.
+    </p><p>
+      In an active-passive cluster only one broker, known as the
+      <em class="firstterm">primary</em>, is active and serving clients at a time. The other
+      brokers are standing by as <em class="firstterm">backups</em>. Changes on the primary
+      are replicated to all the backups so they are always up-to-date or "hot". Backup
+      brokers reject client connection attempts, to enforce the requirement that clients
+      only connect to the primary.
+    </p><p>
+      If the primary fails, one of the backups is promoted to take over as the new
+      primary. Clients fail-over to the new primary automatically. If there are multiple
+      backups, the other backups also fail-over to become backups of the new primary.
     </p><p>
-      This approach depends on an external <em class="firstterm">cluster resource manager</em> to detect
-      failures and choose the primary. <a class="ulink" href="https://fedorahosted.org/cluster/wiki/RGManager" target="_top">Rgmanager</a> is supported
+      This approach relies on an external <em class="firstterm">cluster resource manager</em>
+      to detect failures, choose the new primary and handle network partitions. <a class="ulink" href="https://fedorahosted.org/cluster/wiki/RGManager" target="_top">Rgmanager</a> is supported
       initially, but others may be supported in the future.
-    </p><div class="section" title="1.13.1.1. Why the new approach?"><div class="titlepage"><div><div><h4 class="title"><a name="id582994"></a>1.13.1.1. Why the new approach?</h4></div></div></div><p>
-	The new active-passive approach has several advantages compared to the
-	existing active-active cluster module.
-	</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+    </p><div class="section" title="1.13.1.1. Avoiding message loss"><div class="titlepage"><div><div><h4 class="title"><a name="id505341"></a>1.13.1.1. Avoiding message loss</h4></div></div></div><p>
+	In order to avoid message loss, the primary broker <span class="emphasis"><em>delays
+	acknowledgment</em></span> of messages received from clients until the
+	message has been replicated to and acknowledged by all of the back-up
+	brokers.
+      </p><p>
+	Clients buffer unacknowledged messages and re-send them in the event of
+	a fail-over.
+	<sup>[<a name="id508619" href="#ftn.id508619" class="footnote">1</a>]</sup>
+	If the primary crashes before a message is replicated to
+	all the backups, the client will re-send the message when it fails over
+	to the new primary.
+      </p><p>
+	Note that this means it is possible for messages to be
+	<span class="emphasis"><em>duplicated</em></span>. In the event of a failure it is
+	possible for a message to be both received by the backup that becomes
+	the new primary <span class="emphasis"><em>and</em></span> re-sent by the client.
+      </p><p>
+	When a new primary is promoted after a fail-over it is initially in
+	"recovering" mode. In this mode, it delays acknowledgment of messages
+	on behalf of all the backups that were connected to the previous
+	primary. This protects those messages against a failure of the new
+	primary until the backups have a chance to connect and catch up.
+      </p><div class="variablelist" title="Status of a HA broker"><p class="title"><b>Status of a HA broker</b></p><dl><dt><span class="term">Joining</span></dt><dd><p>
+	      Initial status of a new broker that has not yet connected to the primary.
+	    </p></dd><dt><span class="term">Catch-up</span></dt><dd><p>
+	      A backup broker that is connected to the primary and catching up
+	      on queues and messages.
+	    </p></dd><dt><span class="term">Ready</span></dt><dd><p>
+	      A backup broker that is fully caught-up and ready to take over as
+	      primary.
+	    </p></dd><dt><span class="term">Recovering</span></dt><dd><p>
+	      The newly-promoted primary, waiting for backups to connect and catch up.
+	    </p></dd><dt><span class="term">Active</span></dt><dd><p>
+	      The active primary broker with all backups connected and caught-up.
+	    </p></dd></dl></div></div><div class="section" title="1.13.1.2. Replacing the old cluster module"><div class="titlepage"><div><div><h4 class="title"><a name="id506620"></a>1.13.1.2. Replacing the old cluster module</h4></div></div></div><p>
+	The High Availability (HA) module replaces the previous
+	<em class="firstterm">active-active</em> cluster module.  The new active-passive
+	approach has several advantages compared to the existing active-active cluster
+	module.
+	</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem">
 	    It does not depend directly on openais or corosync. It does not use multicast
 	    which simplifies deployment.
 	  </li><li class="listitem">
@@ -39,51 +74,36 @@
 	    It can take advantage of features provided by the resource manager, for example
 	    virtual IP addresses.
 	  </li><li class="listitem">
-	    Improved performance and scalability due to better use of multiple CPU s
+	    Improved performance and scalability due to better use of multiple CPUs
 	  </li></ul></div><p>
-      </p></div><div class="section" title="1.13.1.2. Limitations"><div class="titlepage"><div><div><h4 class="title"><a name="id579804"></a>1.13.1.2. Limitations</h4></div></div></div><p>
+      </p></div><div class="section" title="1.13.1.3. Limitations"><div class="titlepage"><div><div><h4 class="title"><a name="id509006"></a>1.13.1.3. Limitations</h4></div></div></div><p>
 	There are a number of known limitations in the current preview implementation. These
 	will be fixed in the production versions.
-      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+      </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem">
 	  Transactional changes to queue state are not replicated atomically. If the primary crashes
 	  during a transaction, it is possible that the backup could contain only part of the
 	  changes introduced by a transaction.
 	</li><li class="listitem">
-	  During a fail-over one backup is promoted to primary and any other backups switch to
-	  the new primary. Messages sent to the new primary before all the backups have
-	  switched could be lost if the new primary itself fails before all the backups have
-	  switched.
-	</li><li class="listitem">
-	  Acknowledgments are confirmed to clients before the message has been dequeued
-	  from replicas or indeed from the local store if that is asynchronous.
-	</li><li class="listitem">
-	  When used with a persistent store: if the entire cluster fails, there are no tools to help
-	  identify the most recent store.
-	</li><li class="listitem">
-	  A persistent broker must have its store erased before joining an existing cluster.
-	  In the production version a persistent broker will be able to load its store and
-	  avoid downloading messages that are in the store from the primary.
+	  Not yet integrated with the persistent store.  A persistent broker must have its
+	  store erased before joining an existing cluster.  If the entire cluster fails,
+	  there are no tools to help identify the most recent store. In the future a
+	  persistent broker will be able to use its stored messages to avoid downloading
+	  messages from the primary when joining a cluster.
 	</li><li class="listitem">
 	  Configuration changes (creating or deleting queues, exchanges and bindings) are
-	  replicated asynchronously. Management tools used to make changes will consider the
-	  change complete when it is complete on the primary, it may not yet be replicated
-	  to all the backups.
-	</li><li class="listitem">
-	  Deletions made immediately after a failure (before all the backups are ready) may
-	  be lost on a backup. Queues, exchange or bindings that were deleted on the primary could
-	  re-appear if that backup is promoted to primary on a subsequent failure.
-	</li><li class="listitem">
-	  Better control is needed over which queues/exchanges are replicated and which are not.
-	</li><li class="listitem">
-	  There are some known issues affecting performance, both the throughput of
-	  replication and the time taken for backups to fail-over. Performance will improve
-	  in the production version.
-	</li><li class="listitem">
-	  Federated links from the primary will be lost in fail over, they will not be
-	  re-connected on the new primary. Federation links to the primary can fail over.
-	</li><li class="listitem">
-	  Only plain FIFO queues can be replicated. LVQ and ring queues are not yet supported.
-	</li></ul></div></div></div><div class="section" title="1.13.2. Virtual IP Addresses"><div class="titlepage"><div><div><h3 class="title"><a name="id585587"></a>1.13.2. Virtual IP Addresses</h3></div></div></div><p>
+	  replicated asynchronously. Management tools used to make changes will consider
+	  the change complete when it is complete on the primary, it may not yet be
+	  replicated to all the backups.
+	</li><li class="listitem">
+	  Deletions made immediately after a failure (before all the backups are ready)
+	  may be lost on a backup. Queues, exchange or bindings that were deleted on the
+	  primary could re-appear if that backup is promoted to primary on a subsequent
+	  failure.
+	</li><li class="listitem">
+	  Federated links <span class="emphasis"><em>from</em></span> the primary will be lost in fail over,
+	  they will not be re-connected to the new primary. Federation links
+	  <span class="emphasis"><em>to</em></span> the primary can fail over.
+	</li></ul></div></div></div><div class="section" title="1.13.2. Virtual IP Addresses"><div class="titlepage"><div><div><h3 class="title"><a name="id485468"></a>1.13.2. Virtual IP Addresses</h3></div></div></div><p>
       Some resource managers (including <span class="command"><strong>rgmanager</strong></span>) support
       <em class="firstterm">virtual IP addresses</em>. A virtual IP address is an IP
       address that can be relocated to any of the nodes in a cluster.  The
@@ -95,69 +115,85 @@
       A virtual IP address can be used by clients and backup brokers to connect
       to the primary. The following sections will explain how to configure
       virtual IP addresses for clients or brokers.
-    </p></div><div class="section" title="1.13.3. Configuring the Brokers"><div class="titlepage"><div><div><h3 class="title"><a name="id576940"></a>1.13.3. Configuring the Brokers</h3></div></div></div><p>
+    </p></div><div class="section" title="1.13.3. Configuring the Brokers"><div class="titlepage"><div><div><h3 class="title"><a name="id504207"></a>1.13.3. Configuring the Brokers</h3></div></div></div><p>
       The broker must load the <code class="filename">ha</code> module, it is loaded by
       default. The following broker options are available for the HA module.
-    </p><div class="table"><a name="ha-broker-options"></a><p class="title"><b>Table 1.18. Options for High Availability Messaging Cluster</b></p><div class="table-contents"><table summary="Options for High Availability Messaging Cluster" border="1"><colgroup><col align="left" class="c1"><col align="left" class="c2"></colgroup><thead><tr><th colspan="2" align="center">
+    </p><div class="table"><a name="ha-broker-options"></a><p class="title"><b>Table 1.18. Broker Options for High Availability Messaging Cluster</b></p><div class="table-contents"><table summary="Broker Options for High Availability Messaging Cluster" border="1"><colgroup><col align="left" class="c1"><col align="left" class="c2"></colgroup><thead><tr><th colspan="2" align="center">
 	      Options for High Availability Messaging Cluster
 	    </th></tr></thead><tbody><tr><td align="left">
-	      <code class="literal">--ha-cluster <em class="replaceable"><code>yes|no</code></em></code>
+	      <code class="literal">ha-cluster <em class="replaceable"><code>yes|no</code></em></code>
 	    </td><td align="left">
 	      Set to "yes" to have the broker join a cluster.
 	    </td></tr><tr><td align="left">
-	      <code class="literal">--ha-brokers <em class="replaceable"><code>URL</code></em></code>
+	      <code class="literal">ha-brokers-url <em class="replaceable"><code>URL</code></em></code>
 	    </td><td align="left">
 	      <p>
 		The URL
-		<sup>[<a name="id571870" href="#ftn.id571870" class="footnote">a</a>]</sup>
-		used by brokers to connect to each other. If you use a virtual IP address
-		then this is a single address, for example
-		<code class="literal">amqp:20.0.20.200</code>. If you do not use a virtual IP
-		address then the URL must list all the addresses of brokers in the
-		cluster, for example <code class="literal">amqp:node1,node2,node3</code>
+		<sup>[<a name="id478976" href="#ftn.id478976" class="footnote">a</a>]</sup>
+		used by cluster brokers to connect to each other. The URL can
+		contain a list of all the broker addresses or it can contain a single
+		virtual IP address.  If a list is used it is comma separated, for example
+		<code class="literal">amqp:node1.exaple.com,node2.exaple.com,node3.exaple.com</code>
 	      </p>
-	    </td></tr><tr><td align="left"><code class="literal">--ha-public-brokers <em class="replaceable"><code>URL</code></em></code> </td><td align="left">
+	    </td></tr><tr><td align="left"><code class="literal">ha-public-url <em class="replaceable"><code>URL</code></em></code> </td><td align="left">
 	      <p>
-		The URL used by clients to connect to the brokers. This has the same
-		format as the <code class="literal">--ha-brokers</code> URL above.
+		The URL that is advertised to clients. This defaults to the
+		<code class="literal">ha-brokers-url</code> URL above, and has the same format.  A
+		virtual IP address is recommended for the public URL as it simplifies
+		deployment and hides changes to the cluster membership from clients.
 	      </p>
 	      <p>
-		If this option is not set, clients will use the same URL as brokers.
 		This option allows you to put client traffic on a different network from
 		broker traffic, which is recommended.
 	      </p>
-	    </td></tr><tr><td align="left"><code class="literal">--ha-replicate</code></td><td align="left">
-	      <p> 
+	    </td></tr><tr><td align="left"><code class="literal">ha-replicate </code><em class="replaceable"><code>VALUE</code></em></td><td align="left">
+	      <p>
 		Specifies whether queues and exchanges are replicated by default.
-		For details see <a class="xref" href="">???</a>
+		<em class="replaceable"><code>VALUE</code></em> is one of: <code class="literal">none</code>,
+		<code class="literal">configuration</code>, <code class="literal">all</code>.
+		For details see <a class="xref" href="chap-Messaging_User_Guide-Active_Passive_Cluster.html#ha-creating-replicated" title="1.13.7. Creating replicated queues and exchanges">Section 1.13.7, “Creating replicated queues and exchanges”</a>.
 	      </p>
 	    </td></tr><tr><td align="left">
-	      <p><code class="literal">--ha-username <em class="replaceable"><code>USER</code></em></code></p>
-	      <p><code class="literal">--ha-password <em class="replaceable"><code>PASS</code></em></code></p>
-	      <p><code class="literal">--ha-mechanism <em class="replaceable"><code>MECH</code></em></code></p>
+	      <p><code class="literal">ha-username <em class="replaceable"><code>USER</code></em></code></p>
+	      <p><code class="literal">ha-password <em class="replaceable"><code>PASS</code></em></code></p>
+	      <p><code class="literal">ha-mechanism <em class="replaceable"><code>MECH</code></em></code></p>
 	    </td><td align="left">
-	      Authentication settings used by brokers to connect to each other.
-	    </td></tr></tbody><tbody class="footnotes"><tr><td colspan="2"><div class="footnote"><p><sup>[<a id="ftn.id571870" href="#id571870" class="para">a</a>] </sup>
+	      Authentication settings used by HA brokers to connect to each other.
+	      If you are using authorization
+	      (<a class="xref" href="chap-Messaging_User_Guide-Security.html#sect-Messaging_User_Guide-Security-Authorization" title="1.5.2. Authorization">Section 1.5.2, “Authorization”</a>)
+	      then this user must have all permissions.
+	    </td></tr><tr><td align="left"><code class="literal">ha-backup-timeout <em class="replaceable"><code>SECONDS</code></em></code> </td><td align="left">
+	      <p>
+		Maximum time that a recovering primary will wait for an expected
+		backup to connect and become ready.
+	      </p>
+	    </td></tr><tr><td align="left"><code class="literal">link-maintenance-interval <em class="replaceable"><code>SECONDS</code></em></code></td><td align="left">
+	      <p>
+		Interval for the broker to check link health and re-connect links if need
+		be. If you want brokers to fail over quickly you can set this to a
+		fraction of a second, for example: 0.1.
+	      </p>
+	    </td></tr></tbody><tbody class="footnotes"><tr><td colspan="2"><div class="footnote"><p><sup>[<a id="ftn.id478976" href="#id478976" class="para">a</a>] </sup>
 		  The full format of the URL is given by this grammar:
 		  </p><pre class="programlisting">
-		    url = ["amqp:"][ user ["/" password] "@" ] addr ("," addr)*
-		    addr = tcp_addr / rmda_addr / ssl_addr / ...
-		    tcp_addr = ["tcp:"] host [":" port]
-		    rdma_addr = "rdma:" host [":" port]
-		    ssl_addr = "ssl:" host [":" port]'
+url = ["amqp:"][ user ["/" password] "@" ] addr ("," addr)*
+addr = tcp_addr / rmda_addr / ssl_addr / ...
+tcp_addr = ["tcp:"] host [":" port]
+rdma_addr = "rdma:" host [":" port]
+ssl_addr = "ssl:" host [":" port]'
 		  </pre><p>
 		  </p></div></td></tr></tbody></table></div></div><br class="table-break"><p>
       To configure a HA cluster you must set at least <code class="literal">ha-cluster</code> and
-      <code class="literal">ha-brokers</code>.
-    </p></div><div class="section" title="1.13.4. The Cluster Resource Manager"><div class="titlepage"><div><div><h3 class="title"><a name="id565105"></a>1.13.4. The Cluster Resource Manager</h3></div></div></div><p>
+      <code class="literal">ha-brokers-url</code>.
+    </p></div><div class="section" title="1.13.4. The Cluster Resource Manager"><div class="titlepage"><div><div><h3 class="title"><a name="id515081"></a>1.13.4. The Cluster Resource Manager</h3></div></div></div><p>
       Broker fail-over is managed by a <em class="firstterm">cluster resource
       manager</em>.  An integration with <a class="ulink" href="https://fedorahosted.org/cluster/wiki/RGManager" target="_top">rgmanager</a> is
       provided, but it is possible to integrate with other resource managers.
     </p><p>
       The resource manager is responsible for starting the <span class="command"><strong>qpidd</strong></span> broker
-      on each node in the cluster. The resource manager <em class="firstterm">promotes</em>
+      on each node in the cluster. The resource manager then <em class="firstterm">promotes</em>
       one of the brokers to be the primary. The other brokers connect to the primary as
-      backups, using the URL provided in the <code class="literal">ha-brokers</code> configuration
+      backups, using the URL provided in the <code class="literal">ha-brokers-url</code> configuration
       option.
     </p><p>
       Once connected, the backup brokers synchronize their state with the
@@ -175,7 +211,7 @@
       network partition divide a cluster into two sub-groups which cannot see each other.
       Usually a <em class="firstterm">quorum</em> voting algorithm is used that disables nodes
       in the inquorate sub-group.
-    </p></div><div class="section" title="1.13.5. Configuring rgmanager as resource manager"><div class="titlepage"><div><div><h3 class="title"><a name="id554322"></a>1.13.5. Configuring <span class="command"><strong>rgmanager</strong></span> as resource manager</h3></div></div></div><p>
+    </p></div><div class="section" title="1.13.5. Configuring rgmanager as resource manager"><div class="titlepage"><div><div><h3 class="title"><a name="id502213"></a>1.13.5. Configuring <span class="command"><strong>rgmanager</strong></span> as resource manager</h3></div></div></div><p>
       This section assumes that you are already familiar with setting up and configuring
       clustered services using <span class="command"><strong>cman</strong></span> and
       <span class="command"><strong>rgmanager</strong></span>. It will show you how to configure an active-passive,
@@ -191,45 +227,42 @@
 &lt;!--
 This is an example of a cluster.conf file to run qpidd HA under rgmanager.
 This example assumes a 3 node cluster, with nodes named node1, node2 and node3.
+
+NOTE: fencing is not shown, you must configure fencing appropriately for your cluster.
 --&gt;
 
 &lt;cluster name="qpid-test" config_version="18"&gt;
-  &lt;!-- The cluster has 3 nodes. Each has a unique nodid and one vote for quorum. --&gt;
+  &lt;!-- The cluster has 3 nodes. Each has a unique nodid and one vote
+       for quorum. --&gt;
   &lt;clusternodes&gt;
-    &lt;clusternode name="node1" nodeid="1"&gt;
-      &lt;fence/&gt;
-    &lt;/clusternode&gt;
-    &lt;clusternode name="node2" nodeid="2"&gt;
-      &lt;fence/&gt;
-    &lt;/clusternode&gt;
-    &lt;clusternode name="node3" nodeid="3"&gt;
-      &lt;fence/&gt;
-    &lt;/clusternode&gt;
+    &lt;clusternode name="node1.example.com" nodeid="1"/&gt;
+    &lt;clusternode name="node2.example.com" nodeid="2"/&gt;
+    &lt;clusternode name="node3.example.com" nodeid="3"/&gt;
   &lt;/clusternodes&gt;
   &lt;!-- Resouce Manager configuration. --&gt;
-  &lt;rm log_level="7"&gt;		&lt;!-- Verbose logging --&gt;
+  &lt;rm&gt;
     &lt;!--
 	There is a failoverdomain for each node containing just that node.
-	This lets us stipulate that the qpidd service should always run on all nodes.
+	This lets us stipulate that the qpidd service should always run on each node.
     --&gt;
     &lt;failoverdomains&gt;
       &lt;failoverdomain name="node1-domain" restricted="1"&gt;
-	&lt;failoverdomainnode name="node1"/&gt;
+	&lt;failoverdomainnode name="node1.example.com"/&gt;
       &lt;/failoverdomain&gt;
       &lt;failoverdomain name="node2-domain" restricted="1"&gt;
-	&lt;failoverdomainnode name="node2"/&gt;
+	&lt;failoverdomainnode name="node2.example.com"/&gt;
       &lt;/failoverdomain&gt;
       &lt;failoverdomain name="node3-domain" restricted="1"&gt;
-	&lt;failoverdomainnode name="node3"/&gt;
+	&lt;failoverdomainnode name="node3.example.com"/&gt;
       &lt;/failoverdomain&gt;
     &lt;/failoverdomains&gt;
 
     &lt;resources&gt;
       &lt;!-- This script starts a qpidd broker acting as a backup. --&gt;
-      &lt;script file="!!sysconfdir!!/init.d/qpidd" name="qpidd"/&gt;
+      &lt;script file="/etc/init.d/qpidd" name="qpidd"/&gt;
 
       &lt;!-- This script promotes the qpidd broker on this node to primary. --&gt;
-      &lt;script file="!!sysconfdir!!/init.d/qpidd-primary" name="qpidd-primary"/&gt;
+      &lt;script file="/etc/init.d/qpidd-primary" name="qpidd-primary"/&gt;
 
       &lt;!-- This is a virtual IP address for broker replication traffic. --&gt;
       &lt;ip address="20.0.10.200" monitor_link="1"/&gt;
@@ -257,8 +290,6 @@ This example assumes a 3 node cluster, w
       &lt;ip ref="20.0.20.200"/&gt;
     &lt;/service&gt;
   &lt;/rm&gt;
-  &lt;fencedevices/&gt;
-  &lt;fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/&gt;
 &lt;/cluster&gt;
       
     </pre><p>
@@ -274,14 +305,14 @@ This example assumes a 3 node cluster, w
     </p><p>
       The <code class="literal">resources</code> section also defines a pair of virtual IP
       addresses on different sub-nets. One will be used for broker-to-broker
-      communication, the other for client-to-broker. 
+      communication, the other for client-to-broker.
     </p><p>
       To take advantage of the virtual IP addresses, <code class="filename">qpidd.conf</code>
       should contain these  lines:
     </p><pre class="programlisting">
       ha-cluster=yes
-      ha-brokers=20.0.20.200
-      ha-public-brokers=20.0.10.200
+      ha-brokers-url=20.0.20.200
+      ha-public-url=20.0.10.200
     </pre><p>
       This configuration specifies that backup brokers will use 20.0.20.200
       to connect to the primary and will advertise 20.0.10.200 to clients.
@@ -301,22 +332,24 @@ This example assumes a 3 node cluster, w
       original node fails. Running the <code class="literal">qpidd-primary</code> script
       does not start a new broker process, it promotes the existing broker to
       become the primary.
-    </p></div><div class="section" title="1.13.6. Broker Administration Tools"><div class="titlepage"><div><div><h3 class="title"><a name="id546558"></a>1.13.6. Broker Administration Tools</h3></div></div></div><p>
-      Normally, clients are not allowed to connect to a backup broker. However management tools are
-      allowed to connect to a backup brokers. If you use these tools you <span class="emphasis"><em>must
-      not</em></span> add or remove messages from replicated queues, or delete replicated queues or
-      exchanges as this will corrupt the replication process and may cause message loss.
+    </p></div><div class="section" title="1.13.6. Broker Administration Tools"><div class="titlepage"><div><div><h3 class="title"><a name="id499259"></a>1.13.6. Broker Administration Tools</h3></div></div></div><p>
+      Normally, clients are not allowed to connect to a backup broker. However
+      management tools are allowed to connect to a backup brokers. If you use
+      these tools you <span class="emphasis"><em>must not</em></span> add or remove messages from
+      replicated queues, nor create or delete replicated queues or exchanges as
+      this will disrupt the replication process and may cause message loss.
     </p><p>
       <span class="command"><strong>qpid-ha</strong></span> allows you to view and change HA configuration settings.
     </p><p>
       The tools <span class="command"><strong>qpid-config</strong></span>, <span class="command"><strong>qpid-route</strong></span> and
-      <span class="command"><strong>qpid-stat</strong></span> will connect to a backup if you pass the flag <span class="command"><strong>--ha-admin</strong></span> on the
+      <span class="command"><strong>qpid-stat</strong></span> will connect to a backup if you pass the flag <span class="command"><strong>ha-admin</strong></span> on the
       command line.
     </p></div><div class="section" title="1.13.7. Creating replicated queues and exchanges"><div class="titlepage"><div><div><h3 class="title"><a name="ha-creating-replicated"></a>1.13.7. Creating replicated queues and exchanges</h3></div></div></div><p>
       By default, queues and exchanges are not replicated automatically. You can change
       the default behavior by setting the <code class="literal">ha-replicate</code> configuration
       option. It has one of the following values:
-      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><em class="firstterm">all</em>: Replicate everything automatically: queues, exchanges, bindings and messages.
+      </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><em class="firstterm">all</em>: Replicate everything automatically: queues,
+	  exchanges, bindings and messages.
 	</li><li class="listitem"><em class="firstterm">configuration</em>: Replicate the existence of queues,
 	  exchange and bindings but don't replicate messages.
 	</li><li class="listitem"><em class="firstterm">none</em>: Don't replicate anything, this is the default.
@@ -339,18 +372,18 @@ This example assumes a 3 node cluster, w
       <code class="literal">node</code> entry to the address like this:
     </p><pre class="programlisting">
       "myqueue;{create:always,node:{x-declare:{arguments:{'qpid.replicate':all}}}}"
-    </pre></div><div class="section" title="1.13.8. Client Connection and Fail-over"><div class="titlepage"><div><div><h3 class="title"><a name="id560960"></a>1.13.8. Client Connection and Fail-over</h3></div></div></div><p>
+    </pre></div><div class="section" title="1.13.8. Client Connection and Fail-over"><div class="titlepage"><div><div><h3 class="title"><a name="id495282"></a>1.13.8. Client Connection and Fail-over</h3></div></div></div><p>
       Clients can only connect to the primary broker. Backup brokers
       automatically reject any connection attempt by a client.
     </p><p>
       Clients are configured with the URL for the cluster (details below for
       each type of client). There are two possibilities
-      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+      </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem">
 	  The URL contains multiple addresses, one for each broker in the cluster.
 	</li><li class="listitem">
 	  The URL contains a single <em class="firstterm">virtual IP address</em>
 	  that is assigned to the primary broker by the resource manager.
-	  <sup>[<a name="id567823" href="#ftn.id567823" class="footnote">1</a>]</sup></li></ul></div><p>
+	  <sup>[<a name="id518923" href="#ftn.id518923" class="footnote">2</a>]</sup></li></ul></div><p>
       In the first case, clients will repeatedly re-try each address in the URL
       until they successfully connect to the primary. In the second case the
       resource manager will assign the virtual IP address to the primary broker,
@@ -373,13 +406,15 @@ This example assumes a 3 node cluster, w
       Qpid</em> for details on how to keep the client aware of cluster
       membership.
     </p><p>
-      Suppose your cluster has 3 nodes: <code class="literal">node1</code>, <code class="literal">node2</code>
-      and <code class="literal">node3</code> all using the default AMQP port. To connect a client you
-      need to specify the address(es) and set the <code class="literal">reconnect</code> property to
-      <code class="literal">true</code>. Here's how to connect each type of client:
-    </p><div class="section" title="1.13.8.1. C++ clients"><div class="titlepage"><div><div><h4 class="title"><a name="id579791"></a>1.13.8.1. C++ clients</h4></div></div></div><p>
+      Suppose your cluster has 3 nodes: <code class="literal">node1</code>,
+      <code class="literal">node2</code> and <code class="literal">node3</code> all using the
+      default AMQP port, and you are not using a virtual IP address. To connect
+      a client you need to specify the address(es) and set the
+      <code class="literal">reconnect</code> property to <code class="literal">true</code>. The
+      following sub-sections show how to connect each type of client.
+    </p><div class="section" title="1.13.8.1. C++ clients"><div class="titlepage"><div><div><h4 class="title"><a name="id479991"></a>1.13.8.1. C++ clients</h4></div></div></div><p>
 	With the C++ client, you specify multiple cluster addresses in a single URL
-	<sup>[<a name="id579255" href="#ftn.id579255" class="footnote">2</a>]</sup>
+	<sup>[<a name="id479466" href="#ftn.id479466" class="footnote">3</a>]</sup>
 	You also need to specify the connection option
 	<code class="literal">reconnect</code> to be true.  For example:
       </p><pre class="programlisting">
@@ -391,7 +426,7 @@ This example assumes a 3 node cluster, w
 	</p><pre class="programlisting">
 	  qpid::messaging::Connection c("node1,node2,node3","{reconnect:true,heartbeat:10}");
 	</pre><p>
-      </p></div><div class="section" title="1.13.8.2. Python clients"><div class="titlepage"><div><div><h4 class="title"><a name="id564123"></a>1.13.8.2. Python clients</h4></div></div></div><p>
+      </p></div><div class="section" title="1.13.8.2. Python clients"><div class="titlepage"><div><div><h4 class="title"><a name="id500370"></a>1.13.8.2. Python clients</h4></div></div></div><p>
 	With the python client, you specify <code class="literal">reconnect=True</code>
 	and a list of <em class="replaceable"><code>host:port</code></em> addresses as
 	<code class="literal">reconnect_urls</code> when calling
@@ -405,7 +440,7 @@ This example assumes a 3 node cluster, w
 	connection via the 'heartbeat' option. For example:
       </p><pre class="programlisting">
 	connection = qpid.messaging.Connection.establish("node1", reconnect=True, reconnect_urls=["node1", "node2", "node3"], heartbeat=10)
-      </pre></div><div class="section" title="1.13.8.3. Java JMS Clients"><div class="titlepage"><div><div><h4 class="title"><a name="id558369"></a>1.13.8.3. Java JMS Clients</h4></div></div></div><p>
+      </pre></div><div class="section" title="1.13.8.3. Java JMS Clients"><div class="titlepage"><div><div><h4 class="title"><a name="id518146"></a>1.13.8.3. Java JMS Clients</h4></div></div></div><p>
 	In Java JMS clients, client fail-over is handled automatically if it is
 	enabled in the connection.  You can configure a connection to use
 	fail-over using the <span class="command"><strong>failover</strong></span> property:
@@ -423,7 +458,56 @@ This example assumes a 3 node cluster, w
 	In a Connection URL, heartbeat is set using the <span class="command"><strong>idle_timeout</strong></span> property, which is an integer corresponding to the heartbeat period in seconds. For instance, the following line from a JNDI properties file sets the heartbeat time out to 3 seconds:
       </p><pre class="screen">
 	connectionfactory.qpidConnectionfactory = amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672',idle_timeout=3
-      </pre></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.id567823" href="#id567823" class="para">1</a>] </sup>Only if the resource manager supports virtual IP addresses</p></div><div class="footnote"><p><sup>[<a id="ftn.id579255" href="#id579255" class="para">2</a>] </sup>
+      </pre></div></div><div class="section" title="1.13.9. Security."><div class="titlepage"><div><div><h3 class="title"><a name="id508871"></a>1.13.9. Security.</h3></div></div></div><p>
+      You can secure your cluster using the authentication and authorization features
+      described in <a class="xref" href="chap-Messaging_User_Guide-Security.html" title="1.5. Security">Section 1.5, “Security”</a>.
+    </p><p>
+      Backup brokers connect to the primary broker and subscribe for management
+      events and queue contents. You can specify the identity used to connect
+      to the primary with the following options:
+    </p><div class="table"><a name="ha-broker-security-options"></a><p class="title"><b>Table 1.19. Security options for High Availability Messaging Cluster</b></p><div class="table-contents"><table summary="Security options for High Availability Messaging Cluster" border="1"><colgroup><col align="left" class="c1"><col align="left" class="c2"></colgroup><thead><tr><th colspan="2" align="center">
+	      Security options for High Availability Messaging Cluster
+	    </th></tr></thead><tbody><tr><td align="left">
+	      <p><code class="literal">ha-username <em class="replaceable"><code>USER</code></em></code></p>
+	      <p><code class="literal">ha-password <em class="replaceable"><code>PASS</code></em></code></p>
+	      <p><code class="literal">ha-mechanism <em class="replaceable"><code>MECH</code></em></code></p>
+	    </td><td align="left">
+	      Authentication settings used by HA brokers to connect to each other.
+	      If you are using authorization
+	      (<a class="xref" href="chap-Messaging_User_Guide-Security.html#sect-Messaging_User_Guide-Security-Authorization" title="1.5.2. Authorization">Section 1.5.2, “Authorization”</a>)
+	      then this user must have all permissions.
+	    </td></tr></tbody></table></div></div><br class="table-break"><p>
+      This identity is also used to authorize actions taken on the backup broker to replicate
+      from the primary, for example to create queues or exchanges.
+    </p></div><div class="section" title="1.13.10. Integrating with other Cluster Resource Managers"><div class="titlepage"><div><div><h3 class="title"><a name="id504747"></a>1.13.10. Integrating with other Cluster Resource Managers</h3></div></div></div><p>
+      To integrate with a different resource manager you must configure it to:
+      </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem">Start a qpidd process on each node of the cluster.</li><li class="listitem">Restart qpidd if it crashes.</li><li class="listitem">Promote exactly one of the brokers to primary.</li><li class="listitem">Detect a failure and promote a new primary.</li></ul></div><p>
+    </p><p>
+      The <span class="command"><strong>qpid-ha</strong></span> command allows you to check if a broker is primary,
+      and to promote a backup to primary.
+    </p><p>
+      To test if a broker is the primary:
+      </p><pre class="programlisting">
+	qpid-ha -b <em class="replaceable"><code>broker-address</code></em> status --expect=primary
+      </pre><p>
+      This command will return 0 if the broker at <em class="replaceable"><code>broker-address</code></em>
+      is the primary, non-0 otherwise.
+    </p><p>
+      To promote a broker to primary:
+      </p><pre class="programlisting">
+	qpid-ha -b <em class="replaceable"><code>broker-address</code></em> promote
+      </pre><p>
+    </p><p>
+      <span class="command"><strong>qpid-ha --help</strong></span> gives information on other commands and options available.
+      You can also use <span class="command"><strong>qpid-ha</strong></span> to manually examine and promote brokers. This
+      can be useful for testing failover scenarios without having to set up a full resource manager,
+      or to simulate a cluster on a single node. For deployment, a resource manager is required.
+    </p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.id508619" href="#id508619" class="para">1</a>] </sup>
+	  Clients must use "at-least-once" reliability to enable re-send of unacknowledged
+	  messages. This is the default behavior, no options need be set to enable it. For
+	  details of client addressing options see "Using the Qpid Messaging API"
+	  in <em class="citetitle">Programming in Apache Qpid</em>
+	  </p></div><div class="footnote"><p><sup>[<a id="ftn.id518923" href="#id518923" class="para">2</a>] </sup>Only if the resource manager supports virtual IP addresses</p></div><div class="footnote"><p><sup>[<a id="ftn.id479466" href="#id479466" class="para">3</a>] </sup>
 	    The full grammar for the URL is:
 	  </p><pre class="programlisting">
 	    url = ["amqp:"][ user ["/" password] "@" ] addr ("," addr)*
@@ -431,6 +515,6 @@ This example assumes a 3 node cluster, w
 	    tcp_addr = ["tcp:"] host [":" port]
 	    rdma_addr = "rdma:" host [":" port]
 	    ssl_addr = "ssl:" host [":" port]'
-	  </pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Using-message-groups.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch01s14.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">1.12. 
+	  </pre></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Using-message-groups.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch01s14.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">1.12. 
     Using Message Groups
-   </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 1.14. Queue Replication with the HA module</td></tr></table></div></body></html>
+   </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 1.14. Queue Replication with the HA module</td></tr></table></div><div class="main_text_area_bottom"></div></div></div></body></html>

Modified: qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Broker_Federation.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Broker_Federation.html?rev=1368244&r1=1368243&r2=1368244&view=diff
==============================================================================
--- qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Broker_Federation.html (original)
+++ qpid/site/docs/books/trunk/AMQP-Messaging-Broker-CPP-Book/html/chap-Messaging_User_Guide-Broker_Federation.html Wed Aug  1 20:54:46 2012
@@ -1,12 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>1.4. Broker Federation</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="ch01.html" title="Chapter 1.  Running the AMQP Messaging Broker"><link rel="prev" href="ch01s03.html" title="1.3.  Cheat Sheet for configuring Exchange Options"><link rel="next" href="chap-Messaging_User_Guide-Security.html" title="1.5. Security"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">1.4. Broker Federation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s03.html">Prev</a> </td><th width="60%" align="center">Chapter 1. 
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>1.4. Broker Federation</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="ch01.html" title="Chapter 1.  Running the AMQP Messaging Broker"><link rel="prev" href="ch01s03.html" title="1.3.  Cheat Sheet for configuring Exchange Options"><link rel="next" href="chap-Messaging_User_Guide-Security.html" title="1.5. Security"></head><body><div class="container" bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><DIV class="header"><DIV class="logo"><H1>Apache Qpid™</H1><H2>Open Source AMQP Messaging</H2></DIV></DIV><DIV class="menu_box"><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Apache Qpid</H3><UL><LI><A href="http://qpid.apache.org/index.html">Hom
 e</A></LI><LI><A href="http://qpid.apache.org/download.html">Download</A></LI><LI><A href="http://qpid.apache.org/getting_started.html">Getting Started</A></LI><LI><A href="http://www.apache.org/licenses/">License</A></LI><LI><A href="https://cwiki.apache.org/qpid/faq.html">FAQ</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Documentation</H3><UL><LI><A href="http://qpid.apache.org/documentation.html#doc-release">0.14 Release</A></LI><LI><A href="http://qpid.apache.org/documentation.html#doc-trunk">Trunk</A></LI><LI><A href="http://qpid.apache.org/documentation.html#doc-archives">Archive</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Community</H3><UL><LI><A href="http://qpid.apache.org/getting_involved.html">Getting Involved</A></LI><LI><A href="http://qpid.apache.org/source_repository.html">Source Repository</A></LI><LI><A href="http://
 qpid.apache.org/mailing_lists.html">Mailing Lists</A></LI><LI><A href="https://cwiki.apache.org/qpid/">Wiki</A></LI><LI><A href="https://issues.apache.org/jira/browse/qpid">Issue Reporting</A></LI><LI><A href="http://qpid.apache.org/people.html">People</A></LI><LI><A href="http://qpid.apache.org/acknowledgements.html">Acknowledgements</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>Developers</H3><UL><LI><A href="https://cwiki.apache.org/qpid/building.html">Building Qpid</A></LI><LI><A href="https://cwiki.apache.org/qpid/developer-pages.html">Developer Pages</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>About AMQP</H3><UL><LI><A href="http://qpid.apache.org/amqp.html">What is AMQP?</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV><DIV class="menu_box_top"></DIV><DIV class="menu_box_body"><H3>About Apache</H3><UL><LI><A href="http://
 www.apache.org">Home</A></LI><LI><A href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</A></LI><LI><A href="http://www.apache.org/foundation/thanks.html">Thanks</A></LI><LI><A href="http://www.apache.org/security/">Security</A></LI></UL></DIV><DIV class="menu_box_bottom"></DIV></DIV><div class="main_text_area"><div class="main_text_area_top"></div><div class="main_text_area_body"><DIV class="breadcrumbs"><span class="breadcrumb-link"><a href="index.html">AMQP Messaging Broker (Implemented in C++)</a></span> &gt; <span class="breadcrumb-link"><a href="ch01.html">
       Running the AMQP Messaging Broker
-    </th><td width="20%" align="right"> <a accesskey="n" href="chap-Messaging_User_Guide-Security.html">Next</a></td></tr></table><hr></div><div class="section" title="1.4. Broker Federation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="chap-Messaging_User_Guide-Broker_Federation"></a>1.4. Broker Federation</h2></div></div></div><p>
+    </a></span> &gt; <span class="breadcrumb-node">Broker Federation</span></DIV><div class="section" title="1.4. Broker Federation"><div class="titlepage"><div><div><h2 class="title"><a name="chap-Messaging_User_Guide-Broker_Federation"></a>1.4. Broker Federation</h2></div></div></div><p>
 		<em class="firstterm">Broker Federation</em> allows messaging networks to be defined by creating <em class="firstterm">message routes</em>, in which messages in one broker (the <em class="firstterm">source broker</em>) are automatically routed to another broker (the <em class="firstterm">destination broker</em>). These routes may be defined between exchanges in the two brokers (the <em class="firstterm">source exchange</em> and the <em class="firstterm">destination exchange</em>), or from a queue in the source broker (the <em class="firstterm">source queue</em>) to an exchange in the destination broker. Message routes are unidirectional; when bidirectional flow is needed, one route is created in each direction. Routes can be durable or transient. A durable route survives broker restarts, restoring a route as soon as both the source broker and the destination are available. If the connection to a destination is lost, messages associated with a durable route continue to accu
 mulate on the source, so they can be retrieved when the connection is reestablished.
 	</p><p>
 		Broker Federation can be used to build large messaging networks, with many brokers, one route at a time. If network connectivity permits, an entire distributed messaging network can be configured from a single location. The rules used for routing can be changed dynamically as servers change, responsibilities change, at different times of day, or to reflect other changing conditions.
 	</p><p>
 		Broker Federation is useful in a wide variety of scenarios. Some of these have to do with functional organization; for instance, brokers may be organized by geography, service type, or priority. Here are some use cases for federation: 
-		</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+		</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
 					Geography: Customer requests may be routed to a processing location close to the customer.
 				</p></li><li class="listitem"><p>
 					Service Type: High value customers may be routed to more responsive servers.
@@ -108,7 +108,7 @@ qpid-route [OPTIONS] list connections [&
 							<span class="command"><strong>-t &lt;transport&gt; [ --transport &lt;transport&gt;]</strong></span>
 						</td><td align="left">
 							Transport protocol to be used for the route. 
-							<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+							<div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
 										tcp (default)
 									</p></li><li class="listitem"><p>
 										ssl
@@ -315,6 +315,6 @@ localhost       10009   tcp          N  
 								Passive
 							</td><td align="left">
 								If a cluster is federated to another cluster, only one of the nodes has an actual connection to remote node. Other nodes in the cluster have a passive connection.
-							</td></tr></tbody></table></div></div><br class="table-break"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="chap-Messaging_User_Guide-Security.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">1.3. 
+							</td></tr></tbody></table></div></div><br class="table-break"></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="chap-Messaging_User_Guide-Security.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">1.3. 
     Cheat Sheet for configuring Exchange Options
-   </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 1.5. Security</td></tr></table></div></body></html>
+   </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 1.5. Security</td></tr></table></div><div class="main_text_area_bottom"></div></div></div></body></html>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


Mime
View raw message