多主模式下多台服务器之间的实时文件同步

多主模式下多台服务器之间的实时文件同步

是否有任何工具可以在将文件写入磁盘后立即在两个或多个Linux服务器之间同步文件?该rsync命令不适合我,因为如果我rsync在 cron 中设置,我可以设置的最短时间是 1 分钟,但我需要它是实时的。

答案1

我自己没有使用过它,但最近读到了它。有一个名为 的守护进程lsyncd,我认为它完全可以满足您的需要。

了解更多相关信息这里

答案2

多主模式下多台服务器之间的实时文件同步

有一个很好的工具,lsyncd可以在多个服务器之间实时同步文件。在这里我尝试了两台服务器。

主机:Server1 和 Server2

使用的操作系统:CentOS 7

在两台服务器上安装以下软件包。

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

在两台服务器中生成 ssh-key 并添加到authorized_keys文件中。[将server1的公钥添加到server2的文件中,authorized_keys并将server2的公钥添加到server1的authorized_keys文件中]

服务器1配置

打开/etc/lsyncd.conf并注释掉--行开头的默认配置,并将以下配置添加到文件中。

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

target更改参数中的目标IP 。

您可以delay根据您的要求更改参数。这里设置为1秒。

现在创建日志目录。

# mkdir -p /var/log/lsyncd

使lsyncd服务自动启动。

# systemctl enable lsyncd.service

启动服务。

# systemctl start lsyncd.service

服务器2配置

按照与Server1相同的配置并更改IP target

现在同步已设置。

您可以检查活动tailf /var/log/lsyncd/lsyncd.log

感谢梅尔布尔斯兰的建议。

答案3

同步事物可能是一个选择。它的速度非常快,传输是加密的,并且有多个平台的客户端。它使用“inotify”立即同步更改的文件。

答案4

您需要使用集群文件系统类型解决方案来解决此问题 - 两台计算机之间的简单同步不会为您提供实时响应。

相关内容