1. 程式人生 > >RabbitMQ叢集的架構搭建全過程及JMeter壓測軟體安裝使用

RabbitMQ叢集的架構搭建全過程及JMeter壓測軟體安裝使用

什麼是RabbitMQ?

MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入佇列的訊息(針對應用程式的資料)來通訊,而無需專用連線來連結它們。訊息傳遞指的是程式之間通過在訊息中傳送資料進行通訊,而不是通過直接呼叫彼此來通訊,直接呼叫通常是用於諸如的技術。排隊指的是應用程式通過 佇列來通訊。佇列的使用除去了接收和傳送應用程式同時執行的要求。

RabbitMQ是一個由erlang開發的AMQP(Advanved Message Queue,高階佇列訊息協議)的開源實現。

RabbitMQ應用場景:

在專案中,將一些無需即時返回且耗時的操作提取出來,進行非同步處理,而這種非同步處理的方式大大地節省了伺服器的請求響應時間,從而提高了系統的吞吐量。

RabbitMQ支援訊息的持久化,也就是資料可以寫在磁碟上。為了資料安全考慮,大多數企業都會選擇持久化。如果不需要訊息持久化,那麼使用記憶體節點即可!最合適的方案是既有記憶體節點,又有磁碟節點,以下案例就是這樣的一個例子。

架構思路:

在一個叢集裡,三臺伺服器,其中一臺使用磁碟模式,另兩臺使用記憶體模式。兩臺記憶體模式的節點無疑速度更快,因此通過客戶端連線訪問它們。但是客戶端不可能分別連線兩個記憶體節點,肯定是通過前端反向代理去輪詢釋出請求。如果擔心前端反向代理伺服器故障,可以通過keepalived做一個高可用架構。而磁碟模式的節點,由於磁碟IO相對較慢,因此僅做資料備份使用。

注意:三臺伺服器都需要連上網際網路並安裝軟體包,另外

RabbitMQ叢集節點必須在同一個網段裡,如果是跨廣域網,效果就會變差。

配置表:

IP地址

主機名

作業系統

防火牆和SELINUX

用途

192.168.80.184

mq01

Centos7.4

關閉

磁碟節點

192.168.80.185

mq02

Centos7.4

關閉

記憶體節點

192.168.80.186

mq03

Centos7.4

關閉

記憶體節點

注意:這裡主機名不可以帶 . 否則會出錯

----1.使用Centos7.4自帶的YUM源安裝軟體--三臺都一樣---需要公網環境---

service firewalld stop

setenforce 0

yum install -y epel-release

yum install -y rabbitmq-server

/usr/lib/rabbitmq/bin/rabbitmq-plugins list                     //檢視外掛安裝情況

/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management    //啟用rabbitmq_management服務

vi /etc/hosts

192.168.80.181 mq01      //注意這裡的主機名mq01中不能帶.

:wq

service rabbitmq-server start

netstat -anpt | grep 5672

 

service rabbitmq-server stop            //停止三臺伺服器是為了下面修改cookie值時不會報錯

more /var/lib/rabbitmq/.erlang.cookie  //檢視三臺伺服器上的cookie,叢集場景下,三臺的值需要相同,所以需要修改三臺的cookie值為相同

vi /var/lib/rabbitmq/.erlang.cookie

......

:wq

service rabbitmq-server start      //此時啟動三臺伺服器,再去驗證三臺伺服器cookie值是否一致

rabbitmqctl cluster_status        //檢查三臺的叢集狀態,目前相互獨立,沒有形成叢集。

mq01這臺伺服器情況顯示如下:

Cluster status of node [email protected] ...

[{nodes,[{disc,[[email protected]]}]},

 {running_nodes,[[email protected]]},

 {cluster_name,<<"[email protected]">>},

 {partitions,[]}]

...done.

---------2.mq02和mq03上操作---記憶體節點------------

rabbitmqctl stop_app                          //僅關閉應用,不關閉節點  

 

 

rabbitmqctl join_cluster --ram [email protected]   //把mq02和mq03節點加入到磁碟節點mq01 

rabbitmqctl start_app                        //開啟應用

rabbitmqctl cluster_status                   //驗證叢集狀態如下

Cluster status of node [email protected] ...

[{nodes,[{disc,[[email protected]]},{ram,[[email protected]]}]},

 {running_nodes,[[email protected],[email protected]]},

 {cluster_name,<<"[email protected]">>},

 {partitions,[]}]

...done.

去瀏覽器中訪問:

http://192.168.80.184:15672/        //預設使用者名稱:guest 密碼:guest,埠會自動將5672變成15672

 

--------新增一個策略---------

admin->policies->add/update a policy

name:策略名稱

pattern: ^a                //以a開頭

definition:ha-mode  all   //使用ha-mode模式中的all,也就是同步所有匹配的佇列

Priority:優先順序,預設是0,值越大優先順序越高

 

add policy 完成

---------以下簡單增加訊息佇列-----

queues->

 

add queue 完成

--------------再新建一個bb佇列--arguments項不填寫-----------

 

add queue 完成

-----------以下在aa和bb佇列中新建訊息--------

aa->Publish message

 

close 完成

以同樣的方法給bb也建立訊息,檢視訊息記錄如下:

 

------------以下做破壞性測試-----------

[[email protected] ~]# service rabbitmq-server stop     //把mq01關閉

http://192.168.80.185:15672/              //02或03上測試訊息是否存在。而且bb訊息佇列已經不在了,說明沒有做映象模式。

 

[[email protected] ~]# service rabbitmq-server stop    //02關閉在03上檢視應該訊息還在,注意地址

http://192.168.80.186:15672/

 

service rabbitmq-server start              //把01和02都啟動,訊息不同步

 

此時若想同步訊息佇列:

[[email protected] ~]# rabbitmqctl sync_queue aa    //在任意節點手動同步佇列

[[email protected] ~]# ll /var/lib/rabbitmq/mnesia/rabbit\@mq01/queues/        //在mq01上檢視訊息佇列中的資訊

 

[[email protected] ~]# ll /var/lib/rabbitmq/mnesia/rabbit\@mq02/queues/       //在mq02上檢視訊息佇列中的資訊

 

[[email protected] ~]# ll /var/lib/rabbitmq/mnesia/rabbit\@mq03/queues/      //在mq03上檢視訊息佇列中的資訊

 

再去客戶端檢視:

 

-----------以下JMeter壓力測試軟體------------

下載-Binaries 包網址:https://jmeter.apache.org/download_jmeter.cgi

-------在微軟系統下配置JAVA環境-------

安裝jdk-8u161-windows-x64

右擊電腦-》屬性-》高階-》環境變數-》系統變數-》PATH-》編輯-》新建-》加入下面的路徑-》確定

C:\Program Files (x86)\Java\jdk1.7.0_55\bin

cmd檢視版本資訊:

Java -version

解壓JMeter,然後到解壓目錄中的bin目錄下執行,jmeter.bat 啟動程式

在選項中選擇語言環境。

使用技巧,查詢相關資料。