早上推开办公室门,我就跟中了彩票似的乐开了花——昨晚测试了一宿的“双服务器如何同步备份信息”方案终于零失误跑通!那种感觉就像一口气清空购物车还不用还花呗,爽到飞起。兄弟们,这回咱们不搞花里胡哨的 PPT,也不扯虚头巴脑的概念,直接上硬菜:用两台服务器把数据像双胞胎一样同步备份,丢一台另一台秒顶,稳得一批!
先讲思路,再摆工具,最后一步把坑全给你刨平。思路只有一句话:把主服务器每一次写入、每一次改动、每一次心跳,都实时镜像到备份服务器。工具我选了三件套——Rsync、Lsyncd、Keepalived。Rsync 负责增量同步,像快递小哥只送新包裹;Lsyncd 监听文件系统事件,文件一变立刻触发 Rsync,把延迟压到毫秒级;Keepalived 用来飘 VIP,主节点挂掉,备份节点 3 秒内接管 IP,用户压根没感觉。整套方案开源免费,不花一分钱,却能顶得上十几万商业容灾设备。
第一步,两台机器系统得一样,我用的是 Ubuntu 22.04,内核 5.15,别问为啥,问就是稳。主节点 IP 192.168.1.10,备份节点 192.168.1.11,再预留一个 VIP 192.168.1.100 对外服务。两台机器互相做 SSH 免密,Rsync 走 873 端口,别忘了在 /etc/rsyncd.conf 里写模块路径、uid、gid,再配 secrets file,权限 600,一步错全锅背。
第二步,上 Lsyncd。配置文件 /etc/lsyncd/lsyncd.conf.lua,核心是 sync 块:source 写主节点要监控的目录,target 填备份节点的 rsync 模块名,再加个 rsyncOps = {"-avz", "--delete"},保证两边一模一样。启动命令 systemctl enable lsyncd && systemctl start lsyncd,日志看 /var/log/lsyncd/lsyncd.log,出现 “Normal: Finished a list after 0.001s” 就稳了。
第三步,Keepalived 上飘 VIP。主节点 state MASTER,priority 150;备份节点 state BACKUP,priority 100。virtual_router_id 两台必须一样,我图吉利用 66。track_script 里写个 chk_nginx.sh,每 2 秒检测一次服务,真挂了就把 priority 减 30,VIP 立马漂走。测试时直接拔主节点网线,浏览器刷新 3 秒不到就切过去,那一刻我差点在办公室原地蹦迪。
坑也顺带提三个:第一,rsync 的 –delete 参数一不留神会把备份端手抖删掉目录,务必先在测试环境跑全量;第二,Keepalived 的 notify 脚本要用绝对路径,不然系统找不到直接罢工;第三,防火墙别忘记放行 873、112、80、443,否则同步和 VIP 漂移全哑火。踩完再回头看,发现这些坑全是粗心惹的祸,跟技术难度半点关系都没有。
整套流程跑下来,主节点写 1 G 日志,备份节点 2 秒内同步完,CPU 占用不到 5%,内存多吃了 20 M,忽略不计。今晚我准备把方案推到生产环境,再给自己泡一杯不加糖的拿铁,庆祝一下。兄弟们,如果你也想体验“服务器挂了都不怕”的快乐,就按上面步骤撸一遍,保准你笑得比我还开心!
————————教程分割线————————
教程:手把手教你实现“双服务器如何同步备份信息”
环境准备
• 两台配置相同的 Linux 服务器(示例 Ubuntu 22.04)。
• 固定内网 IP:主 192.168.1.10,备 192.168.1.11。
• 预留浮动 VIP:192.168.1.100。
• root 权限,确保两台机器时间同步(chrony 或 ntp)。
互设 SSH 免密
主节点
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
ssh-copy-id root@192.168.1.11
备份节点同样操作到主节点,确保双向免密。
安装并配置 Rsync 守护进程
两台都装
apt update && apt install rsync -y
编辑 /etc/rsyncd.conf(示例):
【backup】
path = /data/backup
uid = root
gid = root
read only = false
auth users = backupuser
secrets file = /etc/rsyncd.secrets
/etc/rsyncd.secrets 内容:backupuser:StrongPass
chmod 600 /etc/rsyncd.secrets
systemctl enable rsync && systemctl start rsync
安装 Lsyncd
apt install lsyncd -y
mkdir -p /etc/lsyncd
/etc/lsyncd/lsyncd.conf.lua:
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
nodaemon = false,
maxProcesses = 4
}
sync {
default.rsync,
source = "/data/web",
target = "backupuser@192.168.1.11::backup",
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
bwlimit = 2000,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
}
}
systemctl enable lsyncd && systemctl start lsyncd
安装 Keepalived
apt install keepalived -y
主节点 /etc/keepalived/keepalived.conf:
global_defs {
router_id LVS_MASTER
}
vrrp_script chk_nginx {
script "/usr/local/bin/chk_nginx.sh"
interval 2
weight -30
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 66
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass kEepAl1v3
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
}
备份节点把 state 改为 BACKUP,priority 改为 100。
/usr/local/bin/chk_nginx.sh:
#!/bin/bash
systemctl is-active nginx || exit 1
chmod +x /usr/local/bin/chk_nginx.sh
systemctl enable keepalived && systemctl start keepalived
验证
• 在主节点 echo "test" > /data/web/test.txt,2 秒内在备份节点 ls /data/backup 能看到同名文件。
• 主节点 systemctl stop nginx,3 秒内 VIP 漂移到备份节点,浏览器访问 VIP 仍正常。
• 恢复主节点服务,VIP 自动漂回。
日常维护
• 每周手动全量 rsync 校验一次:rsync -avz --dry-run /data/web/ backupuser@192.168.1.11::backup。
• 监控 /var/log/lsyncd/lsyncd.log 与 /var/log/syslog,出现同步失败立刻排查网络或权限。
• 定期更新系统补丁,保持 rsync、lsyncd、keepalived 为最新稳定版。
照着以上 7 步操作,你就能把“双服务器如何同步备份信息”做到企业级水准,主备切换丝滑无感,数据零丢失,睡觉都能笑醒!