使用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.com
(server1
) - IP地址:192.168.0.100
- 镜像/备份服务器(Fedora 10):
server2.example.com
(server2
) - IP地址:192.168.0.101
- 要镜像的
网站
位于server1.example.com
上的/ var / www / html
中。
rsync
仅用于镜像文件和目录; 如果要镜像您的MySQL数据库,请查看这些教程:
我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1安装rsync
首先我们必须在server1.example.com
和server2.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
中使用。