1

我目前正在管理一个 PHP-FPM 服务器集群,所有这些服务器往往彼此不同步。我在应用程序服务器(Magento)上使用的应用程序允许管理员修改系统上的各种文件,但现在该站点处于集群设置中,修改文件仅在单个实例上修改它(在集群中各种机器的应用服务器之一)。

是否有适用于 Linux 的开源应用程序可以让我保持所有这些服务器同步?我可以创建一个小型 VM 实例,该实例可以侦听来自机器的更改以进行同步。理论上,完美的应用程序将在每台要同步的机器上运行小客户端,这些客户端将与主服务器通信,然后主服务器将决定如何/从每台机器同步什么。

我已经研究过运行集中式文件服务器的可能性,但不幸的是,我的应用服务器分散在 EC2 和物理机之间,这使得这不可行。由于有多个应用程序服务器(其中一些是根据站点的负载动态创建的),简单地设置一个 rsync cron 作业效率不高,因为必须在每台机器上修改 cron 作业才能将文件发送给彼此集群中的机器,那将只是一堆不必要的数据传输/ssh连接。

4

2 回答 2

1

我正在处理建立一个类似的解决方案。我已经成功了一半。我建议您使用 lsyncd,它基本上监视磁盘的更改,然后立即(或您想要的任何时间间隔)使用 rsync 自动将文件同步到服务器列表。

我遇到的唯一问题是使服务器列表保持最新,因为我可以随时启动其他服务器,所以每当从集群中添加或删除机器时,我都需要通知集群中的每台机器。

我认为 lsyncd 是一个很好的解决方案,您应该研究一下。我遇到的问题可能对你来说也是一个问题,还有待解决。

于 2014-03-13T20:32:51.747 回答
0

与其保持数十或数百台服务器交叉同步,它会更有效、更可靠,最重要的是,只需维护一个“管理节点”并将更改从该节点复制到所有“工作节点”。

例如,在我们公司,我们使用开发服务器 -> 暂存服务器 -> 实时后端工作流程,其中所有更改都使用自定义 php+rsync 前端跨服务器传输。这允许开发人员将更新推送到实时环境中的暂存服务器,测试更改,并将它们逐步滚动到实时后端。

类似的方法也可以很好地适用于您的情况。显然它不是即插即用的解决方案,但我认为它是最简单的方法——无论是在可维护性还是在可扩展性方面。

于 2012-12-12T07:53:26.227 回答