更新时间:2022-05-17 03:12:10
安装前的准备(各同步服务器都配置)
# 因为这会降低服务器异常报警的级别,所以记得添加报警机制
# SELINUX=disabled(完全不验证)
vim /etc/sysconfig/selinux
SELINUX=permissive
ESC
:wq
getenforce
setenforce 0
getenforce
安装rsync(各同步服务器都装)
yum install rsync -y
配置rsyncd.conf(各服务器都配置)
# uid、gid决定被同步过来的文件所属用户所属组
# []中是一个自己指定的同步计划的名字(字母数字下划线)
# path是被同步文件的存放位置
# hosts allow这里注意,每一台服务器都只写其它服务器IP
# hosts allow、hosts deny格式
# *(所有IP)
# 192.168.0.2/24(IP段)
# 192.168.0.2 192.168.0.3(指定多个IP)
vim /etc/rsyncd.conf
uid = www
gid = www
use chroot = yes
max connections = 0
log file = /tmp/rsyncd.log
motd file = /tmp/rsyncd.motd
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
secrets file = /etc/rsyncd.pswd
[tongbu1]
path = /www/file1
comment = xoyo video files
ignore errors = yes
read only = no
hosts allow = 192.168.0.x 192.168.0.x
hosts deny = *
[tongbu2]
path = /www/file2
comment = xoyo video files
ignore errors = yes
read only = no
hosts allow = 192.168.0.x 192.168.0.x
hosts deny = *
ESC
:wq
配置密码文件
vim /etc/rsyncd.pswd
root:**************
ESC
:wq
chmod 600 /etc/rsyncd.pswd
vim /etc/sersyncd.pswd
**************
ESC
:wq
创建同步目录(各服务器都创建)
useradd www
mkdir /www
mkdir /www/file1
mkdir /www/file2
chown -R www:www /www/file1
chown -R www:www /www/file2
启动rsync(各服务器都启动)
rsync --daemon
查看占用的端口号
netstat –apn|grep rsync
开启端口
yum install firewalld -y
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --zone=public --permanent --add-port=873/tcp
firewall-cmd --reload
创建单元文件(如果是用yum装的的rsync,则跳过该步骤)
# 进入单元文件目录,创建rsync单元文件
cd /etc/systemd/system
vim rsyncd.service
[Unit]
Description=Start rsync on boot.
After=default.target network.target
[Service]
User=root
Group=root
Type=forking
PIDFile=/var/run/rsyncd.pid
ExecStart=/usr/bin/rsync --daemon
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false
Restart=always
[Install]
WantedBy=multi-user.target
ESC
:wq
# 修改文件权限为只有root用户可以编辑该文件
chown -R root:root /etc/systemd/system/rsyncd.service
chmod -R 644 /etc/systemd/system/rsyncd.service
systemctl daemon-reload
启动并设置开机启动
systemctl enable rsyncd
systemctl start rsyncd
安装sersync(各服务器都装)
# 源码
https://code.google.com/archive/p/sersync/
# 百度云
https://pan.baidu.com/s/1qrwTM40aJ8ckmT84PpiNjg
# 64位最新
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sertongbu2.5.4_64bit_binary_stable_final.tar.gz
# 32位最新
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sertongbu2.5_32bit_binary_stable_final.tar.gz
# 下载安装
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sertongbu2.5.4_64bit_binary_stable_final.tar.gz
tar -zxvf sertongbu2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86/ /usr/local/sersync
配置sersync(各服务器都执行)
cd /usr/local/sersync
cp /usr/local/sersync/confxml.xml /usr/local/sersync/tongbu1.xml
cp /usr/local/sersync/confxml.xml /usr/local/sersync/tongbu2.xml
vim /usr/local/sersync/tongbu1.xml
<sersync>
<localpath watch="/www/file1">
<!--这里注意,每一台服务器都只写其它服务器IP-->
<remote ip="192.168.0.2" name="tongbu1"/>
<remote ip="192.168.0.3" name="tongbu1"/>
<remote ip="192.168.0.4" name="tongbu1"/>
</localpath>
<rsync>
<commonParams params="-artuz"/>
<!--如果设置了密码,则密码文件的路径、内容必须正确 start="true"-->
<auth start="true" users="root" passwordfile="/etc/sersyncd.pswd"/>
<userDefinedPort start="false" port="874"/>
<timeout start="false" time="100"/>
<ssh start="false"/>
</rsync>
<!--60分钟进行一次同步失败文件重新同步-->
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
<!--600分钟进行一次全目录同步-->
<crontab start="true" schedule="600">
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<!--因为这里start="false" 所以下面plugin的配置无需关心-->
<plugin start="false" name="command"/>
</sersync>
ESC
:wq
vim /usr/local/sersync/tongbu2.xml
<sersync>
<localpath watch="/www/file2">
<!--这里注意,每一台服务器都只写其它服务器IP-->
<remote ip="192.168.0.2" name="tongbu2"/>
<remote ip="192.168.0.3" name="tongbu2"/>
<remote ip="192.168.0.4" name="tongbu2"/>
</localpath>
<rsync>
<commonParams params="-artuz"/>
<!--如果设置了密码,则密码文件的路径、内容必须正确 start="true"-->
<auth start="true" users="root" passwordfile="/etc/sersyncd.pswd"/>
<userDefinedPort start="false" port="874"/>
<timeout start="false" time="100"/>
<ssh start="false"/>
</rsync>
<!--60分钟进行一次同步失败文件重新同步-->
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
<!--600分钟进行一次全目录同步-->
<crontab start="true" schedule="600">
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<!--因为这里start="false" 所以下面plugin的配置无需关心-->
<plugin start="false" name="command"/>
</sersync>
ESC
:wq
启动sersync(各服务器都执行)
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/tongbu1.xml
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/tongbu2.xml
测试
# 在任意一台服务器执行
su www
cd /www/file1
echo test > test.txt
ls
# 然后在其他每台服务器执行
cd /www/file1
ls
# 如果结果中包含
test.txt
# 并且文件内容为'test'
# 即表示安装成功
配置开机启动rsync、sersync
# 开机启动rsync
systemctl enable rsyncd
systemctl start rsyncd
# 开机启动sersync
vim /etc/rc.local
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/tongbu1.xml
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/tongbu2.xml
ESC
:wq
chmod +x /etc/rc.d/rc.local
关于日志中部分提示的说明
# 文件同步时会有如下提示
# connect from UNKNOWN (192.168.0.3)
# rsync to tongbu1/ from unknown (192.168.0.3)
# connect from UNKNOWN (192.168.0.4)
# rsync to tongbu1/ from unknown (192.168.0.4)
# 虽然提示连接到未知ip,实际上只是因为没有加
# 虚拟域名映射,完全不会影响rsync功能的使用。
# 如果一定要处理的话,可以修改/etc/hosts文件
# 这样unknown就会变成你设置的虚拟域名了
vim /etc/hosts
192.168.0.2 file2
192.168.0.3 file3
192.168.0.4 file4
ESC
:wq