我目前使用apache,mysql和sshpipe理一个运行ubuntu linux的小型web服务器。 我使用rsync备份到另一台服务器,但是我将它备份到一个/ backup目录。
我想让它设置在第一台服务器出现故障的地方,我可以改变第二台服务器的IP地址,让所有用户,文件,数据库等准备就绪。
有没有人有任何build议最简单/最好的方式去做呢?
注意事项
对于基于文件的服务(一个Web服务器等),rsync可以有效地保持第二个服务器是最新的(用户,configuration等) – 当涉及到数据库的事情变得有点复杂(我使用MySQL和从属服务器为此,这是非常有效的,我也使用PostgreSQL在一些HA /待机configuration,但它是更笨拙)
这加上一点IP盗窃(一个快速的脚本来分配失败的机器的IP到备份机器的接口)可以使相对直接的设置,但允许快速恢复。
只需要考虑一件事 – 谨防故障回复。 将服务移动到备份计算机是一回事,一旦纠正了失败,就可以将它们移回原处,并密切关注数据库。
如果你决定使它更加自动化,LinuxHA是一个(稍微重量级的)方法
您可以使用rsync或drbd保持备份服务器同步,或通过nfs从第三台服务器挂载数据。 如果你想保持简单,我会备份到源服务器的备份服务器上相同的目录位置。
heartbeat2是一个很好的解决scheme,用于pipe理IP地址,并提供自动或手动故障切换工具 – 并考虑到了arpcaching刷新和其他我不会想到的事情。
虚拟化可以在这里帮助。 您可以将2台服务器作为主机服务器运行,都可以使用一台虚拟服务器。 在线服务器运行虚拟服务器,而备份服务器将虚拟服务器“closures”,但仍然可以访问该服务器的文件系统。
然后,您可以从活动虚拟服务器到备份虚拟服务器定期执行rsyncs。 如果活动服务器出现故障,则只需启动备份虚拟服务器即可。
细节取决于你使用的是哪个虚拟化软件(我之前用linux-vserver做过),但是有一些重要的点是:
我相信心跳会为你做到这一点,但是如果你不使用它,我build议手动为Web服务器设置一个虚拟IP。
每个Web服务器都有自己的真实IP和虚拟IP。 当虚拟IP是活动的Web服务器时,它只被分配给一台机器。
这个设置意味着ssh,rsync和所有其他工具可以继续在真实的IP上运行而不会被变化的IP地址所迷惑。