我们正在使用 autofs 从本地服务器挂载 NFS 分区。我们有一个冗余服务器,我们正在使用 autofs(5) 手册页中提到的方法将故障转移到该服务器。这一切都运行正常。我们想要做的是将第三个故障转移到由脚本确定的挂载点,该脚本由 auto.master 中的“program:/path/to/script”表示。
这样做的原因是,我们在本地快速服务器上保留了一些存储在远离我们站点的慢速服务器上的软件工具的冗余副本。我们希望主要使用这些本地服务器,但如果它们都不可用,则故障转移到慢速服务器。远程服务器的挂载点通过脚本控制,可能会在我们不知情的情况下更改,因此我们不能简单地将另一台主机添加到冗余列表中。
有人知道这是否可以做到以及如何做到吗?
答案1
我想到的一个快速而肮脏的方法是这样的:
#!/bin/bash
timeout 5 ls /NFS_mountpoint && exit 0 || { service autofs stop ; ln -s /localFS /NFS_mountpoint ; }
if [[ $(timeout 5 ls /NFS_mountpoint >/dev/null 2>&1)$? -eq 0 ]]; then
mail -s "The NFS has failed over to local FS" [email protected]
else
mail -s "Problem on $(hostname)" [email protected]
fi
这可以作为 cronjob 每分钟运行一次(* * * * *)。您可能需要重命名或删除 NFS 挂载点,然后才能对其进行符号链接,因此您可能需要将其更改为mv /NFS_mountpoint /NFS_mountpoint.OLD && ln -s /localFS /NFS_mountpoint