ActiveMQ levelDB

zookeeper

主机:

主机名 ip 客户端端口 zookeeper集群端口 选leader端口
node1 10.76.249.173 2181 2881 3881
node2 10.76.249.174 2181 2881 3881
node3 10.76.249.175 2181 2881 3881

软件:

zookeeper-3.4.10.tar.gz

apache-activemq-5.9.1-bin.tar.gz

目录:

解压软链接

ln -sv zookeeper-3.4.10 /opt/module/node1_zookeeper

ln -sv zookeeper-3.4.10 /opt/module/node2_zookeeper

ln -sv zookeeper-3.4.10 /opt/module/node3_zookeeper

数据、日志

mkdir -pv /home/datadir/{data,log}

配置文件

cp zoo_sample.cfg zoo.cfg

cat zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/datadir/data
dataLogDir=/home/datadir/log
clientPort=2181
server.1=node1:2881:3881
server.2=node2:2881:3881
server.3=node3:2881:3881

echo 1 >/home/datadir/data/myid
echo 2 >/home/datadir/data/myid
echo 3 >/home/datadir/data/myid

/opt/module/zookeeper-3.4.10/bin/zkServer.sh start

端口作用:

2181 : 客户端连接

2881: zookeeper集群消息通信端口

3881:选leader专用端口

activemq

主机 集群端口 stomp 端口 管理端口
10.76.249.173 62621 61613 8161
10.76.249.174 62621 61613 8161
10.76.249.175 62621 61613 8161

配置文件:

<!-- START SNIPPET: example -->
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">


<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:${activemq.conf}/credentials.properties</value>
</property>
</bean>

<!--
The <broker> element is used to configure the ActiveMQ broker.
-->

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="ShMQTest" dataDirectory="${activemq.data}">

<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" >
<!-- The constantPendingMessageLimitStrategy is used to prevent
slow topic consumers to block producers and affect other consumers
by limiting the number of messages that are retained
For more information, see:

http://activemq.apache.org/slow-consumer-handling.html

-->

<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>


<!--
The managementContext is used to configure how ActiveMQ is exposed in
JMX. By default, ActiveMQ uses the MBean server that is started by
the JVM. For more information, see:

http://activemq.apache.org/jmx.html
-->

<managementContext>
<managementContext createConnector="false"/>
</managementContext>

<!--
Configure message persistence for the broker. The default persistence
mechanism is the KahaDB store (identified by the kahaDB tag).
For more information, see:

http://activemq.apache.org/persistence.html
-->

<persistenceAdapter>
<!-- 注释持久化默认适配器 Start -->
<!-- Start
<kahaDB directory="${activemq.data}/kahadb"/>
End -->

<!-- 注释持久化默认适配器 End -->

<!-- 自定义高可用集群服务 Start -->
<!-- hostname需要改成不同的节点 Start -->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:62621"
zkAddress="10.76.249.173:2181,10.76.249.174:2181,10.76.249.175:2181"
zkPassword=""
weight="1"
hostname="node1"
zkPath="/activemq/leveldb-stores"
securityToken=""
/>

<!-- 自定义集群服务 End-->
</persistenceAdapter>


<!--
The systemUsage controls the maximum amount of space the broker will
use before disabling caching and/or slowing down producers. For more information, see:
http://activemq.apache.org/producer-flow-control.html
-->

<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage percentOfJvmHeap="70" />
</memoryUsage>
<storeUsage>
<storeUsage limit="10 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="5 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>

<!--
The transport connectors expose ActiveMQ over a given protocol to
clients and other brokers. For more information, see:

http://activemq.apache.org/configuring-transports.html
-->

<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>

<!-- destroy the spring context on shutdown to stop jetty -->
<shutdownHooks>
<bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
</shutdownHooks>

</broker>

<!--
Enable web consoles, REST and Ajax APIs and demos
The web consoles requires by default login, you can disable this in the jetty.xml file

Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details
-->

<import resource="jetty.xml"/>

</beans>
<!-- END SNIPPET: example -->