最近,我和老板在 Linux 集群中跨计算节点分发可执行二进制文件的正确方法上发生了分歧。所有计算节点都运行发行版和同一版本(具体来说是 Ubuntu 14.04)。
当前方法是从主节点在所有计算节点上安装 nfs 共享,并将所有可执行文件(和依赖项)安装到上述目录中。通常有 10-20 个不同的可执行文件,它们每六个月左右升级一次。
我认为我们应该将 deb 包部署到计算节点,但由于我对集群还不熟悉,所以我感觉自己只是在说说而已。
因此,我请求有关将二进制文件部署和升级到计算节点的“正确”方法的反馈和建议。
感谢!
答案1
没有一种“正确”的方法可以做到这一点。如果 NFS 共享对您有用,并且您不会因为其可能引入的 SPOF 而感到沮丧,那么请继续使用它。
不过,我通常更喜欢使用适当的配置管理系统(我的情况是 ansible)来分发和安装软件包。如果软件包可以通过发行版的存储库获得,那么您可以使用 Ansible 安装所需的任何特定版本。如果是自定义软件包,您可以让 Ansible 将该软件包从您自己的分发点复制到每个服务器,然后安装它。
但关键是要保留严格控制在整个过程中,并能够以自动化、可测试、可重复的方式完成。这并不难,但您需要了解一些您选择的 CM 系统的知识。
答案2
您希望集群中的所有机器始终拥有完全相同的二进制存储库。您用于部署这些二进制文件的方法与集群无关。
使用 NFS 手动部署二进制文件是完全有效的。根据操作范围,构建自己的软件包并运行自己的 Debian 存储库甚至可能有点过头。话虽如此,使用软件包管理器会使依赖项管理和回滚更容易。
正如 EEAA 指出的那样,无论哪种情况,配置管理系统(chef、puppet、ansible、salt)都是可行的方法,因为它可以更容易地确保所有服务器处于完全相同的状态。