понедельник, апреля 14, 2014

ActiveMQ high availability load balancer cluster

Рассмотрим актуальную задачу Load Balancer между инстансами ActiveMQ. Балансировка в таком случае строиться с помощью networkConnectors. Для простоты развертывания инстансы ActiveMQ развернем на одной машине, разделение будет строиться на базе портов. Вот схематичное представление кластера:

Конфигурация каждого инстанса ActiveMQ представлена ниже:


instance1:
<networkConnectors>
 <!-- broker1 -> broker2 -->
 <networkConnector name="instance1-instance2" uri="static:(tcp://localhost:61618)" />
 <!-- broker1 -> broker3 -->
 <networkConnector name="instance1-instance3" uri="static:(tcp://localhost:61619)" />
 <!-- broker1 -> broker4 -->
 <networkConnector name="instance1-instance4" uri="static:(tcp://localhost:61620)" />
</networkConnectors>
instance2:
<networkConnectors>
 <!-- broker2 -> broker1 -->
 <networkConnector name="instance2-instance1" uri="static:(tcp://localhost:61617)" />
 <!-- broker2 -> broker3 -->
 <networkConnector name="instance2-instance3" uri="static:(tcp://localhost:61619)" />
 <!-- broker2 -> broker4 -->
 <networkConnector name="instance2-instance4" uri="static:(tcp://localhost:61620)" />
</networkConnectors>
instance3:
<networkConnectors>
 <!-- broker3 -> broker1 -->
 <networkConnector name="instance3-instance1" uri="static:(tcp://localhost:61617)" />
 <!-- broker3 -> broker2 -->
 <networkConnector name="instance3-instance2" uri="static:(tcp://localhost:61618)" />
 <!-- broker3 -> broker4 -->
 <networkConnector name="instance3-instance4" uri="static:(tcp://localhost:61620)" />
</networkConnectors>
instance4:
<networkConnectors>
 <!-- broker4 -> broker2 -->
 <networkConnector name="instance4-instance1" uri="static:(tcp://localhost:61617)" />
 <!-- broker4 -> broker3 -->
 <networkConnector name="instance4-instance2" uri="static:(tcp://localhost:61618)" />
 <!-- broker4 -> broker4 -->
 <networkConnector name="instance4-instance3" uri="static:(tcp://localhost:61619)" />
</networkConnectors>

URL для consumer и producer будет выглядеть следующим образом:
failover://(tcp://localhost:61617,tcp://localhost:61619,tcp://localhost:61618,tcp://localhost:61620)?randomize=true

Комментариев нет: