1. 程式人生 > >ActiveMQ(七)_偽叢集和主從高可用使用

ActiveMQ(七)_偽叢集和主從高可用使用

一、本文目的         介紹如何在同一臺虛擬機器上搭建高可用的Activemq服務,叢集數量包含3個Activemq,當Activemq可用數>=2時,整個叢集可用。         本文Activemq的叢集數量為3個,分別命名為mq1,mq2,mq3 二、概念介紹 1、偽叢集       叢集搭建在同一臺虛擬機器上,3個Activemq分別使用不同的埠提供服務,啟用1個為Master,其它2個為Slaver,同一時間僅Master佇列提供服務 2、高可用       3個Activemq服務,同一時間僅Master佇列提供服務,當Master佇列掛掉後,其它2個Slaver自動選舉出1個成為Master,整個佇列服務依然可用。當掛掉的佇列重新恢復後,自動加入叢集。當叢集僅剩下1個佇列時,整個佇列不可用。
3、Activemq叢集資料儲存方式       a) kahaDB:檔案共享,預設方式       b) JDBC:資料庫共享,支援MySql、Sql Server、Oracle等       c) LevelDB:資料共享,本文使用方式,比kahaDB更快,基於索引 三、Activemq偽叢集的搭建 1、Activemq的埠介紹       Activemq預設主要使用2個埠,8161(Web管理控制檯埠)、61616(提供訊息佇列服務的埠),如果需要搭建叢集,還需要開放叢集間通訊的埠(主要用於選舉Master) 2、Activemq叢集埠的分配
Web管理控制檯 訊息服務介面 叢集通訊介面
mq1 8161 51511 61601
mq2 8162 51512 61602
mq3 8163 51513 61603
服務介面沒有使用預設的61611是因為activemq預設還會使用61613,61614等埠,如何開放埠及配置控制檯埠請自行百度 3、修改activemq配置 a) 安裝activemq,本文使用Activemq版本為5.11.1,安裝過程略 b) 修改配置檔案activemq.xml,路徑為conf/activemq.xml      1、broker(所有activemq的brokerName必須一致,才能加入同一個叢集)
1 <broker xmlns= brokerName="V1MQ" dataDirectory="${activemq.data}">

    2、配置levelDB,載入<broker>節點內

           bind:叢集間通訊的ip和埠

           zkAddress:ZooKeeper地址,多個可用,逗號分隔

           hostname:主機名,可在/etc/hosts中進行配置

           zkPath:zkPath目錄,可在ZooInspetor中進行檢視

1 2 3 4 5 6 7 8 9 10 11 <persistenceAdapter> <!-- kahaDB directory="${activemq.data}/kahadb"/ --> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" zkAddress="192.168.146.130:2181" hostname="V1" zkPath="/activemq/leveldb-stores" /> </persistenceAdapter>

4、啟動activemq

      /usr/local/src/activemq1/bin/activemq start

      可通過/usr/local/src/activemq1/data/activemq.log檢視啟動日誌

5、關於管控臺

       雖然3個activemq都啟動了,但是同一時間只有Master對應的管控臺可用,Slaver對應的管控臺不可用

四、結合ZooInspector測試(推薦使用dubbokeeper中檢視zookeeper的一個UI外掛,https://github.com/dubboclub/dubbokeeper)

1、開啟ZooInspector(可自行搜尋下載或從群中下載),輸入ZooKeeper地址進行監控,如果3個activemq都啟動成功,則顯示如下:

2、Java測試程式碼

       a) 配置叢集IP(這裡3個activemq的埠分別是51511,51512,51513)

1 2 3 4 5 6 7 8 <!-- 配置JMS連線工廠 --> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <!--解決接收訊息丟擲異常:javax.jms.JMSException: Failed to build body from content. Serializable class not available to broke--> <property name="trustAllPackages" value="true"/> <!-- 是否非同步傳送 --> <property name="useAsyncSend" value="true" /> </bean>

        b)  測試程式碼

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test public void produceMsg_DefaultQueue() { for (int i = 0; i < 10000; i++) { final String msg ="序號:"+String.valueOf(i) + " " +"這裡是向預設佇列傳送的訊息" + new Date().toString(); System.out.println(msg); String destination = jmsTemplate.getDefaultDestination().toString(); jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createTextMessage(msg); } }); try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } }

3、啟動Java程式併發送訊息

4、關閉Master佇列(注意此時的Master佇列為mq2)

a)   此時的ZooInspetor

5、重啟mq2佇列(重啟後mq2加入佇列成為Slaver,但是mq1還是Master,佇列不受影響)

6、關閉mq1、mq2,僅剩mq3(由於只有一個佇列,無法進行選舉,所以整個佇列都無法提供服務)


7、重啟mq1(重啟mq1後,mq1和mq3選舉了Master佇列,從而重新對外提供服務)

a) ZooInspecto顯示mq1被選舉為Master

b) 程式重新向佇列訊息,資料並沒有中斷 

五、總結

        本文演示了activemq偽叢集的搭建過程及高可用的測試過程,通過舉一反三可以將activemq部署到不同的機器上,從而實現相同的功能。

        遺留問題:ZooInspetor的activemq編號是自動生成的,很難發現其對應的佇列,請問有沒有可以自定義編號的方法,謝謝。

六、參考資料

相關推薦

ActiveMQ()_叢集主從可用使用

一、本文目的         介紹如何在同一臺虛擬機器上搭建高可用的Activemq服務,叢集數量包含3個Activemq,當Activemq可用數>=2時,整個叢集可用。         本文Activemq的叢集數量為3個,分別命名為mq1,mq2,mq3 二、概念介紹 1、偽叢集

activemq-叢集主從模式 學習筆記

activemq主從模式與叢集 三種masterslave模式 主從方式 要求 效能 共享檔案系統 要求SAN網路共享儲存 JDBC主從方式 共享資料庫 速度不如日誌快 複製的LevelD

Mysql“叢集主從“兩者的區別

之前一直用oracle資料庫,而且只是用,沒有關心過資料庫的架構,現在的專案使用mysql資料庫,而且要自己設計資料儲存架構。所以研究了一下mysql的叢集(cluster)和主從(master/slave)這兩個概念。兩者非常容易混淆,特別是對於菜鳥來講。

Java操作redis叢集主從

import java.io.IOException; import java.util.HashSet; import java.util.Set; import org.junit.Test; import redis.clients.jedis.HostAndPo

淺談小白如何讀懂Redis快取記憶體與持久化並存及主從可用叢集

一、簡介Redis是一個基於鍵值(K-V)的快取記憶體軟體,和他具有相同功能的軟體有memcached,但其支援更為複雜的資料結構,例如:List,set,sorted set,同時redis具有永續性功能。redis究竟是什麼?對於不同的應用場合,對redis的理解也不相同

ActiveMQ(六)_叢集的負載均衡

                                                                 圖一    圖一說明:    1、叢集一包含3個佇列:Amq1、Amq2、Amq3;叢集二包含2個佇列:Bmq1、Bmq2    

Linux下搭建MySQL叢集 / Mysql“叢集主從“兩者的區別

一、MySQL叢集簡介 1、什麼是MySQL叢集 MySQL叢集是一個無共享的(shared-nothing)、分散式節點架構的儲存方案,其目的是提供容錯性和高效能。 資料更新使用讀已提交隔離級別(read-committedisolation)來保證所有節點資料的一致性,使用兩階段提交機制(two-ph

Spark 系列()—— 基於 ZooKeeper 搭建 Spark 可用叢集

一、叢集規劃 這裡搭建一個 3 節點的 Spark 叢集,其中三臺主機上均部署 Worker 服務。同時為了保證高可用,除了在 hadoop001 上部署主 Master 服務外,還在 hadoop002 和 hadoop003 上分別部署備用的 Master 服務,Master 服務由 Zookeeper

【ZooKeeper系列】1.ZooKeeper單機版、叢集叢集環境搭建

ZooKeeper安裝模式主要有3種: 單機版(Standalone模式)模式:僅有一個ZooKeeper服務 偽叢集模式:單機多個ZooKeeper服務 叢集模式:多機多ZooKeeper服務 1 單機版(Standalone模式)安裝 ZooKeeper官網下載地址:http://zookeeper.

keepalived+MHA實現mysql主從可用集群

keepalived mha mysql主從集群 高可用 本節索引原理分析實驗環境準備主從復制集群安裝MHA包初始化MHA配置Keepalived故障出現故障恢復總結 一 原理分析1 MHA簡介:MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟

Keepalive配置文件說明實現可用

keepaliveKeepalive概述: Keepalived是一個免費開源的,用C編寫的,具備第3層、第4層和第7層交換機的功能。主要提供loadbalancing(負載均衡)和 high-availability(高可用)功能,負載均衡實現需要依賴Linux的虛擬服務內核模塊(ipvs),而高可用是通過

memcached實現主主復制keepalive可用方式

ali 上進 endif alived 函數 相同 pri face 軟件 實驗拓撲 實驗環境 服務器 IP地址 操作系統 主要軟件 memcached1 192.168.144.122 centos7.3 libevent2.1.8、memcached1.

如何設計實現可用的MySQL

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊雲資料庫 TencentDB發表於雲+社群專欄 王甲坤,騰訊高階工程師、騰訊雲關係型資料庫MySQL負責人,擁有多年客戶端、資料庫研發經驗。在IOS客戶端、MySQL、PostgreSQL、SQL Server等產品有豐富的研

CentOS 7部署Hadoop叢集(HA可用叢集

目錄 測試環境 Hadoop 組織框架 HDFS架構 YARN架構 HA叢集部署規劃 自動故障轉移 關於叢集主機時間 Linux環境搭建 配置Java環境 安裝單機版Hadoop Zookeeper叢集安裝 配置環境變數 關閉防火牆 修

如何設計實現可用MySQL

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊雲資料庫 TencentDB發表於雲+社群專欄 王甲坤,騰訊高階工程師、騰訊雲關係型資料庫MySQL負責人,擁有多年客戶端、資料庫研發經驗。在IOS客戶端、MySQL、PostgreSQL、SQL Server等產品有豐富的研

zookeeper叢集、kafka叢集、Hadoop可用

一、zookeeper叢集 1.1 zookeeper概述 1.1.1 什麼是zookeeper ZooKeeper是一個分散式的協調服務 1.1.2 ZooKeeper能幹什麼 ZooKeeper是用來保

Keepalived+Redis主從可用部署

機器 A:192.168.252.105 B:192.168.252.106 VIP:192.168.252.101 A|B安裝 keepalived-1.3.5.tar.gz tar -zxvf keepalived-1.3.5.tar.gz cd keepalived-1.

Hadoop部署(六)——CentOS 7部署Hadoop叢集(HA可用叢集

目錄 測試環境 關閉防火牆 測試環境 Linux系統版本:CentOS 7 64位 Hadoop 組織框架 Hadoop主要包括兩部分: 一部分是HDFS(Hadoop Distr

Redis從入門到熟練使用之測試哨兵及主從可用(詳解,第四篇,共五篇)

測試驗證 首先檢視哨兵監控情況 然後嘗試關閉主機 再檢視剩餘2個從機,這裡會自動選舉產生新的主機 然後,我們再次將剛才停止的主機啟動起來,發現啟動後其自動成為從機 停掉master_redis主資料庫後重啟後變成從資料庫。隨機推選。 至此,

Redis叢集(哨兵模式可用)

##一臺機器<br>ps -ef | grep redisroot 610201002:14 ? 00:00:01 redis-server 127.0.0.1:7000 [cluster] root 610241002:14 ? 00:00:01 redis-server 127.0.