美文网首页Linux
小型架构实践--Rsync部署

小型架构实践--Rsync部署

作者: 飞翔的Tallgeese | 来源:发表于2018-01-21 15:43 被阅读64次

    ##################################

    参考资料:

    rsync服务搭建攻略1

    rsync服务搭建攻略2

    ##################################

    IP规划:192.168.107.103

    ##################################

    前置工作:

    1.防火墙配置

    iptables -I INPUT -p tcp -m state --state NEW --dport 873 -j ACCEPT

    service iptables save

    从这里我们也知道,rsync占用的873端口

    2.Selinux设置

    setenforce 0

    ##################################

    看了一下,rsync已经随着系统安装了,版本号为3.0.6,不过部署路径并不是我想要的,于是决定重新部署

    yum remove rsync -y

    cd ~

    下载最新的3.1.2版本

    wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz

    (wget http://rsync.samba.org/ftp/rsync/rsync-3.1.2.tar.gz)

    tar -xzf rsync-3.1.2.tar.gz

    cd rsync-3.1.2

    开始编译安装

    创建安装路径

    mkdir -p /usr/local/rsyncd

    配置安装路径

    ./configure --prefix=/usr/local/rsyncd

    make安装

    make && make install

    完成安装以后需要对rsync进行配置,这个配置的路径以及配置文件需要手动创建

    mkdir -p /etc/rsyncd

    cd /etc/rsyncd

    touch /etc/rsyncd/rsyncd.conf

    touch /etc/rsyncd/rsyncd.pass

    touch /etc/rsyncd/rsyncd.motd

    将密码文件权限改为600

    chmod 600 /etc/rsyncd/rsyncd.pass

    主要是对下面这个配置文件进行编辑

    vim /etc/rsyncd/rsyncd.conf

    #Rsync服务器相关信息

    pid file = /var/run/rsyncd.pid

    port = 873

    address = 192.168.107.103

    uid = root

    gid = root

    #chroot,即改变程序执行时所参考的根目录位置

    use chroot = yes

    read only = no

    write only = no

    #允许访问的IP,可以指定单个IP,也可以指定整个网段,能提高安全性。格式是 ip 与 ip 之间、ip 和网段之间、网段和网段之间要用空格隔开;

    hosts allow = 192.168.107.0/24 10.0.1.0/24

    max connections = 5

    #登录时的显示信息

    motd file = /etc/rsyncd/rsyncd.motd

    log file = /var/log/rsync.log

    transfer logging = yes

    log format = %t %a %m %f %b #日志格式

    syslog facility = local3 #日志级别

    #超时时间,单位是秒

    timeout = 300

    #主要是定义服务器哪个目录要被同步。

    #每个模块都要以[name]形式。这个名字就是在 rsync 客户端看到的名字。

    #但是服务器真正同步的数据是通过 path 指定的。可以依次创建多个模块。

    [data]

    path = /data

    #auth users = root

    list = no

    ignore errors

    secrets file = /etc/rsyncd/rsyncd.pass

    #exclude =

    #[test]

    #path =

    #auth users =

    #list = no

    #ignore errors

    #secrets file =

    #exclude =

    #auth users = run

    #secrets file = /etc/rsyncd/rsyncd.secrets

    #exclude = error_log httpd.pid

    #comment this is my log

    说明一下上面加黑的3处

    第一处加黑的那个ip是rsync服务端ip

    第二处加黑的那个ip是客户端的ip(段)

    第三处加黑的那一片是模块,模块都是以中括号的形式打头,下面的模块内容包括了一些同步信息,比较重要的就是路径了,密码文件路径也写上; 我这里是因为还没完成mysql服务器的配置,因此那个secrets file暂时给了#号

    配置密码文件,这里是明文的形式,有一定的风险,貌似有规避的办法,后续补上;

    vim /etc/rsyncd/rsyncd.secrets

    关于Rsync的启动

    1.自主启动

    /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

    2.xinetd方式启动

    这种方法需要安装xinetd这个超级守护,然后对其进行配置

    下面配置里面加黑的两行分别为rsync的启动路径和配置路径

    cat /etc/xinetd.d/rsync

    service rsync

    {

        disable = no

        socket_type    = stream

        wait            = no

        user            = root

        server          = /usr/local/rsyncd/bin/rsync

        server_args    = --daemon 

        log_on_failure  += USERID

    }

    然后通过service xinetd start启动

    关于Rsync的关闭

    1.rsync自主启动方式

    kill `cat /var/run/rsyncd.pid`

    我之前有试过ps -ef|grep rsync,然后把得到的进程号进行kill -9,有几次没有成功;按理说上面的那个命令和这个应该是一回事,不是太清楚原因。

    2.xinetd方式

    service xinetd stop

    ##################################

    本次实验用到的rsync指令

    rsync的操作指令不在这里进行过多的分解,简单说明一下采用conf方式运行的基本语法

    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

          rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

          rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    pull模式:拉取模式,从本地把远端需要拷贝的文件(夹)拷贝到本地

    push模式:推送模式,从本地把文件(夹)拷贝到远端服务器上

    本套架构中,NFS作为mysql的共享存储,Rsync作为异地备份服务器,现有的设想是把备份文件拷贝到Rsync上(本端到远端),采用push模式

    适用语法:rsync [OPTION...] SRC... [USER@]HOST::DEST

    1.option:各种参数

    a表示归档,保留原有文件的各种属性,相当于rlptgoD几个参数的组合

    v表示展示详细信息

    2.SRC:源路径

    在推送的模式中,SRC就是我的实际路径 /share_mysql/test.txt

    3.[USER@]HOST

    HOST为rsync服务器的ip

    root@192.168.40.120

    4.::

    如果没有冒号,那么表示本地复制到本地

    如果有一个冒号:,表示采用的是ssh方式

    如果是2个冒号::,表示我们采用的是conf配置方式

    5.HOST

    这个地方就不是实际目录了,而是模块名

    我rsyncd.conf里面的模块

    [NFS]

    path = /backup

    #auth users = root

    list = yes

    ignore errors

    secrets file = /etc/rsyncd/rsyncd.pass

    #exclude =

    HOST需要填写的就是NFS,实际拷贝路径是/backup,注意这里不要写斜杠/,会提示报错

    完整指令为

    rsync -av /share_mysql/test.txt root@192.168.40.120::NFS

    在客户端(110)拉取服务端(120)的文件

    rsync -av root@192.168.40.120::NFS /root

    前面的不说了,根据pull的语法,这里的NFS就是对应的SRC,采用了模块名

    /root 是DEST,为本地的实际路径

    总而言之,IP跟的是服务端的IP,配置用的是服务端的配置,IP双冒号后面跟的是模块名

    这里说的push和pull分别是客户端push到服务端,以及客户端pull服务端文件到客户端,跟客户端自身配置没半毛钱关系

    但如果服务端想要从客户端去pull东西,或者服务端自己push东西到客户端,那么此时就要依赖客户端的配置了,也就是说这时候客户端就成了服务端,需要写相应的rsyncd.conf了!

    ##################################

    实践中遇到的几个问题

    1.xinetd以守护进程的方式,所以不会出现rsync的进程以及pid,但是在/var/log/rsync.log里面是可以查询到相关的信息的,进程方面可以查询xinetd的进程;检测的话是通过端口检测来进行的;

    关于xinetd的配置有一点需要特别说明,我的/etc/xinetd.d/rsync本来的server_args配置本来是下面这样子的,但是这里写错了(最后应该是rsyncd.conf,少些了一个c)

    cat /etc/xinetd.d/rsync

    service rsync

    {

    ...

     server_args    = --daemon --config=/etc/rsyncd/rsynd.conf

    ...

    }

    报错就是常见的104报错

    rsync: read error: Connection reset by peer (104)

    所以后来干脆把这里改成server_args    = --daemon 

    这样的话,xinetd会自动去寻找/etc/rsyncd.conf

    所以这种情况下,就需要做软连接

    2.push的方式,客户端是否开启rsync都无所谓,调用的都是服务端的rsync服务

    在客户端直接关闭守护,确认端口没有起来

    service xinetd stop

    Stopping xinetd:                                          [  OK  ]

    netstat -an|grep 873

    执行push,仍然传递成功

    rsync -av /share_mysql/test.txt run@192.168.107.103::NFS

    +++++++++++++++++++++++++++

            FlyDido

    +++++++++++++++++++++++++++

    sending incremental file list

    sent 29 bytes  received 8 bytes  3.52 bytes/sec

    total size is 0  speedup is 0.00

    3.执行push推送时出现的报错

    [root@NFS share_mysql]# rsync -av /share_mysql/test.txt root@192.168.40.120::backup

    @ERROR: access denied to backup from UNKNOWN (192.168.40.110)

    rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

    这个报错是因为hosts allow配置的有问题

    检查了一下发现把192.168.40.0/24 写成了192.168.40.0\24

    4.执行pull拉取时发现的报错

    (指令为:rsync --password-file=/etc/rsyncd.pass -av root@192.168.40.120::NFS /root)

    @ERROR: chdir failed

    rsync error: error starting client-server protocol (code 5) at main.c(1648) [Receiver=3.1.2]

    这个报错的意思是路径错误,经过检查发现conf里面配置的NFS模块对应的路径为/share_mysql,实际上这个路径根本不存在

    完成该路径的创建以后该问题解决

    ##################################

    更多的rsync问题可以参考:Rsync问题汇总

    ##################################

    正题:

    Rsync远程增量备份Mysql

    ##################################

    增量备份指导参考

    增备脚本参考

    sersync

    ##################################

                                                                                                                    待续...

    相关文章

      网友评论

        本文标题:小型架构实践--Rsync部署

        本文链接:https://www.haomeiwen.com/subject/moafaxtx.html