如何在两个负载平衡的 Linux / UNIX 服务器之间同步数据?
负载平衡是一种处理特定网站或网络服务所接收的大量访问者负载的方法。它有助于为您的网站提供冗余。有几种方法可以实现负载平衡:
* 使用Linux 虚拟服务器
* 使用第 4 层路由器
*使用 squid 缓存的循环 DNS
* 来自 Microsoft 或 HP/IBM、Cisco、Nortel 等供应商的专有集群解决方案
然而,一个常见问题是如何让您的网页(HTML/PHP/PERL 脚本)与每台服务器保持同步。例如,如果您在一台 www2 服务器上创建了一个名为 viewnews.php 的新网页,那么新网页如何复制到第二台服务器 www1?
您可以使用 rsync – Unixish(Linux、FreeBSD、Solaris 等)系统上的网络文件分发/同步实用程序。它不只是发送新文件;它通过仅发送已更改的文件来更新所有文件。这节省了时间。
安装 rsync
Debian Linux 用户输入以下命令:# apt-get install rsync
Fedora Linux 用户,用户输入以下命令:# yum install rsync
Red Hat Linux 用户,用户输入以下命令:# up2date rsync
FreeBSD 用户,用户输入以下命令:# pkg_add -r -v rsync
或者,使用 FreeBSD 端口集合:# cd /usr/ports/net/rsync
# make; make install; make clean
如何使用 rsync 命令?
您不需要将 rsync 作为服务或守护程序运行。例如,如果您想在 www1 和 www2 服务器之间同步,请在 www1 服务器上输入以下命令:rsync -avrR --links --rsh=/usr/bin/ssh 202.54.1.11:/var/html/ /var/html
其中,
- -avrR :存档模式 (a)、详细 (v)、递归到目录 (r)、使用相对路径名 (R)
- –links :将符号链接复制为符号链接
- –rsh=/usr/bin/ssh:用于指定要使用的远程 shell ssh(安全复制)。
- 202.54.1.11:/var/html/ :要同步到www1服务器的WWW2服务器IP地址及路径
- /var/html :WWW1 服务器路径
相同作业的 Shell 脚本示例
#!/bin/bash
MASTER="master-server-ip"
DIR="/var/www/change-me"
LDIR="/local/dir"
SSH="/usr/bin/ssh"
rsync -avrR --links --rsh=$SSH $MASTER:$DIR $LDIR
参见:
- 如果您要从 cron 作业/shell 脚本中使用 rsync 命令,请生成 ssh 密钥以通过 ssh 进行无密码登录。
- 请参阅官方rsync 网站以获取更复杂的示例。