天天看點

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檔案,将

修改為

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做一個測試。

繼續閱讀