跟老男孩学Linux运维:高性能Web集群实践(上)
上QQ阅读APP看书,第一时间看更新

3.4 Rsync企业级应用经验

3.4.1 Rsync排错思维

用户必须具备的Rsync排错思维如下。

❑ 排错必备思想:要对部署流程步骤熟练掌握,熟悉Rsync数据同步原理,并且要学会多看日志,rsync命令行输出日志文件为/var/log/rsyncd.log。

❑ 排错能力练习:模拟错误(两个人练习:一个人制造错误,一个人排错),重视日常错误总结。

1. Rsync服务器端排错思路

Rsync服务器端排错思路如下。

1)查看Rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf。

2)查看配置文件里host allow、host deny,允许的IP网段是否是允许客户端访问的IP网段。

3)查看配置文件中path参数里的路径是否存在、权限是否正确(正常应为配置文件中的UID参数对应的属主和组)。

4)查看Rsync服务是否启动(查看命令为:ps -ef|grep rsync)、端口是否存在(查看命令为:netstat -lnt|grep 873)。

5)查看Iptables防火墙和SELinux是否开启允许Rsync服务通过,也可考虑将其关闭。

6)查看服务器端Rsync配置的密码文件是否为600的权限、密码文件格式是否正确(正确格式:用户名:密码),文件路径和配置文件里的secrect files参数对应。

7)如果是推送数据,要查看配置文件rsyncd.conf中用户是否对模块下目录有可读写的权限。

2. Rsync服务器端常见报错整理

1)服务器端常见错误一:服务器端无共享目录错误。

示例代码如下:

    rsync -avz /tmp/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.
        password
    @ERROR: chdir failed
    rsync  error:  error  starting  client-server  protocol  (code  5)  at  main.c(1503)
        [sender=3.0.6]

故障原因分析及解决策略如下:

    解答:@ERROR: chdir failed是由于没有模块中所指定的共享目录,创建共享目录并授权即可
    mkdir /backup -p
    chown -R rsync.rsync /backup

2)服务器端常见错误二:共享目录权限设置问题。

示例代码如下:

    rsyn c -avz /tmp/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.
        password
    sending incremental file list
    ./
    rsync: failed to set times on "." (in data): Operation not permitted (1)
    ddd/
    rsync: recv_generator: mkdir "ddd" (in data) failed: Permission denied (13)
    *** Skipping any contents from this failed directory ***
    oldboy/

故障原因分析及解决策略如下:

    # 传输文件报权限错误failed: Permission denied
    解答:
    原因1:模块下面的共享目录创建后没有授权导致,需要进行授权可以让Rsync虚拟用户访问管理(CentOS6
          的故障)
    chown -R rsync.rsync /backup
    原因2:rsyncd.conf里增加fake super = yes参数(CentOS7的故障)。

3)服务器端常见错误三:服务器端防火墙服务开启。

示例代码如下:

    rsync  -avz  /tmp/  rsync_backup@10.0.0.7::data  --password-file=/etc/rsync.
        password
    rsync: failed to connect to 10.0.0.7: No route to host (113)
    rsync  error:  error  in  socket  IO  (code  10)  at  clientserver.c(124)  [sender=
        3.0.6]

故障原因分析及解决策略如下:

    # No route to host问题
    解决:可能被防火墙阻挡了。
    telnet rsync服务端ip 873检查,如果出现Connection refuse字样表示防火墙阻挡或服务没启动好。
    /etc/init.d/iptables stop(CentOS6故障)
        chkconfig iptables off(CentOS6故障)
        systemctl stop firewalld(CentOS7故障)
        systemctl disable firewalld(CentOS7故障)

4)服务器端常见错误四:服务器端密码文件权限太大导致的错误。

示例代码如下:

        @ERROR: auth failed on module oldboy
        执行tail /var/log/rsyncd.log会发现错误。
        2014/09/11  11:22:20  [13098]  rsync:  recv_generator:  mkdir  "ddd"  (in  data)
            failed: Permission denied (13)
        2014/09/11  11:24:38  [13236]  secrets  file  must  not  be  other-accessible  (see
            strict modes option)

故障原因分析及解决策略如下:

        # @ERROR: auth failed on module oldboy
        [root@two ~]# rsync -avz install.log rsync_backup@10.0.0.122::oldboy
        Password:
        @ERROR: auth failed on module oldboy
        rsync  error:  error  starting  client-server  protocol  (code  5)  at  main.c(1530)
            [sender=3.0.6]
        解答:@ERROR: auth failed on module oldboy出现此报错问题,一般为认证用户信息与密码信
              息不正确,或者认证密码文件权限没有设置为600导致。

5)服务器端常见错误五:CentOS7服务器端按CentOS6的配置报错。

示例代码如下:

        rsync: recv_generator: mkdir "opt" (in backup) failed: Permission denied (13)
        *** Skipping any contents from this failed directory ***
        解决:CentOS7服务端/etc/rsyncd.conf中要加上fake super =yes参数,CentOS6就不用。

3. Rsync客户端排错思路

Rsync客户端排错思路如下。

1)查看客户端Rsync配置的密码文件是否为600的权限、密码文件格式是否正确。注意:仅需有密码,并且和服务端的密码一致。

2)用telnet连接Rsync服务器IP地址873端口(telnet 172.16.1.41873),查看服务是否启动(可测试服务端防火墙是否阻挡)。

3)客户端执行命令时,语法格式书写不正确,此命令的细节要记清楚,尤其语法格式中的双冒号及其后的oldboy为模块名称。

3.4.2 Rsync复制工具的优缺点

1. Rsync的优点

Rsync复制工具具有以下几个优点。

❑ 增量备份,支持socket(Daemon)守护进程模式,集中备份(支持推拉模式备份)。

❑ 远程Shell通道模式还可以加密(SSH)传输。

❑ socket(Daemon)需要加密传输,可以利用VPN服务或IPSec服务。

2. Rsync缺点

Rsync复制工具具有以下几个缺点。

❑ 大量小文件复制的时候,Rsync进程可能会停止僵死或效率不高。

❑ 一次性远程拷贝可以用scp,如果大量小文件可打成压缩包再拷贝。