三大项目NFS、Rsync、Sersync借鉴

环境准备
01 backup 10.0.0.41(外网)/172.16.1.41(内网) rsync
02 nfs01 10.0.0.31(外网)/172.16.1.31(内网) nfs
03 web01 10.0.0.7(外网)/172.16.1.7(内网) nginx

1.rsync部署安装
服务端部署过程:
第一个历程:安装部署软件程序
检查有无并安装

rpm -qa rsync 
yum install -y rsync 

第二个历程:创建管理备份目录以及数据用户信息

useradd rsync -M -s /sbin/nologin

创建备份数据目录 修改属主和属组

mkdir /backup
chown rsync.rsync /backup/

第三个历程:创建用户列表文件

echo 'rsync_backup: 1' >/etc/rsync.passwd
chmod 600 /etc/rsync.passwd

第四个历程:编写配置文件

vi /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup

第五个历程:启动服务程序

systemctl restart rsyncd

检查服务是否开启

ps -ef|grep rsync
netstat -lntup|grep rsync

在客户端创建一个密码文件

echo oldboy123 >/etc/rsync.password
chmod 600 /etc/rsync.password
rsync -avz /etc [email protected]::backup --password-file=/etc/rsync.password

编写备份脚本

[root@web01 /server/scripts]#cat backup.sh 
#!/bin/bash
# 变量信息设置
Eth1_info=$(ip address show eth1|awk -F "[ /]+" 'NR==3{print $3}')
Date_info=$(date -d "-1 day" +%F_星期%w)
#01. 创建本地备份目录
mkdir -p /backup/$Eth1_info
#02. 进行数据打包备份(备份到本地)
tar zchfP /backup/$Eth1_info/backup_$Date_info.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables /var/html/www /app/logs &>/dev/null
#03. 清除7天以前的历史数据信息
find /backup/$Eth1_info/ -type f -name "*.tar.gz" -mtime +7 -delete
#04. 生成每天数据检验文件
find /backup/$Eth1_info/ -mmin -10 -name "*.tar.gz"|xargs md5sum  >/backup/$Eth1_info/check.txt
#05. 传输备份数据信息
rsync -az /backup/$Eth1_info [email protected]::backup --password-file=/etc/rsync.password
添加定时任务
crontab -e
#每天零点执行备份脚本
00 00 * * * sh /server/scripts/backup.sh

[root@backup]
第一个历程:编写本地邮件服务配置文件

vi /etc/mail.rc
set [email protected]
set smtp=smtp.163.com
set [email protected]
set smtp-auth-password=ETEECFNNJJIFSKSM
set smtp-auth=login

第二个历程:重启邮件服务

systemctl restart postfix.service

第三个历程:发送邮件确认

echo test|mail -s "test_info" [email protected] 

编写校验文件脚本

[root@backup /backup]#vim /server/scripts/backup.sh 
#!/bin/bash
#01.删除六个月以前的数据,并保留每周一的数据
find /backup -type f -name "*.tar.gz" -mtime +180 ! -name "*week1.tar.gz"
 -delete &>/dev/null
#02. 检验数据备份完整性
find /backup/ -type f -name "check.txt"|xargs md5sum -c &>/var/log/backup.log
#03. 邮件发送检验结果信息
mail -s "backup_check"  [email protected] 

添加定时任务

crontab -e
#每天两点校验文件发送邮件
00 02 * * * sh /server/scripts/backup.sh

2.nfs存储服务端部署
第一个历程: 下载安装软件

rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind

第二个历程: 编写nfs服务配置文件

vim /etc/exports (man exports)
/data/w_shared 172.16.1.0/24(rw,sync)
/data/r_shared 172.16.1.0/24(ro,sync)

第三个历程: 创建存储目录

mkdir /data/w_shared
mkdir /data/r_shared

创建挂载点更改属主属组

[root@nfs01 /data]#chown nfsnobody.nfsnobody /data/r_shared/
[root@nfs01 /data]#chown nfsnobody.nfsnobody /data/w_shared/

第四个历程: 启动服务程序
先启动 rpc服务

systemctl start rpcbind.service 
systemctl enable rpcbind.service

再启动 nfs服务,设置服务开机自启

systemctl start nfs
systemctl enable nfs

客户端部署(web)
第一个历程: 安装nfs服务软件

yum install -y nfs-utils

[root@backup /backup]#mkdir -p /data/w_zhangqiang
[root@backup /backup]#mkdir -p /data/r_zhangqiang
[root@backup /backup]#mount -t nfs 172.16.1.31:/data/w_shared /data/w_zhangqiang
[root@backup /backup]#mount -t nfs 172.16.1.31:/data/r_shared /data/r_zhangqiang

[root@web01 /server/scripts]#mkdir -p /data/b_w
[root@web01 /server/scripts]#mkdir -p /data/b_r
[root@web01 /server/scripts]#mount -t nfs 172.16.1.31:/data/w_shared /data/b_w
[root@web01 /server/scripts]#mount -t nfs 172.16.1.31:/data/r_shared /data/b_r

开机自动挂载/etc/fstab

backup /etc/fstab
172.16.1.31:/data/w_shared            /data/w_zhangqiang      nfs     defaults      0 0
172.16.1.31:/data/r_shared             /data/r_zhangqiang      nfs     defaults      0 0
web /etc/fstab
172.16.1.31:/data/w_shared            /data/b_w               nfs     defaults       0 0
172.16.1.31:/data/r_shared             /data/b_r               nfs     defaults        0 0

对nfs如何优化

1.设置块大小 
mount命令的 risize和wsize指定了server端和client端的传输的块大小。如果没有指定,那么,系统根据nfs的版本来设置缺省的risize和 wsize大小。大多数情况是4K(4096bytes),对于nfs v2,最大是8K,对于v3,在server端设置risize和wsize的限制,最大块大小在kernel的常量 NFSSVC_MAXBLKSIZE,该常量在usr/src/linux2.4/include/linux/nfsd/const.h.所有的2.4 的的client都支持最大32K的传输块。系统缺省的块可能会太大或者太小,这主要取决于你的kernel和你的网卡,太大或者太小都有可能导致nfs 速度很慢。具体的可以使用Bonnie,Bonnie++,iozone等benchmark来测试不同risize和wsize下nfs的速度。当然, 也可以使用dd来测试。 
#time dd if=/dev/zero of=/testfs/testfile bs=8k count=1024这是来测试nfs写 
#time dd if=/testfs/testfile of=/dev/null bs=8k 这是测试nfs读 
测试时文件的大小至少时系统RAM的两倍,每次测试都使用umount 和mount对/testfs进行挂载,通过比较不同的块大小,得到优化的块大小。 
2.网络传输包的大小 
网 络在包传输过程,对包要进行分组,过大或者过小都不能很好的利用网络的带宽,所以对网络要进行测试和调优。可以使用ping -s 2048 -f hostname进行 ping,尝试不同的package size,这样可以看到包的丢失情况。同时,可以使用nfsstat -o net 测试nfs使用udp传输时丢包的多少。 
因为统计不能清零,所以要先运行此命令记住该值,然后可以再次运行统计。如果,经过上面的统计丢包很多。那么可以看看网络传输包的大小。使用下面的命令: 
#tracepath node1/端口号 
#ifconfig eth0 
比较网卡的mtu和刚刚的pmtu,使用#ifconfig eth0 mtu 16436设置网卡的mtu和测试的一致。 

当 然如果risize和wsize比mtu的值大,那么的话,server端的包传到client端就要进行重组,这是要消耗client端的cpu资源。 此外,包重组可能导致网络的不可信和丢包,任何的丢包都会是的rpc请求重新传输,rpc请求的重传有会导致超时,严重降低nfs的性能。可以通过查看 /proc/sys/net/ipv4/ipfrag_high_thresh和/proc/sys/net/ipv4 /ipfrag_low_thresh了解系统可以处理的包的数目,如果网络包到达了ipfrag_high_thresh,那么系统就会开始丢包,直到 包的数目到达ipfrag_low_thresh。 

3.nfs挂载的优化

timeo:如果超时,客户端等待的时间,以十分之一秒计算。 
retrans:超时尝试的次数。 
bg:后台挂载,很有用 
hard:如果server端没有响应,那么客户端一直尝试挂载。 
wsize:写块大小 
rsize:读块大小 
intr:可以中断不成功的挂载 
noatime:不更新文件的inode访问时间,可以提高速度。 
async:异步读写。 
4.nfsd的个数 
缺省的系统在启动时,有8个nfsd进程。 
#ps -efl|grep nfsd 
通过查看/proc/net/rpc/nfsd文件的th行,第一个是nfsd的个数,后十个是线程是用的时间数,第二个到第四个值如果很大,那么就需要增加nfsd的个数。 

具体如下: 
#vi /etc/init.d/nfs 
找到RPCNFSDCOUNT,修改该值,一般和client端数目一致。 
然后,重启服务。 
#service nfs restart 
#mount -a 
5.nfsd的队列长度 
对 于8个nfsd进程,系统的nfsd队列长度是64k大小,如果是多于8个,就要相应的增加相应的队列大小,具体的在/proc/sys/net /core/【rw】mem_default和/proc/sys/net/core/【rw】mem_max。队列的长度最好是每一个nfsd有8k的 大小。这样,server端就可以对client的请求作排队处理。如果要永久更改此值 
#vi /etc/sysctl.conf 
加入 
net.core.【rw】mem_max=数目 
net.core.【rw】mem_default=数目 
#service nfs restart

第一个历程:下载安装sersync软件程序

wget https://github.com/wsgzao/sersync/archive/master.zip

第二个历程:解压软件程序包

unzip sersync-master.zip
[root@nfs01 /usr/local/sersync]#tree
├── bin
│   └── sersync2
├── conf
│   └── confxml.xml
└── log

第三个历程:服务程序配置操作

vi /usr/local/sersync/confxml.xml 



























创建命令软连接

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

启动sersync

sersync2 -dro /usr/local/sersync/confxml.xml

你可能感兴趣的:(三大项目NFS、Rsync、Sersync借鉴)