从共享挂载挂载应用程序二进制文件的优点和缺点是什么?

在一个应用程序节点集群中,将应用程序二进制文件放在共享挂载上,并让每个节点都挂载这些二进制文件,而不是在每个节点上单独拷贝二进制文件有什么优点/缺点?

有没有什么能使一种方法或其他方法特别糟糕?

谢谢

当我开始从事金融行业的时候,我运行的系统是由消费/处理数据的网关系统,计算节点作出交易决定,服务于应用程序的NFS服务器/集中日志logging以及大量的networking将它们绑定在一起。 我们还集中了crontab调度和应用程序监视configuration,并将它们放在NFS挂载上。

这是基于NFSv3的,好处是,呃…

  • 简单的应用程序分发:一个安装 一个地方做出改变。
  • 简单pipe理与这些应用程序相关的数据。

缺点:

  • 容易出错:一个安装。 一个地方搞砸了变化。
  • 可扩展性:除非您也将您的存储集群,否则中央安装将有一个可有效服务的客户端数量的上限。
  • 单点故障(SPOF):同样,集群存储可以减轻这一点,但这是一个考虑因素。 假设NFS,如果您需要重新启动服务器,会发生什么情况? 如果NFS服务器丢失或不可用,群集节点会在引导时挂起吗?
  • 权限:您将如何pipe理跨群集节点的权限。 本地服务帐户? 匹配的UID / GID? 就我而言,我使用了NIS,后来使用LDAP。 目录服务在这里会有所帮助。
  • 性能:您在这里依赖networking和交换基础设施。 本地磁盘上的应用程序加载,日志logging等性能将比在线更快。
  • 调整NFS是困难的,大多数人不这样做:)

现在,您可以通过configurationpipe理系统( Puppet , Chef , Ansible 等 )部署和pipe理您的软件。 或者甚至更好,使用操作系统的本地打包方法(RPM,.deb)并将其与configurationpipe理一起部署:

  • 这删除了SPOF。
  • 本地化应用程序应该具有性能优势。
  • 简化networking:例如,如果你扩展到多个地点?
  • 可以提供更精细的控制:例如,将二进制文件分发给系统的一个子集,而不是整个集群。
  • 自我logging。

鉴于此,我可能会推荐应用程序的单独副本,而不是使用共享安装。