目前,我正在pipe理一组PHP-FPM服务器,所有这些服务器往往会彼此不同步。 我在应用程序服务器(Magento)之上使用的应用程序允许pipe理员修改系统上的各种文件,但是现在该站点处于群集设置中,修改文件只修改它在单个实例上(在一个应用程序服务器)的集群中的各种机器。
有没有Linux的开源应用程序可以让我保持所有这些服务器同步? 我创build一个小型VM实例,可以监听机器的变化来同步。 从理论上讲,完美的应用程序可以让每台机器上运行的小型客户机进行同步,并与主服务器进行通信,从而决定每台机器如何/同步哪些内容。
我已经研究过运行集中式文件服务器的可能性,但不幸的是我的应用程序服务器分布在EC2和物理机之间,这使得这是不可行的。 由于有多个应用程序服务器(其中一些是根据网站的负载dynamic创build的),简单地设置一个rsync cron作业效率不高,因为cron作业将不得不在每台计算机上进行修改,以便将文件发送到每个其他服务器机器在群集中,这只是一大堆不必要的数据传输/ ssh连接。
您可能要考虑使用Puppet或CFEngine来更改服务器。 像这样的工具允许您对所有服务器进行受控更改。 他们帮助保持多个服务器的configuration同步。
看看GlusterFS。 AFAIK它在EC2上可用。
它的复制/镜像是基于文件的,而且安装起来非常简单。 文件驻留在节点的本地文件系统上的本地目录中。
特别是在你的情况下,你可以在所有的应用程序服务器之间设置镜像,并安全地访问这个本地目录进行读取以解决FUSE的开销(但是你必须通过glusterfs挂载来写,所以文件在所有节点上被复制)。
非常熟悉,我不知道任何Magneto安装,通过正常使用更改文件或目录以外
./var/cache <-- should be on a distributed cache like Redis or Memcache ./var/report <-- doesn't need to be network replicated ./var/log <-- doesn't need to be network replicated ./var/locks <-- the admin node should operate on a single server ./var/session <-- should be on a distributed cache like Redis or Memcache ./media/catalog/product/cache <-- doesn't need to be network replicated
在任何情况下,像NFS这样的networking文件系统都不是一个明智的select,除非你有丰富的经验,通过WAN进行安全和调整。
networking块复制,例如。 Gluster / DRBD也不是一个好的select。 Gluster的性能很差(而且configuration比较复杂),DRBD将不得不使用像OCFS2这样的多主文件系统 – 这并不理想。
更新版本的Magento也支持媒体数据库存储,出于这个确切的原因 – 虽然这是超出理想,并不是一个好主意。
版本控制软件(Git / SVN)会照顾你的代码级需求。 您可以轻松地将吊钩添加到登台机器上,以便在生产系统上执行无需触摸的多重拉动。 但不会迎合pipe理员上传(图片等)。
只需将所有pipe理stream量和生产转移到单个节点,然后从该源复制到其余节点,就可以使FAR更具实际意义。
Lipsync是一个应用程序,可以满足您的“Dropbox风格”需求,并在必要时执行更改。 我们已经多次在Magento集群中使用它。