天天看點

linux搭建activeMQ叢集1. 簡介2.叢集搭建步驟

1. 簡介

這裡是在linux虛拟機上搭建的zookeeper叢集+基于levelDB的activeMQ叢集,實際隻有一台機

2.叢集搭建步驟

2.1 搭建zookeeper叢集

2.1.1 準備zookeeper叢集主機與端口

主機 用戶端端口 叢集通信端口 叢集選舉端口
127.0.0.1 2182 2887 3887
127.0.0.1 2183 2888 3888
127.0.0.1 2184 2889 3889

2.1.2 下載下傳zookeeper安裝包

下載下傳位址:https://downloads.apache.org/zookeeper

從版本3.5.5開始,帶有bin名稱的包才是我們想要的下載下傳可以直接使用的,裡面有編譯後的二進制的包,而之前的普通的tar.gz的包裡面隻是源碼的包無法直接使用,如apache-zookeeper-3.6.2-bin.tar.gz

2.1.3 上傳并解壓apache-zookeeper-3.6.2-bin.tar.gz到虛拟機上,複制2份,共3個節點

我這裡是把安裝包上傳到/opt/lsl/zookeeper這裡,然後建立data目錄

linux搭建activeMQ叢集1. 簡介2.叢集搭建步驟

2.1.4 找到conf目錄,将zoo_simple.cfg複制一份重命名為zoo.cfg,然後修改配置檔案

linux搭建activeMQ叢集1. 簡介2.叢集搭建步驟

節點一zoo.cfg配置:

#zk的資料目錄
dataDir=/opt/lsl/zookeeper/data/2182
dataLogDir=/opt/lsl/zookeeper/log/2182
#zk端口
clientPort=2182
#zk叢集配置
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
           

 節點二zoo.cfg配置:

#zk的資料目錄
dataDir=/opt/lsl/zookeeper/data/2183
dataLogDir=/opt/lsl/zookeeper/log/2183
#zk端口
clientPort=2183
#zk叢集配置
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
           

 節點三zoo.cfg配置:

#zk的資料目錄
dataDir=/opt/lsl/zookeeper/data/2184
dataLogDir=/opt/lsl/zookeeper/log/2184
#zk端口
clientPort=2184
#zk叢集配置
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
           

 2.1.5 在3個zk資料目錄下面建立myid檔案,内容分别是:1、2、3,需要與zoo.cfg配置檔案中的server.x對應
linux搭建activeMQ叢集1. 簡介2.叢集搭建步驟

2.1.6 分别啟動zk叢集各節點

如果zookeeper啟動報錯:JAVA_HOME is not set and java could not be found in PATH:如果已經安裝了jdk,那麼可能是zookeeper/bin/zkEnv.sh中沒有讀到環境變量,可以在該檔案中直接寫入JAVA_HOME環境變量的絕對路徑

vim zkEnv.sh
#在bin/zkEnv.sh中寫入jdk的絕對路徑
JAVA_HOME="/usr/java/jdk1.8.0_131"
           

2.2 搭建activeMQ叢集

2.2.1 準備activeMQ叢集主機與端口

主機 叢集端口(conf/activemq.xml) 消息端口(conf/activemq.xml) 管理控制台端口(conf/jetty.xml)
127.0.0.1 63631 61617 8162
127.0.0.1 63632 61618 8163
127.0.0.1 63633 61619 8164

2.2.2 下載下傳activeMQ安裝包

官網下載下傳位址:http://activemq.apache.org/components/classic/download

windows版本:apache-activemq-xxx-bin.zip

linux版本:apache-activemq-xxx-bin.tar.gz

如這裡下載下傳的apache-activemq-5.16.1-bin.tar.gz

2.2.3 上傳并解壓apache-activemq-5.16.1-bin.tar.gz到虛拟機上,複制2份,共3個節點

linux搭建activeMQ叢集1. 簡介2.叢集搭建步驟

2.2.4 更改節點一conf/jetty.xml配置

1.更改ActiveMQ管理控制台端口

<property name="host" value="0.0.0.0"/>
<property name="port" value="8162"/>
           

 2.2.5 更改節點一conf/activemq.xml配置

1.将brokerName改為統一的名稱,如zookeeper-activemq-test,(注:三個節點的brokerName要一緻)

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="zookeeper-activemq-test" dataDirectory="${activemq.data}">
           

2.使用性能比較好的LevelDB替換掉預設的KahaDB

<persistenceAdapter>
	<!--注釋掉或者删除掉kahaDB-->
	<!--kahaDB directory="${activemq.data}/kahadb"/ -->
	<replicatedLevelDB
	directory="${activemq.data}/leveldb"
	replicas="3"
	bind="tcp://0.0.0.0:63631"
	zkAddress="127.0.0.1:2182,127.0.0.1:2183,127.0.0.1:2184"
	hostname="cxj"   
	zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
           

配置項說明:

directory    #持久化資料存放位址(預設的情況下${activemq.data}下是沒有leveldb目錄的,要自己建立)

replicas     #叢集中節點的個數(由于我們是三台伺服器搭建的ActiveMQ,是以replicas的數量是3)

bind           #叢集通信端口

zkAddress #ZooKeeper叢集位址

hostname  #目前伺服器的IP位址,如果叢集啟動的時候報未知主機名錯誤,那麼就需要配置主機名到IP位址的映射關系,

zkPath       #ZooKeeper資料挂載點(叢集啟動成功之後,會在zookeeper下自動注冊該節點)

(如果需要)linux虛拟機修改主機名:

#檢視主機名:
hostname 
#修改主機名:
hostnamectl set-hostname 主機名
#配置主機名到IP的映射:在/etc/hosts檔案末尾加上:ip位址 主機名
vim /etc/hosts
           
linux搭建activeMQ叢集1. 簡介2.叢集搭建步驟

3.更改ActiveMQ背景端口

<transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
           

2.2.6 同理更改其他2個節點的配置檔案的叢集端口、消息端口、管理控制台端口

2.2.7 啟動ActiveMQ叢集所有節點

#啟動後在zookeeper安裝目錄下測試activemq是否注冊到zk中,用zkCli.sh -server ip:端口登入zk,
zkCli.sh -server ip位址:端口
#用ls /檢視是否連接配接上zk叢集)
ls /
           

如果activemq叢集啟動報錯:java.io.IOException: com/google/common/util/concurrent/internal/InternalFutureFailureAccess

解決方法一:

清除所有的資料,也就是删除每個節點的上面配置的 replicatedLevelDB 節點中 directory 屬性指向的目錄 ,即删除每個節點下的 data/leveldb 目錄

解決方法二(推薦):

将failureaccess-1.0.1.jar包放到ActiveMQ每個節點的lib目錄下,然後重新開機每個節點,下載下傳位址:https://mvnrepository.com/artifact/com.google.guava/failureaccess