基於zookeeper+leveldb搭建activemq叢集
自從activemq5.9.0開始,activemq的叢集實現方式取消了傳統的Master-Slave方式,增加了基於zookeeper+leveldb的實現方式,其他兩種方式:目錄共享和資料庫共享依然存在。本文主要闡述基於zookeeper和leveldb搭建activemq叢集,這裡需要特別提醒,本文實現的叢集僅提供主備功能,避免單點故障,沒有負載均衡功能。
下面開始我們的征途。
一、搭建zookeeper叢集
關於搭建zookeeper叢集的文章請參考:zookeeper的叢集模式下的安裝和配置。
本文使用zookeeper3.4.6,3臺虛擬機器:192.168.2.161, 192.168.2.145, 192.168.2.146,zookeeper使用其預設埠:2181。
zookeeper叢集搭建完成之後,我順便搭建了兩套監控系統:taokeeper-monitor和node-zookeeper-browser。前者是淘寶開源的一套監控zookeeper的系統,用了之後感覺得到的有效資訊不多,而且叢集趨勢圖總是不顯示;後者是用nodejs實現的zookeeper節點資料檢視系統,雖然頁面不太美觀,但是實用。
圖 1. taokeeper-monitor介面
圖 2. node-zookeeper-browser介面
二、搭建activemq叢集
1、安裝
activemq本身的安裝過程很簡單,本文不詳述,可參照官方的Getting-started。
2、配置
在三臺機器上完成activemq安裝之後,開始叢集配置,通過配置使三個activemq例項組成叢集。下面的配置在三個例項上保持一致,除了標紅部分,主要修改配置檔案conf/activemq.xml。
(1)broker-name的統一
將broker標籤的brokerName屬性設定為統一的值,我將這個值設定為“test”,只有三個例項的brokerName一致,zookeeper才能識別它們屬於同一個叢集。
(2)persistenceAdapter的配置
persistenceAdapter設定持久化方式,主要有三種方式:kahaDB(預設方式)、資料庫持久化、levelDB(v5.9.0提供支援)。
本文采用levelDB來進行持久化,並使用zookeeper實現叢集的高可用,配置如下:
首先註釋掉原來kahaDB的持久化方式,然後配置levelDB+zookeeper的持久化方式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!-- <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> --> < persistenceAdapter > < replicatedLevelDB directory = "${activemq.data}/leveldb" replicas = "3" bind = "tcp://0.0.0.0:0" zkAddress = "192.168.2.161:2181,192.168.2.145:2181,192.168.2.146:2181" hostname = "192.168.2.161" sync = "local_disk" zkPath = "/activemq/leveldb-stores" /> </ persistenceAdapter > |
注意上述配置中的hostname屬性值,不同的activemq例項對應不同的hostname值,其他兩個例項配置的hostname值分別為:192.168.2.145,
192.168.2.146。
3、問題與解決方案
配置完成之後啟動zookeeper叢集,然後依次啟動三個activemq例項,啟動之後報錯:"activemq LevelDB IOException handler"。
原因:版本5.10.0存在的依賴衝突。
解決方案:
(1)移除lib目錄中的pax-url-aether-1.5.2.jar包;
(2)註釋掉配置檔案中的日誌配置;
1
2
3
4
|
< bean id = "logQuery" class = "org.fusesource.insight.log.log4j.Log4jLogQuery" lazy-init = "false" scope = "singleton" init-method = "start" destroy-method = "stop" > </ bean > |
參考:http://www.350351.com/jiagoucunchu/leveldb/334233.html
4、測試
任意停掉三個例項中的任意一個,activemq服務依然正常運轉。
歡迎轉載,請註明出處:http://my.oschina.net/xiaohui249/blog/313028
相關文章
- 基於Dokcer搭建Redis叢集(主從叢集)Redis
- 基於 ZooKeeper 搭建 Spark 高可用叢集Spark
- 基於 ZooKeeper 搭建 Hadoop 高可用叢集Hadoop
- 基於kerberos的hadoop安全叢集搭建ROSHadoop
- 基於 Redis3.2.4 叢集搭建說明RedisS3
- ActiveMQ+ZooKeeper 叢集整合MQ
- 基於 HAProxy + KeepAlived 搭建 RabbitMQ 高可用叢集MQ
- PC基於Linux的叢集環境搭建?Linux
- ActiveMQ+ZooKeeper 偽叢集整合MQ
- 基於docker環境下搭建redis主從叢集DockerRedis
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- 基於Kubernetes v1.24.0的叢集搭建(一)
- 基於Kubernetes v1.24.0的叢集搭建(二)
- 基於Kubernetes v1.24.0的叢集搭建(三)
- 搭建zookeeper叢集(偽叢集)
- 叢集搭建
- 基於Hadoop不同版本搭建hive叢集(附配置檔案)HadoopHive
- 工作日誌——基於k8s搭建spark叢集K8SSpark
- 基於Docker搭建Percona XtraDB Cluster資料庫叢集Docker資料庫
- quay.io/coreos/etcd 基於Docker映象的叢集搭建Docker
- zookeeper叢集及kafka叢集搭建Kafka
- 雲主機centos7搭建基於docker的hadoop叢集CentOSDockerHadoop
- 如何基於Jupyter notebook搭建Spark叢集開發環境Spark開發環境
- DevOpsSOP 基於阿里雲VPC搭建Storm+Kafka+Zookeeper叢集dev阿里ORMKafka
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- redis叢集搭建Redis
- nacos 叢集搭建
- kafka叢集搭建Kafka
- Ambari叢集搭建
- 搭建ELK叢集
- RabbitMQ叢集搭建MQ
- HBASE叢集搭建
- zookeeper 叢集搭建
- mysql叢集搭建MySql
- Zookeeper叢集搭建
- 搭建 Redis 叢集Redis
- 搭建 zookeeper 叢集
- Elasticsearch 叢集搭建Elasticsearch