[关闭]
@q8517220 2018-11-12T13:07:21.000000Z 字数 15880 阅读 479

全网备份

1.定时备份

2.1在rsync服务器上,配置rsync服务,实现推送。

配置rsync服务端,rsync客户端推送

  1. [root@web02 ~]# rsync -avz /backup/ rsync_backup@172.16.10.10::backup --password-file=/etc/rsync.password
  2. sending incremental file list
  3. ./
  4. test
  5. sent 130669 bytes received 30 bytes 11365.13 bytes/sec
  6. total size is 134217728 speedup is 1026.92
  7. 推送成功的 !!!!!!!!!!!!

2.2在客户端nfs服务器上,实现打包、推送、删除,定时任务推送。

  1. [root@web02 ~]# tar zcvfh /backup/backup_$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /var/www/html /app/logs
  2. tar: 从成员名中删除开头的“/”
  3. /var/spool/cron/root
  4. /etc/rc.local
  5. /etc/sysconfig/iptables
  6. /var/www/html/
  7. /app/logs/
  1. [root@web02 ~]# vim /server/scripts/bak.sh
  2. #!/bin/bash
  3. IP=`ifconfig eth1|awk -F "[ :]+" 'NR==2{print $4}'`
  4. Path=/backup
  5. if [ $(date +%w) -eq 0 ]
  6. then
  7. Time="web_$(date +%F-%w -d "-1day")"
  8. else
  9. Time=$(date +%F -d "-1day")
  10. fi
  11. mkdir -p $Path/$IP
  12. cd / &&\
  13. tar zcvfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&\
  14. md5sum $Path/$IP/backup_$Time.tar.gz >$Path/$IP/backup_$Time.tar.log &&\
  15. rsync -avz $Path/ rsync_backup@172.16.10.10::backup --password-file=/etc/rsync.password

2.3在rsync备份服务器上,做检查,发邮件给管理员

  1. [root@web02 ~]# vim /server/scripts/check_and_del.sh
  2. #!/bin/bash
  3. IP=`ifconfig eth1|awk -F "[ :]+" 'NR==2{print $4}'`
  4. Path=/backup
  5. then
  6. Time="web_$(date +%F-%w -d "-1day")"
  7. else
  8. Time=$(date +%F -d "-1day")
  9. fi
  10. LANG-en
  11. find /backup/ -type f -name "*${Time}*.log"|xargs md5sum -c >>$Path/${Time}_result.log &&\
  12. mail -s "$Time bak result" 592654815@qq.com <$Path/${Time}_result.log
  13. find /backup/ -type f ! -name "web*-6*" -mtime +180 |xargs rm -f

2.4配置mail使用外部smtp发邮件
通过修改 配置文件可以使用外部smtp服务器,可以达到sendmail/postfix等内部邮件服务而用外部的smtp服务器发送邮件的目的:

  1. 修改/etc/mail.rc最后一行加入
  2. set from=592654815@qq.com smtp=smtp.163.com smtp-auth-user=592654815 smtp-auth-password=lihao520 smtp-auth=login

.nfs看挂载情况:

  1. ①服务端:[root@localhost ~]# cat /var/lib/nfs/etab
  2. /data 172.16.10.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
  3. ②客户端:[root@web02 ~]# df -h ---->这种方法,出问题就会卡死,不建议
  4. Filesystem Size Used Avail Use% Mounted on
  5. /dev/sda2 18G 935M 16G 6% /
  6. tmpfs 495M 0 495M 0% /dev/shm
  7. /dev/sda1 194M 28M 157M 15% /boot
  8. 172.16.10.10:/data 18G 1.2G 16G 8% /mnt
  9. [root@web02 ~]# cat /proc/mounts
  10. rootfs / rootfs rw 0 0
  11. proc /proc proc rw,relatime 0 0
  12. sysfs /sys sysfs rw,relatime 0 0
  13. devtmpfs /dev devtmpfs rw,relatime,size=496916k,nr_inodes=124229,mode=755 0 0
  14. devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
  15. tmpfs /dev/shm tmpfs rw,relatime 0 0
  16. /dev/sda2 / ext4 rw,relatime,barrier=1,data=ordered 0 0
  17. /proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
  18. /dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
  19. none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
  20. sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
  21. 172.16.10.10:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.10.30,minorversion=0,local_lock=none,addr=172.16.10.10 0 0

nfs client mount 挂载参数:
fg:前端挂载
bg:后台挂载
soft:限时挂载,超时退出
hard:持续挂载,直到kill或unmount
intr:当使用hard挂载,可以timeout后把它中断掉
rsize:读的区块大小
wsize:写的区块大小

man mount 后的-o参数
下面mount命令-o选项后面可以连接参数,注意,有些选项只有出现/etc/fstab里才有效,下面这些选项绝大多数文件系统上,但是sync仅适合ext2 ext3 fat vfat ufs等文件系统。
①async:涉及文件系统I/O的操作都是异步处理,即不会同步写到磁盘,此参数会提高性能,但会降低数据安全,一般情况,生产环境不推荐使用,除非对性能要求很高,对数据可靠性不要求。
②sync:该参数和async相反,有I/0操作时,都会同步出路I/O,即把数据同步写入磁盘,此参数会牺牲一点I/O性能,但是,换来的是掉电后数据的安全性。
atime:在每一次数据访问时,会同步更新访问文件的inode时间戳,默认选项,在高并发情况下建议通过明确加上noatime,来取消这个默认项,以提升I/O性能,优化I/O的 目的。

ro:以只读
rw:可写

2.1.1案例:
①fstab修改错误导致系统无法启动故障修复案例
进入单用户或救援模式: mount -o rw,remount /
然后修改/etc/fstab
②文件系统内部自动一致性(只读)
③rsync bug
进入单用户或救援模式: mount -o rw,remount /

2.1.1mount 挂载优化
客户端挂载
mount -t nfs -o noatime,nodiratime,nosuid,rsize=131072,wsize=131072 172.16.10.10:/data/ /mnt
其实默认设置就不错了。
mount -t nfs 172.16.10.10:/data/ /mnt

2.1.2nfs内核优化建议
/proc/sys/net/core/rmem_default:该文件指定接收套接字缓冲区大小的默认值(以字节为单位),默认:124928
/proc/sys/net/core/rmen_max:该文件指定接收套接字缓冲区大小的最大值(以字节为单位),默认:124928
cat /proc/sys/net/core/wmem_default该文件指定发送套接字缓冲区大小的默认值(以字节为单位),默认:124928
cat /proc/sys/net/core/wmem_max该文件指定发送套接字缓冲区大小的最大值(以字节为单位),默认:124928
NFS内核优化

  1. [root@localhost ~]# cat >>/etc/sysctl.conf<<EOF
  2. net.core.rmen_default = 8388600
  3. net.core.wmen_default = 8388600
  4. net.core.rmen_max = 16777216
  5. net.core.wmen_max = 16777216
  6. EOF

2.2.1企业生产场景NFS共享存储优化小结:
①硬件:Sas/ssd磁盘,买多块,raid5 raid10 网卡吞吐量要大,至少千兆(多块bond)
②NFS服务器端配置:/data 172.16.10.10/24(rw,sync,all_squash,)
③客户端配置命令:
mount -t nfs -o noatime,nodiratime,nosuid,rsize=131072,wsize=131072 172.16.10.10:/data/ /mnt
④对NFS 服务的所有服务器内核进行优化时,执行如下命令:

  1. [root@localhost ~]# cat >>/etc/sysctl.conf<<EOF
  2. net.core.rmen_default = 8388600
  3. net.core.wmen_default = 8388600
  4. net.core.rmen_max = 16777216
  5. net.core.wmen_max = 16777216
  6. EOF

执行sysctl -p生效

如果卸载时提示"umount: /mnt: device is busy",需要退出挂载目录再进行卸载,如果NFSsever宕机了,则需要强卸载,可执行umount -lf /mnt
大型网站NFS网络文件系统的替代软件为分布式文件系统MFS GlusterFS FastDFS

2.3nfs系统应用的优缺点:
优点:
①NFS文件系统内数据在文件系统上,可以看见的。
②部署快速,维护简单方便,且可控,满足需求就是最好的。
③可靠,从软件层面上看,数据可靠性高,经久耐用,数据是在文件系统之上。
④服务非常稳定。
缺点:
①存在单点故障,如果NFS server宕机了,文件目录就不能共享,所有客户端不能访问。
②在大数据高并发的场合,NFS效率、性能有限(2千万/日以下PV的网站不是瓶颈,除非网站架构设计很差)。
③客户端认证是基于IP和主机名,权限要根据ID识别,安全性一般(用于内网,则问题不大)
④NFS数据是明文的,NFS本身不对数据完整性验证。
⑤多台客户机器挂载一个NFS服务时,连接管理维护麻烦(耦合度高),尤其NFS服务端出问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载解决,正式环境可修复NFS服务或强制卸载)
⑥涉及同步(实时等待)和异步(解耦)的概念,NFS服务端和客户端相对来说就是耦合度有些高,网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是程序及架构解耦,让网站的扩展性变得更好。

应用建议:大中小型网站(参考点2000万/日PV以下)线上应用,都有用武之地,门户站也会有应用,生产场景应该多把数据的访问往前推,即尽量把静态存储里的资源通过CDN或缓存服务器提供服务,如果没有缓存服务或架构不好,存储服务器数量再多也扛不住压力,而且用户体验度差。

2.共享存储实时备份(共享存储的单点解决方案)

3.1第一个里程碑:

①实现从nfs客户端到rsync服务端部署

  1. rsync服务配置步骤:
  2. 1.查看rsync安装包
  3. rpm -qa rsync
  4. 2.添加rsync服务的用户,管理本地目录的
  5. useradd rsync -s /sbin/nologin -M
  6. id rsync
  7. 3.生成rsyncd.conf配置文件
  8. vim /etc/rsyncd.conf放入事先准备的配置
  9. 4.根据rsyncd.confauth users配置账户,远程连接的,并根据secrets file参数生成密码文件
  10. echo "rsync_backup:lihao" >> /etc/rsync.password
  11. 5.为密码文件配置权限
  12. chmod 600 /etc/rsync.password
  13. 6.创建共享的目录并授权rsync服务管理
  14. mkdir /backup -p
  15. chown -R rsync.rsync /backup
  16. 7.启动rsync服务并检查
  17. rsync --daemon
  18. ps -ef |grep rsync|grep -v grep
  19. ```
  20. ```
  21. 备份端:
  22. [root@localhost ~]# cat -n /etc/rsyncd.conf
  23. 1 #rsync_config___________start
  24. 2 #created by lihao 21:36 2018/8/20
  25. 3 ##rsync.conf start##
  26. 4 uid = rsync #用户
  27. 5 gid = rsync #用户组
  28. 6 use chroot = no #安全相关
  29. 7 max connections = 200 #最大连接数
  30. 8 timeout = 300 #超时时间秒
  31. 9 pid file = /var/run/rsyncd.pid #进程对应的进程号文件
  32. 10 lock file = /var/run/rsync.lock #锁文件
  33. 11 log file = /var/log/rsyncd.log #日志文件
  34. 12 [backup] #模块名称
  35. 13 path = /backup #服务器提供访问的目录
  36. 14 ignore errors #忽略错误
  37. 15 read only = false #可写
  38. 16 list = false #不能列表
  39. 17 hosts allow = 172.16.10.0/24 #允许服务器连接
  40. 18 hosts deny = 0.0.0.0/32 #拒绝连接
  41. 19 auth users = rsync_backup
  42. 20 secrets file = /etc/rsync.password
  43. 21 #rsync_config___________end
  44. 多模块应用
  45. [root@localhost /]# vim /etc/rsyncd.conf
  46. 1 #rsync_config___________start
  47. 2 #created by lihao 21:36 2018/8/20
  48. 3 ##rsync.conf start##
  49. 4 uid = rsync
  50. 5 gid = rsync
  51. 6 use chroot = no
  52. 7 max connections = 200
  53. 8 timeout = 300
  54. 9 pid file = /var/run/rsyncd.pid
  55. 10 lock file = /var/run/rsync.lock
  56. 11 log file = /var/log/rsyncd.log
  57. 12 ignore errors
  58. 13 read only = false
  59. 14 list = false
  60. 15 hosts allow = 172.16.10.0/24
  61. 16 #hosts deny = 0.0.0.0/32
  62. 17 auth users = rsync_backup
  63. 18 secrets file = /etc/rsync.password
  64. 19 [backup]
  65. 20 path = /backup
  66. 21 [lihao]
  67. 22 path = /lihao
  68. 23 #rsync_config___________end
  69. 创建rsync用户
  70. [root@localhost ~]# id rsync
  71. id: rsync:无此用户
  72. [root@localhost ~]# useradd rsync -s /sbin/nologin -M
  73. [root@localhost ~]# tail -1 /etc/passwd
  74. rsync:x:500:500::/home/rsync:/sbin/nologin
  75. [root@localhost ~]# rsync --daemon
  76. [root@localhost ~]# ps -ef |grep rsync|grep -v grep
  77. root 1503 1 0 21:53 ? 00:00:00 rsync --daemon
  78. [root@localhost ~]# mkdir /backup
  79. [root@localhost ~]# ls -ld /backup/
  80. drwxr-xr-x 2 root root 4096 8 20 21:54 /backup/
  81. [root@localhost ~]# chown rsync.rsync /backup/
  82. [root@localhost ~]# vim /etc/rsyncd.password
  83. 1 rsync_backup:lihao
  84. [root@localhost ~]# ls /etc/rsync.password -l
  85. -rw-r--r-- 1 root root 19 8 20 22:04 /etc/rsync.password
  86. [root@localhost ~]# chmod 600 /etc/rsync.password
  87. [root@localhost ~]# ls /etc/rsync.password -l
  88. -rw------- 1 root root 19 8 20 22:04 /etc/rsync.password
  89. [root@localhost ~]# lsof -i :873
  90. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  91. rsync 1503 root 4u IPv4 11123 0t0 TCP *:rsync (LISTEN)
  92. rsync 1503 root 5u IPv6 11124 0t0 TCP *:rsync (LISTEN)
  93. 客户端配置
  94. 1.生成连接服务器需要的密码文件
  95. echo "lihao" >>/etc/rsync.password
  96. 2.为密码文件配置权限
  97. chmod 600 /etc/rsync.password
  98. 3.同步文件(两种方法)
  99. rsync -avz /backup rsync://rsync_backup@172.16.10.10/backup --password-file=/etc/rsync.password
  100. rsync -avz /backup/ rsync_backup@172.16.10.10::backup/ --password-file=/etc/rsync.password
  101. [root@localhost ~]# echo "lihao" >>/etc/rsync.password
  102. [root@localhost ~]# cat /etc/rsync.password
  103. lihao
  104. [root@localhost ~]# chmod 600 /etc/rsync.password
  105. [root@localhost ~]# ll /etc/rsync.password
  106. -rw------- 1 root root 6 8 20 22:28 /etc/rsync.password
  107. [root@localhost backup]# rsync -avz /backup/ rsync_backup@172.16.10.10::backup/ --password-file=/etc/rsync.password
  108. sending incremental file list
  109. ./
  110. stu001
  111. stu002
  112. stu003
  113. stu004
  114. stu005
  115. stu006
  116. stu007
  117. stu008
  118. stu009
  119. stu010
  120. stu011
  121. stu012
  122. stu013
  123. stu014
  124. stu015
  125. stu016
  126. stu017
  127. stu018
  128. stu019
  129. stu020
  130. stu021
  131. stu022
  132. stu023
  133. stu024
  134. stu025
  135. stu026
  136. stu027
  137. stu028
  138. stu029
  139. stu030
  140. stu031
  141. stu032
  142. stu033
  143. stu034
  144. stu035
  145. stu036
  146. stu037
  147. stu038
  148. stu039
  149. stu040
  150. stu041
  151. stu042
  152. stu043
  153. stu044
  154. stu045
  155. stu046
  156. stu047
  157. stu048
  158. stu049
  159. stu050
  160. stu051
  161. stu052
  162. stu053
  163. stu054
  164. stu055
  165. stu056
  166. stu057
  167. stu058
  168. stu059
  169. stu060
  170. stu061
  171. stu062
  172. stu063
  173. stu064
  174. stu065
  175. stu066
  176. stu067
  177. stu068
  178. stu069
  179. stu070
  180. stu071
  181. stu072
  182. stu073
  183. stu074
  184. stu075
  185. stu076
  186. stu077
  187. stu078
  188. stu079
  189. stu080
  190. stu081
  191. stu082
  192. stu083
  193. stu084
  194. stu085
  195. stu086
  196. stu087
  197. stu088
  198. stu089
  199. stu090
  200. stu091
  201. stu092
  202. stu093
  203. stu094
  204. stu095
  205. stu096
  206. stu097
  207. stu098
  208. stu099
  209. stu100
  210. sent 4428 bytes received 1911 bytes 12678.00 bytes/sec
  211. total size is 0 speedup is 0.00

NFS------网络文件系统。主要功能是通过网络(一般局域网)让不同的主机系统之间可以共享文件或目录。
NFS端口不固定

NFS工作流程:
①先启动RPC服务
②启动NFS服务,自动向RPC注册
③客户端请求NFS服务
④RPC返回IP端口
⑤客户端拿着IP端口请求数据

修改yum.conf 记录rpm文件

  1. [root@ntf-backup ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf

安装nfs安装包

  1. [root@ntf-backup ~]# yum -y install nfs-utils rpcbind
  2. [root@nfs-server ~]# rpm -aq nfs-utils rpcbind
  3. nfs-utils-1.2.3-78.el6.x86_64
  4. rpcbind-0.2.0-16.el6.x86_64
  5. [root@nfs-server ~]# /etc/init.d/rpcbind start (要先启动rpc,再启动nfs
  6. 正在启动 rpcbind [确定]
  7. [root@nfs-server ~]# netstat -ntpau|grep rpcbind
  8. tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1425/rpcbind
  9. tcp 0 0 :::111 :::* LISTEN 1425/rpcbind
  10. udp 0 0 0.0.0.0:111 0.0.0.0:* 1425/rpcbind
  11. udp 0 0 0.0.0.0:752 0.0.0.0:* 1425/rpcbind
  12. udp 0 0 :::111 :::* 1425/rpcbind
  13. udp 0 0 :::752 :::* 1425/rpcbind
  14. [root@nfs-server ~]# rpcinfo -p localhost
  15. program vers proto port service
  16. 100000 4 tcp 111 portmapper
  17. 100000 3 tcp 111 portmapper
  18. 100000 2 tcp 111 portmapper
  19. 100000 4 udp 111 portmapper
  20. 100000 3 udp 111 portmapper
  21. 100000 2 udp 111 portmapper
  22. [root@nfs-server ~]# /etc/init.d/nfs
  23. nfs nfslock
  24. [root@nfs-server ~]# /etc/init.d/nfs start
  25. 启动 NFS 服务: [确定]
  26. 启动 NFS mountd [确定]
  27. 启动 NFS 守护进程: [确定]
  28. 正在启动 RPC idmapd [确定]
  29. [root@nfs-server ~]# rpcinfo -p localhost
  30. program vers proto port service
  31. 100000 4 tcp 111 portmapper
  32. 100000 3 tcp 111 portmapper
  33. 100000 2 tcp 111 portmapper
  34. 100000 4 udp 111 portmapper
  35. 100000 3 udp 111 portmapper
  36. 100000 2 udp 111 portmapper
  37. 100005 1 udp 36426 mountd
  38. 100005 1 tcp 43685 mountd
  39. 100005 2 udp 58343 mountd
  40. 100005 2 tcp 39429 mountd
  41. 100005 3 udp 45346 mountd
  42. 100005 3 tcp 38027 mountd
  43. 100003 2 tcp 2049 nfs
  44. 100003 3 tcp 2049 nfs
  45. 100003 4 tcp 2049 nfs
  46. 100227 2 tcp 2049 nfs_acl
  47. 100227 3 tcp 2049 nfs_acl
  48. 100003 2 udp 2049 nfs
  49. 100003 3 udp 2049 nfs
  50. 100003 4 udp 2049 nfs
  51. 100227 2 udp 2049 nfs_acl
  52. 100227 3 udp 2049 nfs_acl
  53. 100021 1 udp 35376 nlockmgr
  54. 100021 3 udp 35376 nlockmgr
  55. 100021 4 udp 35376 nlockmgr
  56. 100021 1 tcp 37467 nlockmgr
  57. 100021 3 tcp 37467 nlockmgr
  58. 100021 4 tcp 37467 nlockmgr

开机自启动:

  1. [root@nfs-server ~]# chkconfig nfs on
  2. [root@nfs-server ~]# chkconfig rpcbind on

NFS共享的目录:为NFS服务端要共享的实际目录,要用绝对路径,如(/data)。注意共享目录的本地权限,如果
需要读写共享,一定要让本地目录可以被NFS客户端用户nfsnobody读写。

NFS客户端地址:为NFS服务端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等也可以为整个网段地址
,还可以用“*”来匹配所有客户端服务器,这里所谓的客户端一般来说是前端的业务服务器。

  1. [root@nfs-server ~]# mkdir /data -p
  2. oot@nfs-server ~]# id nfsnobody
  3. uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)
  4. [root@nfs-server ~]# chown -R nfsnobody.nfsnobody /data
  5. [root@nfs-server ~]# ll /data
  6. 总用量 12
  7. drwxr-xr-x 5 nfsnobody nfsnobody 4096 8 2 22:17 oldboy
  8. drwxr-xr-x 7 nfsnobody nfsnobody 4096 8 2 22:51 test
  9. drwxr-xr-x 7 nfsnobody nfsnobody 4096 8 6 21:33 www
  10. [root@nfs-server ~]# vim /etc/exports
  11. 1 #share /data for lihao at 2018/8/28
  12. 2 /data 172.16.10.0/24(rw,sync)
  13. "/etc/exports" 2L, 66C 已写入
  14. [root@nfs-server ~]# cat /etc/exports
  15. #share /data for lihao at 2018/8/28
  16. /data 172.16.10.0/24(rw,sync)
  17. [root@nfs-server ~]# /etc/init.d/rpcbind status
  18. rpcbind (pid 1425) 正在运行...
  19. [root@nfs-server ~]# /etc/init.d/nfs status
  20. rpc.svcgssd 已停
  21. rpc.mountd (pid 1465) 正在运行...
  22. nfsd (pid 1480 1479 1478 1477 1476 1475 1474 1473) 正在运行...
  23. [root@nfs-server ~]# rpcinfo -p localhost
  24. program vers proto port service
  25. 100000 4 tcp 111 portmapper
  26. 100000 3 tcp 111 portmapper
  27. 100000 2 tcp 111 portmapper
  28. 100000 4 udp 111 portmapper
  29. 100000 3 udp 111 portmapper
  30. 100000 2 udp 111 portmapper
  31. 100005 1 udp 36426 mountd
  32. 100005 1 tcp 43685 mountd
  33. 100005 2 udp 58343 mountd
  34. 100005 2 tcp 39429 mountd
  35. 100005 3 udp 45346 mountd
  36. 100005 3 tcp 38027 mountd
  37. 100003 2 tcp 2049 nfs
  38. 100003 3 tcp 2049 nfs
  39. 100003 4 tcp 2049 nfs
  40. 100227 2 tcp 2049 nfs_acl
  41. 100227 3 tcp 2049 nfs_acl
  42. 100003 2 udp 2049 nfs
  43. 100003 3 udp 2049 nfs
  44. 100003 4 udp 2049 nfs
  45. 100227 2 udp 2049 nfs_acl
  46. 100227 3 udp 2049 nfs_acl
  47. 100021 1 udp 35376 nlockmgr
  48. 100021 3 udp 35376 nlockmgr
  49. 100021 4 udp 35376 nlockmgr
  50. 100021 1 tcp 37467 nlockmgr
  51. 100021 3 tcp 37467 nlockmgr
  52. 100021 4 tcp 37467 nlockmgr
  53. [root@nfs-server ~]# /etc/init.d/nfs reload
  54. [root@nfs-server ~]# showmount -e 172.16.10.10
  55. Export list for 172.16.10.10:
  56. /data 172.16.10.0/24
  57. ####服务端已经配置完成#######
  58. ####客户端配置#####
  59. [root@web ~]# showmount -e 172.16.10.10
  60. Export list for 172.16.10.10:
  61. /data 172.16.10.0/24
  62. [root@web ~]# mount -t nfs 172.16.10.10:/data /mnt
  63. [root@web mnt]# df -h
  64. Filesystem Size Used Avail Use% Mounted on
  65. /dev/sda2 18G 1.1G 16G 7% /
  66. tmpfs 495M 0 495M 0% /dev/shm
  67. /dev/sda1 194M 28M 157M 15% /boot
  68. 172.16.10.10:/data 18G 1.2G 16G 8% /mnt (提示挂载成功)
  69. ##测试##
  70. [root@web ~]# cd /mnt
  71. [root@web mnt]# ls
  72. oldboy test www
  73. [root@web mnt]# touch test.txt
  74. [root@web mnt]# echo "1123" >test.txt
  75. [root@nfs-server ~]# cd /data
  76. [root@nfs-server data]# ls
  77. oldboy test test.txt www
  78. [root@nfs-server data]# cat test.txt
  79. 1123
  80. ###完成##
  81. NFS客户端:
  82. ①检查系统版本
  83. hostname nfs-
  84. cat /etc/redhat-release
  85. uname -r
  86. ②安装rpc服务检查
  87. rpm -aq nfs-utils rpcbind
  88. yum -y install nfs-utils rpcbind
  89. ③启动rpc服务并检查
  90. /etc/init.d/rpcbind start
  91. /etc/init.d/rpcbind status
  92. ④设置开机自启动并检查
  93. chkconfig rpcbind on
  94. chkconfig --list rpcbind
  95. ⑤检查服务端的NFS是否OK
  96. showmount -e 172.16.10.10
  97. 排查故障:
  98. 1.物理故障 ping 172.16.10.10
  99. 2.端口是否开通
  100. Telnet 172.16.10.10 111(注意:防火墙是否开启阻挡)
  101. ⑥挂载并测试
  102. mount -t nfs 172.16.10.10:/data /mnt
  103. 服务端配置
  104. ①检查系统版本
  105. hostname nfs-
  106. cat /etc/redhat-release
  107. uname -r
  108. ②安装rpc服务检查
  109. rpm -aq nfs-utils rpcbind
  110. yum -y install nfs-utils rpcbind
  111. ③启动rpcNFS服务并检查
  112. /etc/init.d/rpcbind start
  113. /etc/init.d/rpcbind status
  114. rpcinfo -p localhost
  115. /etc/init.d/nfs start
  116. rpcinfo -p localhost
  117. ④设置开机自启动并检查
  118. chkconfig rpcbind on
  119. chkconfig --list rpcbind
  120. chkconfig nfs on
  121. chkconfig --list nfs
  122. ⑤配置共享/data目录
  123. cat >>/etc/exports<<EOF
  124. #shared data for bbs by lihao at 2018/8/31
  125. /data 172.16.10.10/24(rw,sync)
  126. EOF
  127. cat /etc/exports
  128. ⑥创建共享目录
  129. mkdir /data
  130. chown -R nfsnobody.nfsnobody /data
  131. ⑦平滑加载NFS服务并检查
  132. /etc/init.d/nfs reload
  133. showmount -e 172.16.10.10

3.2第二个里程碑:

①实现从nfs客户端对nfs目录文件系统事件的实时监控
3.2.1安装inotify-tools包
yum安装方法:

  1. [root@nfs_server ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
  2. [root@nfs_server ~]# yum -y install inotify-tools
  3. [root@nfs_server ~]# rpm -qa inotify-tools
  4. inotify-tools-3.14-1.el6.x86_64

工具集介绍:
中间可以用逗号隔开create,delete,close_write

  1. 实时监控/data目录创建和删除文件
  2. [root@nfs_server ~]# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,delete /data

3.3第三个里程碑:

①当监控到nfs目录文件系统事件变化后,触发rsync推送变化的文件

  1. [root@nfs_server scripts]# vim inotify.sh
  2. #!/bin/bash
  3. Path=/data
  4. Ip=192.168.16.103
  5. /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write $Path \
  6. |while read file
  7. do
  8. cd $Path && \
  9. rsync -az ./ --delete rsync_backup@$Ip::nfsbackup/ --password-file=/etc/rsync.password &
  10. done

inotify调优:
事件相关参数默认大小

  1. [root@nfs_server scripts]# cd /proc/sys/fs/inotify
  2. [root@nfs_server inotify]# ls
  3. max_queued_events max_user_instances max_user_watches
  4. [root@nfs_server inotify]# cat max_queued_events
  5. 16384
  6. [root@nfs_server inotify]# cat max_user_instances
  7. 128
  8. [root@nfs_server inotify]# cat max_user_watches
  9. 8192

关键参数说明:
max_queued_events--设置inotify实例事件(event)队列可容纳的事件数量
max_user_instances--设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_user_watches--设置inotifywait或inotifywatch命令可以监控的文件数量(单进程
实战调优:

  1. [root@nfs_server inotify]# echo 655350 >/proc/sys/fs/inotify/max_user_watches
  2. [root@nfs_server inotify]# echo 655350 >/proc/sys/fs/inotify/max_queued_events
  3. [root@nfs_server inotify]# cat /proc/sys/fs/inotify/max_queued_events
  4. 655350

重启会失效:写入/etc/rc.local.
inotify优点:
1.监控文件系统事件变化,通过同步工具实现实时数据同步。
inotify缺点:
1.并发如果大于200个文件(10-100k),同步就会有延迟。
2.有变化才推送,没变化不理会
3.监控到事件后,调用rsync同步单进程的(加&并发),sersync多进程同步。
sersync功能:
1.支持配置文件管理
2.真正的守护进程socket
3.可以对失败文件定时重传(定时任务功能)
4.第三方的HTTP接口(例如更新cdn缓存)
5.默认多线程rsync同步
** 高并发数据实时同步方案小结**
1.inotify(sersync)+rsync文件级别
2.drbd文件系统级别,基于block.缺点:备节点数据不可用
3.第三方软件的同步功能:MySQL同步,oracle,mongodb
4.程序双写,直接写两台服务器
5.业务逻辑解决(读写分离,备读不到,读主)
6.nfs集群(1.4.5)(双写主存储,备存储用inotify(sersync)+rsync,备没有找主解决延迟问题)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注