跳到主要内容

主备服务器实时同步

环境准备

系统

  • Ubuntu Server 22.04
  • 主服务器 192.168.26.12
  • 备服务器 192.168.26.11

Lsyncd安装在主服务器,rsync安装在备服务器,单向从主服务器同步到备服务器,使用场景是在主服务器宕机的情况下手动或通过keepalived自动切换使用备服务器;

如需双向同步实现双机热备,则两台服务器都安装Lsyncd和rsync实现双向互相同步,再通过一些负载均衡。

软件

  • Lsyncd 用于比较文件状态,执行文件同步操作
  • Rsync 用于监听同步请求,建立同步实例

安装配置

安装Lsyncd

sudo apt-get install -y Lsyncd

主服务器配置Lsyncd

root@git-test:~# cat /etc/lsyncd/lsyncd.conf.lua
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 10,
maxDelays = 1
}
sync {
default.rsync,
#同步的本地应用数据目录
source = "/gitlab",
#远端的同步目标,包含"用户名@IP::rsync实例名"
target = "rsyncuser@192.168.3.11::data",
#是否同步删除操作
delete = true,
delay = 0,
rsync = {
binary = "/usr/bin/rsync",
#rsync密码
password_file = "/etc/rsync.client.pas",
archive = true,
compress = false,
verbose = true
}
}

创建lsyncd密码文件

#密码文件根据lsyncd配置文件创建
vi /etc/rsync.client.pas
#内容就是密码
root@git-test:~# cat /etc/rsync.client.pas
12345678
#修改文件权限为600
chmod 0600 /etc/rsync.client.pas

备服务器配置rsyncd

root@git-bak:~# cat /etc/rsyncd.conf 

uid = root
gid = root
use chroot = yes
log file=/var/log/rsyncd/rsyncd.log
#pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
#配置实例
[data]
#本地被同步的目录
path = /gitlab
read only = no
list = yes
#用户名
auth users = rsyncuser
#密码文件
secrets file = /etc/rsync.pas

创建rsync密码文件

root@git-bak:~# cat /etc/rsync.pas
#用户名:密码
rsyncuser:12345678

启动

先启动备服务器的rsync

systemctl start rsync
systemctl enable rsync

再启动主服务器的Lsyncd

systemctl start lsyncd
systemctl enable lsyncd