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 (备用服务器)