版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014388408/article/details/52859347
1、高可用性数据的几种方式
①Shared Nothing Master/Slave
Master 和 Slave各自都单独存储持久化的消息,它们不共享数据。
②Shared Database Master/Slave
Master与Slave之间的数据是共享的。
③Shared File system Master/Slave
这种方式和共享数据库存储原理基本一样。
④Replicated LevelDB Store
这种方式使用Zookeeper选举Master。要进行选举,则需要多数派的“参与者”。因为Replicated LevelDB Store中有多个Broker,从多个Broker中选举出一个成为Master,其他的则成为Slave。只有Master接收Client的连接,Slave负责连接到Master,并接收(同步方式、异步方式)Master上的数据。
2.实践操作(ubuntu 12.04)
(1)选用3台机器,应大于等于3台,涉及到采用Replicated LevelDB Store这种方式,需要进行选举需要。
(2)下载zookeeper安装
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
然后解压:
tar -xvf zookeeper-3.3.6.tar.gz -C /opt/amqbroker(需要解压的路径)
修改配置文件:
zoo_sample.cfg 修改文件名为 zoo.cfg
修改zoo.cfg 配置文件内容为
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/amqbroker/zookeeper/data
dataLogDir=/opt/amqbroker/zookeeper/log
clientPort=2181
server.one=192.168.0.100:2888:3888
server.two=192.168.0.101:2888:3888
server.three=192.168.0.102:2888:3888
然后在/opt/amqbroker/zookeeper/data目录下创建myid文件,在文件中写入当前机器的id,例如配置中server.one=192.168.0.100:2888:3888,在myid文件写入字符 “one” 保存退出。
另外2台机器和这台机器的配置一样,myid 写各自服务器的id名。
3.下载activeMQ并配置
(1)下载地址: wget http://archive.apache.org/dist/activemq/5.10.1/apache-activemq-5.10.1-bin.tar.gz
(2)解压 tar -xvf apache-activemq-5.10.1-bin.tar.gz
(3)修改配置文件(/opt/amqbroker/apache-activemq-5.10.1/conf)
<persistenceAdapter>
<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
<replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:0" zkAddress="192.168.0.100:2181,192.168.0.101:2181,192.168.0.102:2181" hostname="42.123.81.111" zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
启动activemq服务器(切换路径为/opt/amqbroker/apache-activemq-5.10.1/bin目录下):
运行如下命令:
./activemq start
另外2台服务器配置一遍,注意mq配置中,hostname为各自服务器的ip地址。
3台服务器一次启动。
vi /opt/amqbroker/apache-activemq-5.10.1/conf/jetty.xml
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<property name="port" value="8161"/>
</bean>
jetty默认端口为8161
最后在浏览器中打开3个网页地址为:
http://192.168.0.100:8161/admin/queues.jsp
http://192.168.0.101:8161/admin/queues.jsp
http://192.168.0.102:8161/admin/queues.jsp
如果某个页面能打开activemq的界面,说明此台服务器为master服务器,其他为 slave (备用服务器)