文档规定:红色加粗字体表示命令行,绿色加粗字体表示文档中的配置内容
配置准备:
操作系统 CentOS Linux release 7.3.1611 (Core)
目标服务器 0144220_yr_worker1 192.168.60.166
源服务器 0144220_yr_master 192.168.60.165

要完成的任务:
将源服务器/data目录下的文件实时同步到目标服务器上,让两边的文件保持一致

1.配置SELinux和firewalld (两台服务器均要配置)
A.编辑selinux的配置文件,使其处于disabled的状态
vi /etc/selinux/config

注释掉SELINUX=enforcing和SELINUXTYPE=targeted
新增SELINUX=disabled
保存并退出

让修改的配置文件生效
setenforce 0

B.开放rsync所需要的873端口
firewall-cmd ‐‐zone=public ‐‐add-port=873/tcp ‐‐permanent
重新加载防火墙规划并保持状态信息,即将持久配置(配置文件中的信息)应用为运行时配置
firewall-cmd ‐‐reload

再在worker1节点上重复上述步骤。

2.目标服务器配置
0144220_yr_worker1 192.168.60.166
A.安装rsync服务与xinetd服务
yum install –y rsync xinetd

B.安装完上述软件后,对rsync进行配置
vi /etc/rsyncd.conf

新增如下配置文件(不要复制注释)
uid = root #设置rsync的运行用户权限为root
gid = root #设置rsync的运行组权限为root
use chroot = no
list = no #不显示rsync服务端资源列表
log file = /var/log/rsyncd.log #配置rsync日志文件存放路径
[data] #自定义模块名称
path = /data #定义需要实时同步的路径
comment = data #与模块名称相同即可
ignore errors
read only = no #设置rsync服务端文件为读写权限
max connections = 300 #允许最大的客户端连接数
timeout = 600 #设置超时时间
auth = rsync #执行数据同步的虚拟用户名,可以设置多个,用逗号隔开
secrets file = /etc/rsync.pas #设置同步使用的用户及密码信息文件存放路径
hosts allow = * #允许所有用户访问

C.创建用于存放同步的用户及密码的文件/etc/rsync.pas,并将此文件权限修改为600
echo “rsync:123456” >> /etc/rsync.pas
chmod 600 /etc/rsync.pas

D.创建同步的目录/data
mkdir /data

E.启动xinetd服务并将其加入开机项
systemctl start xinetd #启动xinetd服务
systemctl enable xinetd #将xinetd服务加入开机项

F.rsync相关的指令
配置rsync开机启动
systemctl enable rsyncd
启动rsync服务
systemctl start rsyncd
停止rsync服务
systemctl stop rsyncd
重启rsync服务
systemctl restart rsyncd
查看rsync服务的状态
systemctl status rsyncd

3.源服务器
0144220_yr_master 192.168.60.165
A.安装rsync服务与xinetd服务(源服务器不需要配置rsyncd.conf文件,但需要配置rsync服务及xinetd服务的开机启动,具体命令同目标服务器)
yum install -y rsync xinetd
B.安装 wget 软件,为了下载sersync源码包做准备
yum –y install wget

C.下载sersync源码包并安装sersync服务
wget ‐‐no-check-certificate https://raw.githubusercontent.com/orangle/sersync/master/release/sersync2.5.4_64bit_binary_stable_final.tar.gz

D.创建sersync的目录及其子目录
mkdir /usr/local/sersync
mkdir /usr/local/sersync/conf
mkdir /usr/local/sersync/bin
mkdir /usr/local/sersync/log

E.解压下载的sersync源码包,把confxml.xml文件及sersync2文件拷贝到上一步建立好的文件夹中
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
cd GNU-Linux-x86/
cp confxml.xml /usr/local/sersync/conf
cp sersync2 /usr/local/sersync/bin


F.创建密码文件跟目标服务器一样,不过这个文件只要保存密码即可,不需要保存用户名,权限也是600
echo “123456” >> /etc/sersync.pas
chmod 600 /etc/sersync.pas

G.配置sersync服务
vi /usr/local/sersync/conf/confxml.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/>
    <fileSystem xfs="false"/>
    <filter start="false">
        <exclude expression="(.*)\.svn"></exclude>
        <exclude expression="(.*)\.gz"></exclude>
        <exclude expression="^info/*"></exclude>
        <exclude expression="^static/*"></exclude>
    </filter>
    <inotify>
        <delete start="true"/>
        <createFolder start="true"/>
        <createFile start="true"/>
        <closeWrite start="true"/>
        <moveFrom start="true"/>
        <moveTo start="true"/>
        <attrib start="true"/>
        <modify start="true"/>
    </inotify>

    <sersync>
        <localpath watch="/data">
            <remote ip="192.168.60.166" name="data"/>
            <!‐‐<remote ip="192.168.8.39" name="tongbu"/>‐‐>
            <!‐‐<remote ip="192.168.8.40" name="tongbu"/>‐‐>
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <auth start="false" users="rsync" passwordfile="/etc/rsync.pas"/>
            <userDefinedPort start="true" port="873"/><!‐‐ port=874 ‐‐>
            <timeout start="false" time="100"/><!‐‐ timeout=100 ‐‐>
            <ssh start="false"/>
        </rsync>
        <failLog path="/usr/local/sersync/log/rsync_fail_log.sh" timeToExecute="60"/><!‐‐default every 60mins execute once‐‐>
        <crontab start="false" schedule="600"><!‐‐600mins‐‐>
            <crontabfilter start="false">
                <exclude expression="*.php"></exclude>
                <exclude expression="info/*"></exclude>
            </crontabfilter>
        </crontab>
        <plugin start="false" name="command"/>
</sersync>
<plugin name="command">
        <param prefix="/bin/sh" suffix="" ignoreError="true"/>  <!‐‐prefix /opt/tongbu/mmm.sh suffix‐‐>
        <filter start="false">
            <include expression="(.*)\.php"/>
            <include expression="(.*)\.sh"/>
        </filter>
    </plugin>

    <plugin name="socket">
        <localpath watch="/opt/tongbu">
            <deshost ip="192.168.138.20" port="8009"/>
        </localpath>
    </plugin>
    <plugin name="refreshCDN">
        <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
            <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
            <sendurl base="http://pic.xoyo.com/cms"/>
            <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
        </localpath>
    </plugin>
</head>

H.创建同步目录
mkdir /data

I.设置环境变量
echo “export PATH=$PATH:/usr/local/sersync/bin/”>> /etc/profile
source /etc/profile

J.启动、重启、停止sersync服务
安装psmisc包,以便下面使用killall命令
yum install psmisc
sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml #启动
killall sersync2 && sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml #重启
killall sersync2 #停止


K. 重启源服务器和目标服务器上的rsync服务和xinetd服务
systemctl restart xinetd
systemctl restart rsyncd

4.配置sersync2开机启动
vi /usr/lib/systemd/system/sersync2.service
在文件中加上下面的配置代码:
[Unit]
Description=sersync2
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/sersync/bin/sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
ExecReload=killall sersync2 && /usr/local/sersync/bin/sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
ExecStop=killall sersync2
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[Unit] 服务的说明
Description:描述服务
After:描述服务类别
[Service] 服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

将sersync2添加为开机启动项
systemctl enable sersync2
启动sersync2服务
systemctl start sersync2
查看sersync2服务状态
systemctl status sersync2
停止sersync2服务
systemctl stop sersync2

5.进行测试:
A.在源服务器中
运行下列指令(在rsync服务及xinetd服务都启动的前提下)
sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
或者systemctl start sersync2
cd /data
touch finish
echo “permission completed” >> finish
cat finish
ll


B.在目标服务器中
执行下列命令
cd /data
ll
cat finish

由worker1中/data目录下的文件及文件内容中,我们可以看出,已经成功配置好Rsync和Sersync实时数据同步。

若要配置多个备份节点的话只需要复制目标服务器,并在源服务器的/usr/local/sersync/conf/confxml.xml文件中加上其他节点的远程连接信息:
<remote ip=”x.x.x.x” name=”data”/> #x.x.x.x为新增节点的ip地址

文章pdf版下载:
CSDN:http://download.csdn.net/download/young2018/9847296
百度网盘:https://pan.baidu.com/s/1i65HBPN 密码:d7op

Leave a Reply

Your email address will not be published. Required fields are marked *