Master/slave groups and networks of brokers are very different things. Master/slave groups can be used in a network of brokers to provide fault tolerance to the nodes in the broker network. This requires careful consideration and the use of a special network connection protocol.
Master/slave groups and broker networks represent different levels of organization. You can include a master/slave group as a node in a network of brokers. Using the basic principles of making a master/slave group a node in a broker network, you can scale up to an entire network consisting of master/slave groups.
When combining master/slave groups with broker networks there are two things to remember:
Network connectors to a master/slave group use a special protocol.
A broker cannot open a network connection to another member of its master/slave group.
The network connection to a master/slave group needs to do two things:
Open a connection to the master broker without connecting to the slave brokers.
Connect to the new master in the case of a failure.
The network connector's reconnect logic will handle the reconnection to the new master in the case of a network failure. The network connector's connection logic, however, attempts to establish connections to all of the specified brokers. To get around the network connector's default behavior, you use a masterslave URI to specify the list of broker's in the master/slave group. The masterslave URI only allows the connector to connect to one of brokers in the list which will be the master.
The masterslave protocol's URI is a list of the connections points for each broker in the master/slave group. The network connector will traverse the list in order until it establishes a connection.
Example 4.1 shows a network connector configured to link to a master/slave group.
Example 4.1. Network Connector to a Master/Slave Group
<networkConnectors> <networkConnector name="linkToCluster" uri="mastersalve:(tcp://masterHost:61002,tcp://slaveHost:61002)" ... /> </networkConnectors>
In order to scale up to a large fault tolerant broker network, it is a good idea to adopt a simple building block as the basis for the network. An effective building block for this purpose is the host pair arrangement shown in Figure 4.1.
The host pair arrangement consists of two master/slave groups distributed between two host machines. Under normal operating conditions, one master broker is active on each of the two host machines. If one of the machines should fail for some reason, the slave on the other machine takes over, so that you end up with two active brokers on the healthy machine.
When configuring the network connectors, you must remember
not to open any connectors to brokers in the same group.
For example, the network connector for brokerB1
should be configured to
connect to at most brokerA1
and brokerA2
.
You can easily scale up to a large fault tolerant broker network by adding host pairs, as shown in Figure 4.2.
The preceding network consists of eight master/slave groups distributed over eight host
machines. As before, you should open network connectors only to brokers outside the current
master/slave group. For example, brokerA1
can connect to at most the following
brokers: brokerB*
, brokerC*
, brokerD*
,
brokerE*
, brokerF*
, brokerG*
, and
brokerH*
.
For detailed information on setting up a network of brokers see Using Networks of Brokers.