rsync+nfs构建高可用文件系统详细步骤

        当系统要求高可靠、高性能时,一般采用分布式部署方案。应用服务器分布式部署比较成熟,应用中用到的文件(如文件、图片等上传下载)系统有如下几种方案:

1、存储在文件目录:传统处理方式。

2、存储到存储云上:按相关存储云的api开发即可,不涉及物理部署。

3、存储到数据库:该种方式让数据大小增长很快,通常不建议采用。

本文主要针对第一种方式,在应用服务器采用分布式部署时,采用本方案构建高可用的文件系统。方案图示如下:

本图非完整系统部署图,仅仅只是关注文件系统部分。方案高可靠性体现在当主文件服务器down了后,系统自动使用从文件服务器,而不需做任何变化。

NFS:主要作用是使应用服务器访问文件服务器的文件就如访问本地文件一样。

Rsync+Sersync:Rsync用于两台文件服务器同步,Sersync监听变化的文件;两者配合才能高效同步

Keepalived:虚拟ip供应用服务器使用。正常状况下映射的主文件服务器,当主文件服务器异常时,自动切换到从文件服务器。

 下面是详细安装步骤(centos7.x),对照每个服务器需安装软件按步骤安装即可。

rsync安装

检查是否安装

rpm -qa|grep rsync

没有安装执行如下命令:

yum install -y rsync xinetd

配置rsync.conf

vi /etc/rsyncd.conf,插入如下内容:

uid = nobody  #设置rsync运行权限为root

gid = nobody  #设置rsync运行权限为root

UID = 0

GID = 0

use chroot = no

max connections = 100

timeout = 600

strict modes=yes

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

log file = /var/log/rsyncd.log

read only = no

list = no

hosts allow = 192.168.1.0/24   #允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开

hosts deny = 0.0.0.0/32     #禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开

[files]

path = /data/files/

auth users = rsync_u

secrets file = /etc/rsyncd.pas

配置密码文件:

vi /etc/rsyncd.pas,插入如下内容:

rsync_u:201211222

改变密码文件属性:

chmod 600 /etc/rsyncd.pas

改变文件目录uid.gid属性:

chown root.root/data/files

授权nfs目录权限:

chmod 777 /data/files

防火墙设置

firewall-cmd --zone=public --add-port=873/tcp --permanent   # 开放873端口

firewall-cmd --reload   # 配置立即生效

启动

/usr/bin/rsync --daemon

验证

两台机子装好后,在目录/data/files下建立文件,用下面命令验证是否正确。

rsync -avzP /data/files/ rsync_u@192.168.1.222::files

注意:不要添加开机启动,通过keepalived启动

sersync安装

安装

把文件sersync2.5.4_64bit_binary_stable_final.tar.gz复制到tmp,执行如下命令:

tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz

mv GNU-Linux-x86/ /usr/local/sersync

ln -s /usr/local/sersync/sersync2 /usr/bin/sersync2

配置

cd /usr/local/sersync/

建立密码文件,如remote.pas,内容是要同步的目标服务器上用户的密码:

       201211222

备份:cp confxml.xml confxml.xml.bak

vi confxml.xml ,修改如下部分内容(红色)

  <sersync>

        <localpath watch="/data/files">  #本地监控目录

            <remote ip="192.168.1.222" name="files"/>  #对端ip及rsync里面数据同步模块名

</localpath>

<rsync>

            <commonParams params="-artuz"/>

            <auth start="true" users="rsync_u" passwordfile="/usr/local/sersync/remote.pas"/>

            <userDefinedPort start="false" port="874"/><!-- port=874 -->

            <timeout start="false" time="100"/><!-- timeout=100 -->

            <ssh start="false"/>

        </rsync>

<failLog path="/var/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> #脚本运行失败日志记录

        <crontab start="true" schedule="600"><!--600mins--> #设置为true,每隔600分钟执行一次全盘同步(可以设置为false)

            <crontabfilter start="false">

                <exclude expression="*.php"></exclude>

                <exclude expression="info/*"></exclude>

            </crontabfilter>

        </crontab>

启动

/usr/local/sersync/sersync2 -d -r -o  /usr/local/sersync/confxml.xml

测试

在监控目录下建立文件及目录,看是否能同步到目标服务器的对应目录。

nfs服务端安装

查看系统是否已安装NFS

rpm -qa|grep nfs-utils

rpm -qa|grep portmap

安装NFS

yum -y install nfs-utils rpcbind

nfs配置

//创建默认访问用户(如果已存在则不用创建)

useradd -u 18000 -s /sbin/nologin -M nobody

建立应用目录:

cd /data/files

  mkdir ymt

  mkdir ymt/upload

  mkdir ymt/download

//改变目录权限(注意:该目录下所有文件和目录都需改变)

chown -R nobody /data/files

chgrp -R nobody /data/files

chmod -R 777  /data/files

vi /etc/exports   插入如下内容(按允许的机器配置也可以):

/data/files 192.168.1.0/24(insecure,rw,sync,all_squash,no_subtree_check,anonuid=99,anongid=99)

防火墙配置

编辑vi /etc/sysconfig/nfs,保证对应端口没有被占用

# TCP port rpc.lockd should listen on.  

LOCKD_TCPPORT=48001

# UDP port rpc.lockd should listen on.  

LOCKD_UDPPORT=48001

# Port rpc.mountd should listen on.  

MOUNTD_PORT=48002

# Port rpc.statd should listen on.  

STATD_PORT=48003

# Outgoing port statd should used. The default is port is random  

STATD_OUTGOING_PORT=48004

firewall-cmd --zone=public --add-port=111/tcp --permanent   

firewall-cmd --zone=public --add-port=111/udp --permanent   

firewall-cmd --zone=public --add-port=2049/tcp --permanent   

firewall-cmd --zone=public --add-port=2049/udp --permanent   

firewall-cmd --zone=public --add-port=48001/tcp --permanent   

firewall-cmd --zone=public --add-port=48001/udp --permanent   

firewall-cmd --zone=public --add-port=48002/tcp --permanent   

firewall-cmd --zone=public --add-port=48003/tcp --permanent   

firewall-cmd --zone=public --add-port=48004/tcp --permanent   

firewall-cmd --reload   # 配置立即生效

启动服务

systemctl start rpcbind

systemctl start nfs

查看共享目录是否成功

showmount -e

如果没有共享成功,可用exportfs -ar手工共享,看是否有出错信息

keepalived安装

安装keepalived

安装

yum install keepalived

systemctl enable keepalived.service

防火墙配置

-A INPUT -p vrrp -j ACCEPT

firewall-cmd --reload

关闭 SELinux

setenforce 0

永久关闭:

vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

重启

systemctl restart keepalived

主配置

编写master脚本

vi /etc/keepalived/nfs_check.sh

#!/bin/bash

#nfs是否还存活

A=`ps -aux | grep '\[nfsd\]' | wc -l`

if [ $A -eq 0 ];then

exit 1

else

   exit 0

fi

vi /etc/keepalived/nfs_master.sh

#!/bin/bash

echo `date`:' nfs to master' >>/var/log/keepalived.log

systemctl start rpcbind

systemctl start nfs

#同时启动sersync服务

echo `date`:' start sersync2' >>/var/log/keepalived.log

/usr/local/sersync/sersync2 -d -r -o  /usr/local/sersync/confxml.xml

vi /etc/keepalived/nfs_backup.sh

#!/bin/bash

echo `date`:' nfs to backup>>/var/log/keepalived.log

systemctl stop rpcbind

systemctl stop nfs

#同时停止sersync服务

echo `date`:' stop sersync2' >>/var/log/keepalived.log

PID=`ps -ef |grep $(echo sersync2 |awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`

kill -9 $PID

chmod +x /etc/keepalived/nfs_*.sh

配置

vi /etc/keepalived/keepalived.conf

增加:

vrrp_script chk_nfs {

    script "/etc/keepalived/nfs_check.sh"

    interval 2

    timeout 1

    weight -20

    init_fail

}

vrrp_instance VI_nfs {

    state BACKUP #两台均为备用模式,按priority大的为主

    interface eth0  #网卡

    virtual_router_id 52  #分组标记,两台要在同一组

    unmcast_src_ip 192.168.1.223 #本机ip

    unicast_peer {

       192.168.1.222

    }

    priority 100 #越大优先级越高

advert_int 1  #心跳间隔检测

    authentication {

        auth_type PASS

        auth_pass 1111

}

promote_secondaries

    track_script {

        chk_nfs

    }

    virtual_ipaddress {  #虚拟的地址

        192.168.1.228/24  dev eth0 label eth0:3

    }

    notify_master "/etc/keepalived/nfs_master.sh"

    notify_backup "/etc/keepalived/nfs_backup.sh"

}

重启:systemctl restart keepalived

从配置

同主配置一样,不同的是/etc/keepalived/keepalived.conf需要修改如下内容:

unmcast_src_ip 192.168.1.222 #本机ip

    unicast_peer {

       192.168.1.223  

    }

    priority 90 #越大优先级越高

nfs客户端安装

安装nfs-utils

yum -y install nfs-utils

挂载共享目录

mount -t nfs -o nolock,nodev,noexec,nosuid,rw 192.168.1.228:/data/files /data/files

设置开机挂载

vi /etc/rc.local  把下列内容追加到文件末尾:

mount -t nfs -o nolock,nodev,noexec,nosuid,rw 192.168.1.228:/data/files /data/files

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
根据提供的引用内容,可以得知本套方案采用了NFS+Rsync+Keepalived的高可用架构方案,其中利用NFS服务提供一个共享目录,供客户端挂载到自己的文件系统中。而Rsync则是一种常用的文件同步工具,可以将本地或远程的文件同步到另一台服务器上。统信UOS是一款国产操作系统,支持Rsync工具。 因此,可以通过在统信UOS上安装Rsync工具,实现文件的同步和备份。具体步骤如下: 1. 安装Rsync工具 可以通过以下命令在统信UOS上安装Rsync工具: ```shell sudo apt-get install rsync ``` 2. 配置Rsync服务 可以通过编辑Rsync配置文件/etc/rsyncd.conf来配置Rsync服务。例如,可以添加以下内容: ```shell uid = root gid = root use chroot = no max connections = 10 pid file = /var/run/rsyncd.pid exclude = lost+found/ transfer logging = yes log format = %t: %a: %m: %f: %b log file = /var/log/rsyncd.log [backup] path = /backup comment = Backup Folder read only = no list = yes ``` 其中,[backup]表示共享的目录名,path表示共享的目录路径,comment表示注释,read only表示是否只读,list表示是否允许列出目录内容。 3. 启动Rsync服务 可以通过以下命令启动Rsync服务: ```shell sudo rsync --daemon --config=/etc/rsyncd.conf ``` 4. 进行文件同步 可以通过以下命令进行文件同步: ```shell rsync -avz /local/path user@remote:/remote/path ``` 其中,/local/path表示本地路径,user@remote表示远程服务器的用户名和IP地址,/remote/path表示远程路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐享技术

每一个打赏,都是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值