В предыдущей статье мы рассмотрели высоко-нагруженый кластер ActiveMQ для распределения нагрузки. Однако эта конфигурация все таки обладает следующим недостатком. При выходе из строя одного из узлов ActiveMQ, сообщения размещенные в нем становятся более недоступны, и будут вычитаны только после того как конкретный инстанс ActiveMQ будет снова поднят. Проблема может быть решена с помощью конфигурации Master/Slave, в которой два, или больше инстанса ActiveMQ имеют общее хранилище. Пара Master/Slave может быть связана с аналогичной парой, размещенной на другом хосте, и связаны с помощью Broker Networks. Схематично это выглядит следующим образом.
Для простоты развертывания все производится на одной машине. Инстансы ActiveMQ инстансы разделены по портам.
Ниже будут представлены настройки каждого из узлов кластера
instance1:
instance2:
instance3:
instance4:
Обратите внимание:
т.е. в нашем случае:
Для простоты развертывания все производится на одной машине. Инстансы ActiveMQ инстансы разделены по портам.
Ниже будут представлены настройки каждого из узлов кластера
instance1:
<networkConnectors>
<networkConnector name="instance1-instance3-instance4" uri="masterslave:(tcp://localhost:61619,tcp://localhost:61620)" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="${activemq.data}/../../../kahadb1" />
</persistenceAdapter>
instance2:
<networkConnectors>
<networkConnector name="instance2-instance3-instance4" uri="masterslave:(tcp://localhost:61619,tcp://localhost:61620)" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="${activemq.data}/../../../kahadb1" />
</persistenceAdapter>
instance3:
<networkConnectors>
<networkConnector name="instance3-instance1-instance2" uri="masterslave:(tcp://localhost:61617,tcp://localhost:61618)" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="${activemq.data}/../../../kahadb2" />
</persistenceAdapter>
instance4:
<networkConnectors>
<networkConnector name="instance4-instance1-instance2" uri="masterslave:(tcp://localhost:61617,tcp://localhost:61618)" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="${activemq.data}/../../../kahadb2" />
</persistenceAdapter>
Обратите внимание:
- instance1 и instance2 настроены на одну директорию kahadb1, и связаны с помощью networkConnectors с instance3 и instance4.
- instance3 и instance4 настроены на одну директорию kahadb2, и связаны с помощью networkConnectors с instance1 и instance2.
failover:(tcp://machine1:masterAport,tcp://machine2:masterBport,tcp://machine1:slaveBport,tcp://machine2:slaveAport)?randomize=false
т.е. в нашем случае:
failover:(tcp://localhost:61617,tcp://localhost:61619,tcp://localhost:61618,tcp://localhost:61620)?randomize=false
Комментариев нет:
Отправить комментарий