镜像您的网站与rsync在Fedora 10

使用rsync镜像您的网站在Fedora 10上

版本1.0
作者:Falko Timme

本教程将介绍如何将您的网站从主网络服务器镜像到备份服务器(均运行Fedora 10),如果主服务器发生故障,可以接管。 我们使用这个工具rsync ,我们使它运行在一个cron作业,检查每x分钟,如果有更新的镜像上。 因此,如果备份服务器必须接管,通常应该是最新的。

rsync只会更改已更改的文件,因此,只要运行rsync ,就不需要传输5 GB的数据。 它只反映新的/已更改的文件,并且还可以从主服务器上已删除的镜像中删除文件。 除此之外,它可以保留镜像文件和目录的权限和所有权; 为了保护所有权,我们需要以root身份运行rsync ,这是我们在这里做的。 如果主服务器上的权限和/或所有权更改, rsync也将在备份服务器上进行更改。

在本教程中,我们将通过更安全的SSH来隧道rsync ; 这也意味着您不必在防火墙中为rsync打开另一个端口 - 只要端口22(SSH)打开就足够了。 问题是SSH需要用于登录的密码,如果要作为cron作业运行rsync ,则不太好。 需要密码需要人为的互动,这不是我们想要的。

但幸运的是有一个解决方案:使用公钥 。 我们创建一对密钥(在我们的备份服务器server2.example.com上 ),其中一个密钥保存在远程系统( server1.example.com )上的文件中。 之后,当我们运行rsync时,我们将不再提示输入密码。 这也包括正是我们想要的cron工作。

正如您可能已经从我迄今为止所写的那样猜到的,这个概念是我们直接从server2.example.com启动server1.example.com的镜像 ; server1.example.com不需要做任何事情来镜像。

我将在这里使用以下设置:

  • 主服务器(Fedora 10): server1.example.comserver1 ) - IP地址: 192.168.0.100
  • 镜像/备份服务器(Fedora 10): server2.example.comserver2 ) - IP地址: 192.168.0.101
  • 要镜像的网站位于server1.example.com上的/ var / www / html

rsync仅用于镜像文件和目录; 如果要镜像您的MySQL数据库,请查看这些教程:

我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1安装rsync

首先我们必须在server1.example.comserver2.example.com上安装rsync

server1 / server2:

(我们做root!)

yum install rsync

2在server1.example.com上创建一个非特权用户

现在我们在server1.example.com上创建一个名为someuser的非特权用户,这将在server2.example.com上由rsync使用镜像目录/ var / www / html (当然, someuser必须具有/ var / www上的读取权限/ html on server1.example.com )。

server1:

(我们做root!)

useradd -d /home/someuser -m -s /bin/bash someuser

这将创建一个用户的主目录/ home / someuser和登录shell / bin / bash的用户 (重要的是someuser具有有效的登录shell - 像/ bin / false不起作用)。 现在给一些用户一个密码:

passwd someuser

3测试rsync

接下来我们在server2.example.com上测试rsync 。 作为根我们这样做:

server2:

rsync -avz -e ssh someuser@server1.example.com:/var/www/html/ /var/www/html/

你应该看到这样的东西。 回答

[root @ server2〜]#rsync -avz -e ssh someuser@server1.example.com:/ var / www / html / / var / www / html /
主机'server1.example.com(192.168.0.100)'的真实性无法建立。
RSA钥匙指纹是96:1e:9d:39:25:40:9d:89:53:f6:71:8f:fd:79:89:18。
您确定要继续连接(是/否)? < - 是的

然后输入一些用户的密码,您应该看到server1.example.com/ var / www / html目录镜像到server2.example.com上的/ var / www / html

您可以在两台服务器上检查:

server1 / server2:

ls -la /var/www/html

您应该会看到所有的文件和目录已镜像到server2.example.com ,文件和目录应该具有与server1.example.com上相同的权限/ 所有权

4在server2.example.com上创建密钥

现在我们在server2.example.com上创建私钥/公钥对:

server2:

(我们做root!)

mkdir /root/rsync
ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

你会看到这样的东西:

[root @ server2〜]#ssh-keygen -t dsa -b 1024 -f / root / rsync / mirror-rsync-key
生成公共/私有dsa密钥对。
输入密码(无密码为空)< - ENTER
再次输入相同的密码: < - ENTER
您的身份已保存在/ root / rsync / mirror-rsync-key中。
您的公钥已保存在/root/rsync/mirror-rsync-key.pub中。
关键指纹是:
68:1e:9c:12:f1:f5:7f:53:d5:1d:d0:f2:dd:c2:88:f3 root@server2.example.com
关键的randomart形象是:
+ - [DSA 1024] ---- +
| .o。= |
| o。 。+ |
| .. oo + |
| o o o .. ooo |
| * S oo |
| +。 E. |
| |
| |
| |
+ ----------------- +
[root @ server2〜]#

重要的是,您不要输入密码,否则在没有人工交互的情况下,镜像将无法正常工作,因此只需按Enter键即可

接下来,我们将公钥复制到server1.example.com

server2:

(但是,我们以root身份执行此操作)

scp /root/rsync/mirror-rsync-key.pub someuser@server1.example.com:/home/someuser/

公共密钥mirror-rsync-key.pub现在应该可以在server1.example.com上的/ home / someuser使用。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏