ActiveMQ+ZooKeeper 偽叢集整合
前言
本案例使用的是偽叢集方式,即在一臺主機上部署3個activemq服務(埠不同)+3個zookeeper服務(埠不同)。
真叢集部署請看:
如果需要了解ActiveMQ叢集部署的整體概念,可以參考我這篇文章:
原理簡介:
一般在部署ActiveMQ叢集的時候,更傾向於使用基於ZooKeeper的Replicated LevelDB Store方式,該方式是Master Slave部署方案的其中一種策略,也是在多臺主機實現ActiveMQ叢集的主流部署方式。 此教程只保證了高可用性。要想保證負載均衡得再結合Broker Clusters 部署方案,配置網路聯結器。
工作流程:
在ZooKeeper中管理多個Broker節點,根據 Master選舉策略讓其中一個 Broker選舉為Master(只有Master才具備對外提供服務的能力),剩下Broker為slave。
編碼時,client端(消費者)透過failover協議來連線ActiveMQ叢集。
一、服務端配置
1. ZooKeeper偽叢集配置
-- | 服務埠 | 叢集通訊埠 | 節點目錄/opt/下 |
---|---|---|---|
zk1 | 2181 | 2887:3887 | /zookeeper/zk1 |
zk2 | 2182 | 2888:3888 | /zookeeper/zk2 |
zk3 | 2183 | 2889:3889 | /zookeeper/zk3 |
在/opt/zookeeper下複製3個zookeeper服務,並分別配置它們的檔案conf/zoo.cfg:
-
zk1:
zk1/conf/zoo.cfg:
# zookeeper的資料儲存和日誌儲存目錄(如果目錄不存在就新建) dataDir=/opt/zookeeper/zk1/data dataLogDir=/opt/zookeeper/zk1/log #服務埠 clientPort=2181 # zk叢集之間的通訊地址 server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889
建立
zk1/data/myid
檔案,填入數字1:# 由於該zk1是server.1,所以在myid中設定數字1 $ vim /opt/zookeeper/zk1/data/myid
-
zk2:
zk2/conf/zoo.cfg:
# zookeeper的資料儲存和日誌儲存目錄(如果目錄不存在就新建) dataDir=/opt/zookeeper/zk2/data dataLogDir=/opt/zookeeper/zk2/log #服務埠 clientPort=2182 # zk叢集之間的通訊地址 server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889
建立
zk2/data/myid
檔案,填入數字1:# 由於該zk2是server.2,所以在myid中設定數字2 $ vim /opt/zookeeper/zk2/data/myid
-
zk3:
zk3/conf/zoo.cfg:
# zookeeper的資料儲存和日誌儲存目錄(如果目錄不存在就新建) dataDir=/opt/zookeeper/zk3/data dataLogDir=/opt/zookeeper/zk3/log #服務埠 clientPort=2183 # zk叢集之間的通訊地址 server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889
建立
zk3/data/myid
檔案,填入數字3:# 由於該zk3是server.3,所以在myid中設定數字3 $ vim /opt/zookeeper/zk3/data/myid
1.2 分別啟動zookeeper服務
$ /opt/zookeeper/zk1/bin/zkServer.sh start # 啟動zk1服務 $ /opt/zookeeper/zk2/bin/zkServer.sh start # 啟動zk2服務 $ /opt/zookeeper/zk3/bin/zkServer.sh start # 啟動zk3服務 $ /opt/zookeeper/zk1/bin/zkServer.sh status # 檢視zk1服務狀態 $ /opt/zookeeper/zk2/bin/zkServer.sh status # 檢視zk2服務狀態 $ /opt/zookeeper/zk3/bin/zkServer.sh status # 檢視zk3服務狀態
2. ActiveMQ偽叢集配置
2.1 修改ActiveMQ配置檔案conf/activemq.xml
和conf/jetty.xml
-- | 服務埠 | jetty控制檯埠 | 節點目錄/opt/下 |
---|---|---|---|
node1 | 61616 | 8161 | /activemq/node1 |
node2 | 61617 | 8162 | /activemq/node2 |
node3 | 61618 | 8163 | /activemq/node3 |
在/opt/activemq/複製3個activemq服務,並分別配置它們的檔案conf/activemq.xml和conf/jetty.xml:
conf/jetty.xml:
-
node1:
/opt/activemq/node1/conf/activemq.xml:
<!-- activemq支援5種協議:openwire、amqp、 stomp、mqtt、ws,這裡我們只使用openwire協議,註釋其它協議 -->
<!-- node1服務埠使用預設埠61616 --> <!-- 持久化的部分為ZooKeeper叢集連線地址--><!-- --> /opt/activemq/conf/jetty.xml:
<!-- 在這裡修改埠為8161,預設就是8161 --> -
node2:
/opt/activemq/node2/conf/activemq.xml:
<!-- 服務埠改為61617 --> <!-- 持久化的部分為ZooKeeper叢集連線地址-->/opt/activemq/conf/jetty.xml:
<!-- 在這裡修改埠為8162,預設是8161 --> -
node3:
/opt/activemq/node3/conf/activemq.xml:
<!-- 服務埠改為61618 --> <!-- 持久化的部分為ZooKeeper叢集連線地址-->/opt/activemq/node3/conf/jetty.xml:
<!-- 在這裡修改埠為8163,預設是8161 -->
2.2 依次啟動activemq服務
$ /opt/activemq/node1/bin/activemq start # 啟動節點node1服務 $ /opt/activemq/node2/bin/activemq start # 啟動節點node2服務 $ /opt/activemq/node3/bin/activemq start # 啟動節點node3服務 $ ps -ef|grep activemq # 檢查程式是否執行,即activemq是否啟動成功 $ netstat -anp|grep 61616 # 檢視服務埠61616,監聽情況 $ netstat -anp|grep 61617 # 檢視服務埠61617,監聽情況 $ netstat -anp|grep 61618 # 檢視服務埠61618,監聽情況
三、Client使用
該zookeeper+activemq的叢集Master Slave部署方案,能夠提供(3-1)/2的容錯率,即3臺伺服器允許當機一臺,而不影響整個叢集的對外提供服務。
編寫程式碼連線時使用failover策略:
String url = failover:(tcp://192.168.100.142:61616,tcp://192.168.100.142:61617,tcp://192.168.100.142:61618)?initialReconnectDelay=1000
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3137/viewspace-2800740/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ActiveMQ+ZooKeeper 叢集整合MQ
- 搭建zookeeper叢集(偽叢集)
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- redis偽叢集配置Cluster叢集模式Redis模式
- hadoop叢集搭建——單節點(偽分散式)Hadoop分散式
- Spring Boot整合Redis叢集(Cluster模式)Spring BootRedis模式
- kubernetes1.13.1叢集整合harbor-helm
- 【教程】手把手教你如何搭建Hadoop單機偽叢集Hadoop
- hadoop偽分散式叢集的安裝(不是單機版)Hadoop分散式
- 開源大資料叢集部署(十一)Ranger 整合Hadoop叢集大資料RangerHadoop
- RocketMQ 4.7.1 環境搭建、叢集、MQ整合SpringBootMQSpring Boot
- Redis 結合 Docker 搭建叢集,並整合SpringBootRedisDockerSpring Boot
- Spring Boot(十三):整合Redis哨兵,叢集模式實踐Spring BootRedis模式
- Zookeeper叢集 + Kafka叢集Kafka
- Spark新手入門——2.Hadoop叢集(偽分佈模式)安裝SparkHadoop模式
- 深入理解Redis系列之叢集環境SpringBoot整合RedisSpring Boot
- centos6下ActiveMQ+Zookeeper訊息中介軟體叢集部署記錄CentOSMQ
- zookeeper叢集及kafka叢集搭建Kafka
- 單個eureka會出現單點故障問題, 那麼eureka 如何形成叢集呢? HA 高可用(此示例為偽叢集)
- Quartz - Spring整合Quartz實現叢集的定時任務quartzSpring
- Pulsar本地單機(偽)叢集 (裸機安裝與docker方式安裝) 2.2.0Docker
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- Elasticsearch7.10 開發中配置偽叢集的TLS和身份驗證(基礎)ElasticsearchTLS
- RabbitMQ叢集MQ
- ES叢集
- ceph叢集
- redis叢集Redis
- redis 叢集Redis
- 將Standard標準叢集修改為Flex叢集Flex
- 基於Dokcer搭建Redis叢集(主從叢集)Redis
- Mysql讀寫分離叢集的搭建且與MyCat進行整合MySql
- 管理 ES 叢集:集常見的叢集部署方式
- 用Docker搭建RabbitMq的普通叢集和映象叢集DockerMQ
- docker下,極速搭建spark叢集(含hdfs叢集)DockerSpark
- Spring Boot整合Hazelcast實現叢集與分散式記憶體快取Spring BootAST分散式記憶體快取
- spring4.x 整合quartz2.x 叢集化配置專案例項Springquartz
- Kafka叢集配置Kafka
- 搭建ELK叢集