ActiveMQ NFS SHARED FILE SYSTEM MASTER/SLAVE

在ActiveMQ的官方文檔中有提及到使用含有文件鎖的分佈式文件系統可以達到高可用的目的。參見http://activemq.apache.org/shared-file-system-master-slave.html。並且這種方式效率最高。

由於資源有限,在做實驗時只是用了兩臺機器,並且其中10.85.203.17及部署了ActiveMQ又作爲NFS服務器使用。

實施步驟分爲兩步,首先配置NFS文件系統,其次配置與測試ActiveMQ在該環境下的功能;邏輯結構圖:[img]http://dl.iteye.com/upload/attachment/0078/7162/361f9776-b126-3dc7-b7fe-22418fc827ea.jpg[/img]

一、配置NFS
1>設置10.85.203.17爲NFS服務器:
1.1>查看是否已安裝portmap和nfs
# rpm -q nfs-utils portmap
nfs-utils-1.0.9-50.el5
portmap-4.0-65.2.2.1

如果有顯示,則表明已安裝並且服務正常。nfs依賴portmap服務,所以要先安裝portmap。

1.2>查看服務是否啓動
# service portmap status
portmap (pid 12728) is running...
# service nfs status
rpc.mountd (pid 12810) is running...
nfsd (pid 12807 12806 12805 12804 12803 12802 12801 12800) is running...
rpc.rquotad (pid 12795) is running...

如果沒啓動,則執行
service portmap restart
service nfs restart

1.3>設置共享目錄和策略:
vi /etc/export
/home/work 10.85.203.38(rw,sync,no_root_squash) 10.85.203.38(rw,sync,no_root_squash)

表明將目錄共享給客戶端IP(也可以用10.85.203.*等)並且賦予客戶端的權限;

[img]http://dl.iteye.com/upload/attachment/0078/7150/c81093bc-44e0-3301-a167-f520273162f5.jpg[/img]

1.4>重啓服務
# service portmap restart
# service nfs restart

如果看到一連串的[ok]時,表示已經啓動成功了。如果第一次啓動,nfs ,又使用restart命令,可能開始會出現一些[FAILED],那是在停止nfs服務,而nfs服務還沒有啓動所以會FAILED。

2>掛載NFS客戶端
2.1>掛載10.85.203.38
mount -t nfs 10.85.203.17:/home/work /george/installs/activemq-datas

語義是將10.85.203.38上的目錄/george/installs/active-datas掛載以NFS的方式掛載到10.85.203.17 NFS服務器的/home/work目錄;

2.2>掛載10.85.203.17
mount -t nfs 10.85.203.17:/home/work /george/installs/activemq-datas

語義是將10.85.203.17上的目錄/george/installs/active-datas掛載以NFS的方式掛載到10.85.203.17 NFS服務器的/home/work目錄;

掛載測試可以分別在.17和.38機器的/george/installs/active-datas目錄裏創建和刪除文件來完成;


3>其他
3.1>常用mount指令:
查看NFS的各種狀態:
showmount -e
可看有分享哪些目錄
 
3.2>常見問題:
1> failed, reason given by server: Permission denied
1.1>檢查NFS的運行級別:
# chkconfig --list portmap
# chkconfig --list nfs
1.2>根據需要設置在相應的運行級別自動啓動NFS:
# chkconfig --level 235 portmap on
# chkconfig --level 235 nfs on
1.3>nfs server接到客戶端的mount時,會先客戶的IP做反解成域名,用域名(注意是用域名而不是IP)去和/etc/exports做比較,如果匹配不成功會失敗。或者在/etc/exports中使用機器名來指定客戶端IP;

二、ActiveMQ配置及測試:
1>配置
只需要分別修改.17和.38機器的 /conf/activemq.xml文件,將

<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>

修改爲

<persistenceAdapter>
<kahaDB directory="/george/installs/activemq-datas"/>
</persistenceAdapter>


2>測試
2.1>分別重啓.17和.38的ActiveMQ應用,會看到.17正常啓動,.38機器會有未獲取到文件鎖提示。

[img]http://dl.iteye.com/upload/attachment/0078/7148/f3ce47ec-3297-3649-a867-ecd9b89a855d.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0078/7152/1517480b-875e-3545-b4bc-8ae234770252.jpg[/img]

2.2>我已測試成功的兩種場景:
2.2.1>分別起停.17和.38機器上的ActiveMQ,master-slave切換正常。
2.2.2>修改ActiveMQ自帶例子裏的程序,讓生產者線程不斷生產消息以及消費者線程不斷消費消息。檢查在master和slave切換時數據無丟失。
2.2.3>還沒進行大數據量測試以及疲勞測試,以後再用JMeter做一個測試。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章