使用rsync负载平衡web / ftp服务器

通过设置几个与负载平衡相同的VPS /专用服务器。 我将如何去确保所有的代码是相同的?

最近我读了关于rsync。 不是100%确定什么用例我应该使用rsync。

如果所有节点(服务器)链接到一个服务器(主),则内容是相同的。 但是,如果主服务器宕机,它是坏的。 是否有可能所有的节点rsync到彼此,因此它不依赖于主服务器。

根据您设置的复杂程度和内容更改的频率,您可以select多种选项。

Rsync是同步节点的好select,但是在节点可能启动或closures时遇到一些问题。 一个普通的设置可能会在每个节点上运行一个cron作业来从“主”节点获取数据,但是如果该主节点发生故障,则需要select一个新的“领导者”并从那里开始。 如果手动分配一个主节点,并且假设在closures时不会发生更改,则只能在该节点上执行cron作业,并与其他每个节点同步。 克朗总是会经历一些延迟,因为你正在定期运行任务。

上面的一个稍微好一些的版本 – 仍然面临着处理节点故障的问题,但更“即时”的是使用incron 。 这可以设置为在目录内容更改时触发您的rsync脚本,因此将大大减less节点不同步的时间。

如果你只关心你的代码是同步的,你的版本控制软件应该允许你设置一个post-commit钩子。 为了颠覆,这个过程必不可less:

  • 在服务器上创build一个存储库
  • 将您的文件导入到存储库中
  • 检出工作副本到主节点
  • 设置一个post-commit钩子来更新节点(例如通过rsync)
  • 检出工作副本到本地机器进行更改并将其提交到资源库(svn commit) – 挂钩将自动运行脚本并更新远程节点。

最通用的select,虽然也许过分,如果你只是试图保持代码同步,将是一个分布式文件系统。 例如,使用GlusterFS ,您可以在多个节点之间设置复制 – 并且任何给定节点的故障将被透明地处理。 缺点是写入时间增加,因为写入任何节点必须在所有节点之间同步。 然而,对于单个节点(上述那些节点)的故障来说,这种select是最难抵抗的,并且具有相当大的可扩展性。 它也可以让你设置你的节点,以便文件分发和复制(例如,如果你有10个节点,你可能不需要10个数据副本 – 也许在10个节点之间传播5个数据副本就足够了 – 只允许大约一半的节点失败,并且数据仍然可读。)