这里遇到了一点问题,我设置了两台服务器 (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% 地启动并运行它(即使认为在测试中是可行的)。
答案1
共置 sitewithnfs inf: ClusterIP exportfs nfs
订单 nfsorder inf:exportfs ClusterIP nfs
首先,我相信您想在导出之前启动 nfsd。
向 exportfs 资源代理添加unlock_on_stop="true"
参数可能也有帮助,但在我的测试中真正起作用的是在故障转移期间首先停止虚拟 IP。我不太清楚为什么,但我怀疑这与在尝试停止导出之前关闭连接有关。
另外,我记得旧版本的 Pacemaker 中存在“资源集”(即具有两个以上资源的排序和共置约束)问题。我建议删除排序和共置约束,并将其替换为单个资源组,如下所示:
group g_nfs nfs exportfs ClusterIP
PS:exportfs 资源代理应处理所有导出。您的 /etc/exports 文件应为空。