保持群集中的多个服务器同步?

时间:2012-12-10 20:55:59

标签: linux ssh rsync

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

不是保持数十个或数百个服务器交叉同步,而是更高效,更可靠,而且最重要的是简单地维护一个“管理节点”并将更改复制到所有服务器“工人节点”。

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

类似的方法也适用于您的情况。显然它不是一个即插即用的解决方案,但我认为它是最简单的方法 - 在可维护性和可扩展性方面。