在大多数企业进行在线交易的时代,服务器停机时间和网络中断会造成重大影响。网站的访问者越多,其底层在线基础设施就必须越强大和防弹。
在过去几年中,我们目睹了大型托管和云服务提供商因网络攻击和火灾事件而倒闭。企业所有者和 IT 经理需要确保制定正确的灾难恢复和业务连续性计划,以克服可能影响其业务的潜在威胁。
基础设施水平扩展是一种常用的做法,可提高网站处理大量流量并保护其免受独立 Web 或数据库服务器硬件故障的影响。水平扩展通常使用跨多个区域的不同托管服务提供商的云或专用服务器来实现,以尽可能多地消除单点故障 (SPoF)。
确保所有 Web 服务器具有相同的数据是一项具有挑战性的任务,否则,当备份服务器在灾难中扮演主要角色时,您最终会丢失或损坏数据。
在本文中,我们将演示如何使用 lsyncd 自动化文件和数据同步;一款流行且免费的开源软件。
一、什么是 Lsyncd
Lsyncd 是一个免费的开源实用程序,可以免费下载和配置软件或使用。
它的设置很简单,因为您只需要安装一个包。lsyncd 由可靠的技术、rsync 和 ssh 组成,是跨两台或多台服务器同步数据的完美实用程序。
请注意,lsyncd 不是实时的。它每 15 秒推送一次更改。如果需要,可以通过配置文件修改此值。
现代系统管理员将 lsyncd 用于多种场景,例如:
负载平衡——当流量水平相对较低(或间歇性)或不经常访问新的和修改的内容时,这种方法效果最好。
高可用性——请记住,高可用性有多个方面。使用 lsyncd 将数据推送到另一个可以在发生硬件故障时接管的主机是一个很好的用例。
实时异地备份- 保存已更改文件和文件夹的运行记录的好方法将确保我们将更改推送到第二台主机以进行备份。
二、Linux CentOS 上的 Lsyncd 配置
1、安装 EPEL 仓库
第一步是添加包含 lsyncd 包的 EPEL 存储库。
root@server ~]# yum -y install epel-release
如果一切顺利,您将看到“完成!” 信息。然后您需要确保启用了 EPEL 存储库。
打开epel.repo文件如下:
[root@server ~]# vi /etc/yum.repos.d/epel.repo
将“enabled=0”更改为“enabled=1”,如下所示:
2、安装 Lsyncd
使用以下命令继续安装 lsyncd 包:
[root@server ~]# yum -y install lsyncd
3、在Master上配置SSH
此时我们需要在主服务器上配置 SSH,以便它可以将文件推送到从/备份服务器,而无需密码验证或用户干预。为此,我们将在主服务器上创建 SSH 密钥,如下所示:
[root@server ~] # ssh-keygen -t rsa
执行上述命令后,系统会提示您几个问题。您可以使用默认值。当提示输入密码时,按 Enter 继续输入空密码。
生成 SSH 密钥后,将公钥(以 .pub 结尾的文件)传输到从服务器。这样,主服务器将与从服务器进行身份验证,而无需密码。
使用以下命令传输 ssh 密钥:
[root@server ~]# ssh-copy-id root@slave-server.sampledomain.com
注意:如果使用上述命令时提示您通过密码进行身份验证,这是正常的。这是因为 SSH 密钥尚未到位。
在继续下一步之前,请验证无密码身份验证是否有效。从主服务器,尝试 ssh 到从服务器,如下所示:
[root@server ~]# ssh root@slave-server.sampledomain.com
4、在 Master 上配置 Lsyncd
我们已准备好在主服务器上配置 Lsyncd。我们将修改的设置如下:
日志文件位置
写入状态文件的频率
同步方式
我们希望同步的源文件夹(在主文件夹中)
目标文件夹(在从站中)
首先,打开 lsyncd.conf 文件开始编辑它。
现在已经安装并配置了 Lsyncd,以及用于无密码身份验证的 SSH 密钥,执行以下命令来启动和启用 lsyncd 服务。
[root@server lsyncd]# systemctl start lsyncd
[root@server lsyncd]# systemctl enable lsyncd
创建从 /etc/systemd/system/multi-user.target.wants/lsyncd.service 到 /usr/lib/systemd/system 的符号链接/lsyncd.service
5、验证 Lsyncd 是否正常工作
检查您的主目录和从属目录 (/var/www/html/) 是否为空。
在名为 index.html 的主服务器上创建一个空文件。您可以使用 touch 命令快速执行此操作,如下所示:
[root@server html]# touch index.html
15 秒后,lsyncd 会注意到更改并将新文件推送到从服务器。我们可以监控主服务器上的 lsyncd 日志以验证传输是否发生,以及传输了哪些文件。
[root@server ~]# cd /var/log/lsyncd
[root@server lsyncd]# cat lsyncd.log
现在,查看从服务器上的 /var/www/html/ 目录,确认新的 index.html 文件已经推送成功。
[root@slave-server ~]# ls -luah /var/www/html
total 1
-rw-r--r-- 1 root root 10 Feb 22 09:04 index.html
[root@slave-server ~]#
楼主最近还看过