我正在部署一个分布式服务,它在少数节点上使用 NFS 共享。在这种情况下,有一个导出 NFS 共享的主节点和一些必须挂载此导出的从属节点。
使用 chef,我可以配置主节点。主节点完成后,我可以并行配置从节点。但是,如果 chef-client 在所有节点上(大致)同时启动,则从服务器失败,因为服务器上的 NFS 共享尚不存在。
使用chef,如何确保在slave启动之前完成master的配置?我想从服务器暂停(并且可能在几分钟后超时)等待 NFS 导出可用是可以接受的,尽管最好能保证主服务器已完全配置(所有配方/角色) 在允许奴隶上的厨师客户继续之前。
一般来说,最好的方法是不确保一切。如果依赖项不可用,请以优雅失败的方式编写您的食谱代码,然后使用 chef-client 的守护程序模式(或从 cron 运行),以便它会根据需要继续尝试直到成功。