NFS 故障轉移在遷移資源時因文件句柄過時而失敗
在這裡遇到了一些問題,我設置了兩台伺服器(Centos 6)和 Glusterfs 和它們之間的共享目錄,我已經將 nfs 目錄移動到共享的 Gluster 文件夾並在兩個盒子上創建了一個符號連結。機器可以通過主機名與自己對話,Gluster 複製通過伺服器之間的另一個乙太網卡進行處理。
我遇到的問題是,即使資源正確地故障轉移(雖然它似乎在故障轉移時上下幾次),我在客戶端上得到了陳舊的 nfs 句柄。以下是我的 crm 配置;我究竟做錯了什麼?
客戶端上的 nfs 掛載盡可能簡單。
node GlusterFS01 node GlusterFS02 primitive ClusterIP ocf:heartbeat:IPaddr2 \ params ip="10.10.10.167" cidr_netmask="24" clusterip_hash="sourceip" \ op monitor interval="5s" primitive exportfs ocf:heartbeat:exportfs \ params fsid="0" directory="/GlusterFS/Files" \ options="rw,sync,no_subtree_check,no_root_squash" \ clientspec="10.10.10.0/24" \ wait_for_leasetime_on_stop="false" \ op monitor interval="5s" \ op start interval="0s" timeout="240s" \ op stop interval="0s" timeout="100s" \ meta is-managed="true" target-role="Started" primitive nfs lsb:nfs \ meta target-role="Started" \ op monitor interval="5s" timeout="5s" colocation sitewithnfs inf: ClusterIP exportfs nfs order nfsorder inf: exportfs ClusterIP nfs property $id="cib-bootstrap-options" \ dc-version="1.1.10-14.el6_5.2-368c726" \ cluster-infrastructure="classic openais (with plugin)" \ expected-quorum-votes="2" \ stonith-enabled="false" \ no-quorum-policy="ignore" \ last-lrm-refresh="1395246465" \ default-resource-stickiness="100" rsc_defaults $id="rsc-options" \ resource-stickiness="100"
感謝您的時間。
更新1:我已經決定我把一切都複雜化了。在與 Florian 通話後,他說服我簡化。我直接從 Gluster 共享 nfs,我只是讓 corosync/pacemaker 處理 ip 資源。更簡單的解決方案,它符合我的需求。
然而,我會說 Dok 在他的評估和建議中是完全正確的,即使我無法在生產環境中啟動並 100% 執行它(甚至認為在測試中工作)。
託管站點withnfs inf:ClusterIP exportfs nfs
訂購 nfsorder inf:exportfs ClusterIP nfs
首先,我相信您想在導出之前啟動 nfsd。
將
unlock_on_stop="true"
參數添加到 exportfs 資源代理也可能會有所幫助,但在我的測試中真正與眾不同的是在故障轉移期間首先停止虛擬 IP。我不完全確定為什麼,但我懷疑這與在嘗試停止導出之前關閉連接有關。另外,我記得在舊版本的起搏器中存在“資源集”(即具有兩個以上資源的排序和託管約束)的問題。相反,我建議刪除您的排序和託管限制,並將它們替換為單個資源組,如下所示:
group g_nfs nfs exportfs ClusterIP
PS exportfs 資源代理應該處理所有的導出。您的 /etc/exports 文件應該是空的。