镜像服务器是保障业务连续性和数据安全的重要基础设施,通过将主服务器的数据、配置实时或定时复制到备用服务器,实现故障快速切换和负载均衡,配置镜像服务器需结合业务场景选择同步策略、工具及架构,以下是详细配置方法。

环境准备
需准备两台配置相近的服务器(主服务器Master和镜像服务器Slave),操作系统建议一致(如CentOS 7+/Ubuntu 20.04),确保网络互通(关闭防火墙或开放同步端口,如rsync默认873端口),并同步两台服务器时间(使用ntpdate pool.ntp.org或chrony服务)。
镜像同步工具选择与安装
根据实时性、数据类型选择工具,常用工具对比如下:
| 工具名称 | 同步类型 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| rsync | 实时/定时 | 文件级同步(如Web目录) | 增量同步,带宽占用低 | 需脚本配合实现实时 |
| DRBD | 实时 | 块设备同步(如数据库) | 实时镜像,数据一致性高 | 配置复杂,性能开销大 |
| Unison | 双向实时 | 文件双向同步 | 自动解决冲突,支持多平台 | 对大文件效率较低 |
以rsync+inotify实现实时文件镜像为例,安装步骤:
Master和Slave均安装rsync:

yum install rsync -y # CentOS apt install rsync -y # Ubuntu
Master安装inotify-tools(监控文件变化):
yum install inotify-tools -y # CentOS
主服务器(Master)配置
- 创建rsync配置文件
编辑/etc/rsyncd.conf,添加模块定义:[app_data] # 模块名,自定义 path = /data/app # 需同步的目录 auth users = slave # 镜像服务器用户名 secrets file = /etc/rsync.pass # 密码文件路径 uid = root gid = root read only = no # 允许写入
- 创建密码文件
编辑/etc/rsync.pass为slave:password(用户名:密码),设置权限600:echo "slave:password" > /etc/rsync.pass chmod 600 /etc/rsync.pass
- 启动rsync服务
systemctl start rsyncd systemctl enable rsyncd
镜像服务器(Slave)配置
- 创建密码文件
编辑/etc/rsync.pass为password(仅密码,无需用户名),权限600:echo "password" > /etc/rsync.pass chmod 600 /etc/rsync.pass
- 创建同步目录
确保Slave的/data/app目录存在且权限与Master一致:mkdir -p /data/app chown root:root /data/app
实时同步脚本编写(Master)
在Master创建脚本/usr/local/bin/rsync.sh,实现inotify监控+rsync同步:
#!/bin/bash
src=/data/app
slave_ip=192.168.1.102 # Slave IP
module=app_data
/usr/bin/inotifywait -mrq -e modify,create,delete,attrib $src | while read line
do
rsync -avz --delete $src root@$slave_ip::$module --password-file=/etc/rsync.pass
done
赋予执行权限并加入开机自启:

chmod +x /usr/local/bin/rsync.sh echo "/usr/local/bin/rsync.sh &" >> /etc/rc.local
测试与验证
- 在Master的
/data/app目录创建文件(如test.txt),检查Slave的/data/app目录是否实时同步; - 查看Master的rsync日志(
/var/log/rsyncd.log)确认同步状态; - 模拟Master故障,切换Slave为服务端,验证业务可用性。
注意事项
- 网络带宽需满足同步需求,避免因带宽不足导致延迟;
- 定期检查rsync服务状态及日志,及时处理同步失败;
- 对重要数据(如数据库),建议结合数据库原生同步工具(如MySQL主从复制)+文件镜像,确保数据一致性。
相关问答FAQs
问题1:镜像同步过程中出现延迟,如何排查?
解答:首先检查网络带宽(使用iftop或nload监控流量),确认是否带宽饱和;其次查看rsync日志(/var/log/rsyncd.log),检查是否有权限错误或路径问题;最后调整inotify监控参数(如/proc/sys/fs/inotify/max_user_watches,默认8192,建议调大至65535),避免因监控文件数不足导致延迟。
问题2:如何确保镜像服务器与主服务器数据完全一致?
解答:采用“增量同步+校验机制”:使用rsync的--checksum参数(强制校验文件内容而非仅修改时间),定期执行全量同步;结合md5sum或sha256sum工具,每周对关键文件生成哈希值并对比(例如在Master执行find /data/app -type f -exec md5sum {} ; > master.md5,Slave执行相同命令后用diff对比);对于块设备镜像(如DRBD),可通过drbdadm status查看同步状态,确保数据无差异。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/46820.html