16组马国龙 第八周 随堂笔记

Day 32

Rsync复制软件应用实践

1、什么是rsync?

开源的、高速的、实现本地以及远程,全量以及增量的数据复制(拷贝)工具

2、rsync作用

工作中需要定时/实时数据备份。不同的机器、不同的机房之间的数据备份。

3、rsync的功能特性

4、增量复制的原理

使用quick check 算法

5、rsync的三种工作模式介绍

  • a.把数据从一个地方复制到另一个地方(只在一台机器)cp
  • b.通过加参数实现删除的功能,rm
  • c.查看属性信息 ls
  • a.拷贝实践
[root@BC-web 10.0.0.7~]'# rsync /etc/hosts /opt
[root@BC-web 10.0.0.7~]'# ls /opt/
hosts
[root@BC-web 10.0.0.7~]'# ls -lhi /opt/hosts /etc/hosts
16778967 -rw-r--r-- 1 root root 332 4月  12 16:03 /etc/hosts
     557 -rw-r--r-- 1 root root 332 4月  12 16:03 /opt/hosts
  • b.删除实践
    删除文件么内容
[root@BC-web 10.0.0.7~]'# touch /null.txt
[root@BC-web 10.0.0.7~]# cat /opt/hosts  #让前面的null.txt和后面的hosts一样
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
::1          localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
[root@BC-web 10.0.0.7~]# rsync -r --delete /null.txt /opt/hosts 
[root@BC-web 10.0.0.7~]# cat /opt/hosts     

删除文件:

[root@BC-web 10.0.0.7~]# mkdir /null
[root@BC-web 10.0.0.7~]# rsync -r --delete /null/ /opt/ #让后面的opt和前面的null目录内容保持一致
[root@BC-web 10.0.0.7~]# ls /opt/
  • c.查看属性信息
[root@BC-web 10.0.0.7~]# rsync /etc/hosts
-rw-r--r--            332 2019/04/12 16:03:38 hosts

2)远程shell模式

借助于类似shell 隧道传输数据,适合不同机器之间的复制

pull 拉:从远端拉取到本地

实践:

 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
 [email protected]/opt]'# rsync -avz /etc/hosts [email protected]:/opt/
The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established.
ECDSA key fingerprint is SHA256:K6OPuAaIle33YsB1+mRhWdND0yRopQijyVu3JSeMZmY.
ECDSA key fingerprint is MD5:46:ab:fa:ab:bd:15:35:58:8b:14:4d:cd:8d:d0:19:85.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.
[email protected]'s password: 
sending incremental file list
hosts

sent 85 bytes  received 41 bytes  19.38 bytes/sec
total size is 332  speedup is 2.63
  • 检查:
[root@BC-web 10.0.0.7/opt]'# cd /opt/
[root@BC-web 10.0.0.7/opt]# ls
hosts

push 推:从本地推到远端

实践:

[[email protected]/opt]'# rsync -avz /etc/hosts [email protected]:/opt/
The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established.
ECDSA key fingerprint is SHA256:K6OPuAaIle33YsB1+mRhWdND0yRopQijyVu3JSeMZmY.
ECDSA key fingerprint is MD5:46:ab:fa:ab:bd:15:35:58:8b:14:4d:cd:8d:d0:19:85.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.
[email protected]'s password: 
sending incremental file list
hosts

sent 85 bytes  received 41 bytes  19.38 bytes/sec
total size is 332  speedup is 2.63
  • 检查:
[root@BC-web 10.0.0.7/opt]'# cd /opt/
[root@BC-web 10.0.0.7/opt]# ls
hosts

3)守护进程模式

首先要搭建rsync服务端(首先由守护进程),然后才能在客户端实现推拉数据
企业重点模式
rsync服务模式:*******开启后台进程

8、rsync 守护进程模式实践

以下

  • 查看版本信息:
 1)[root@BC-web 10.0.0.7~]'# rsync --version
 rsync  version 3.1.2  protocol version 31

配置文件

备份:
 [root@BC-web 10.0.0.7~]'# cp /etc/rsyncd.conf {,.ori}

配置:

 [root@BC-web 10.0.0.7~]'# cat -n /etc/rsyncd.conf 
     1  #rsync_config_______________start
     2  #created by oldboy
     3  #site: http://www.oldboyedu.com
     4  uid = rsync  #管理用户目录的用户
     5  gid = rsync  #管理用户目录的用户的用户组
     6  use chroot = no  #安全功能,是否要锁定到备份目录
     7  max connections = 200  #并发连接,同时多少个客户端访问
     8  timeout = 600     #超时时间
     9  pid file = /var/run/rsyncd.pid    #进程号所在文件
    10  lock file = /var/run/rsync.lock   #锁文件
    11  log file = /var/log/rsyncd.log    #日志文件,查看报错等
    12  ignore errors                     #忽略错误
    13  read only = false                 #可写
    14  list = false                      #不允许列表(客户端不能看服务端有哪些文件)
    15  hosts allow = 172.16.1.0/24       #哪些主机可以访问
    16  hosts deny = 0.0.0.0/32           #那些主机不可以访问
    17  auth users = rsync_backup         #远程虚拟连接用户
    18  secrets file = /etc/rsync.password#密码所在文件  格式要求:用户名:(冒号)密码,权限要求600
    19  [backup                           #[模块名字]远程访问使用模块名访问
    20  comment = welcome to oldboyedu backup!#说名注释
    21  path = /backup/                   #服务器端用于备份的目录,用户和组 rsync.rsync

3)启动与检查

rsync --daemon
systenctl start rsyncd

[root@BC-web 10.0.0.7~]# systemctl start rsyncd
[root@BC-web 10.0.0.7~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)
   Active: active (running) since 一 2019-04-15 11:40:28 CST; 3s ago
 Main PID: 9322 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─9322 /usr/bin/rsync --daemon --no-detach

4月 15 11:40:28 BC-web 10.0.0.7 systemd[1]: Started fast remote fi...
Hint: Some lines were ellipsized, use -l to show in full.
  • 查看端口:
[root@BC-web 10.0.0.7~]'# netstat -lntuop|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      9322/rsync           off (0.00/0/0)
tcp6       0      0 :::873                  :::*                    LISTEN      9322/rsync           off (0.00/0/0)

4)配置密码文件

[root@BC-web 10.0.0.7~]'# echo "rsync_backup:oldboy" > /etc/rsync.password
[root@BC-web 10.0.0.7~]#  chmod 600 /etc/rsync.password
[root@BC-web 10.0.0.7~]# cat /etc/rsync.password
rsync_backup:oldboy
[root@BC-web 10.0.0.7~]#  ls -l /etc/rsync.password
-rw------- 1 root root 20 4月  15 11:53 /etc/rsync.password

到此服务端配置完成

以下是操作客户端服务器
以下方法二选一

方法一:认证密码文件

[[email protected]~]'#  echo "oldboy" > /etc/rsync.password
[[email protected]~]#  chmod 600 /etc/rsync.password
[[email protected]~]#  cat /etc/rsync.password
oldboy
[[email protected]~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 4月  15 11:55 /etc/rsync.password

方法2:

[root@nfs01 ~]'# echo ' export RSYNC_PASSWORD=oldboy' >>/etc/bashrc 
[root@nfs01 ~]# tail -1 /etc/bashrc 
 export RSYNC_PASSWORD=oldboy
[root@nfs01 ~]# . /etc/bashrc 
[root@nfs01 ~]# echo $RSYNC_PASSWORD
oldboy

到此为止rsync客户端nfs01配置完成。

(3)守护进程模式,客户端rsync语法

配置服务器端守护进程,实现数据传输:

1、服务器守护进程

16组马国龙 第八周 随堂笔记_第1张图片
image.png

16组马国龙 第八周 随堂笔记_第2张图片
image.png

(4)测试成果

Day 34 NFS

1、什么是NFS?

全称 network fill system 网络文件系统
什么是文件系统?
管理磁盘的工具
网络文件系统:
通过网络存储和组织文件的方法和机制

2、为什么要用

前端所有的用户服务器接收到用户的图片、文件,都会同意放到后端的存储上
为什么要用共享存储?
所有节点服务器都需要将内容放到存储服务器上,统一取

3、共享存储种类

单点存储系统就是NFS,中小型企业,阿里云服务的NAS服务。
NFS性能不太高。
大型企业会用FastDNF、Ceph、GlsterFS、Mfs
大型存储上:EMS、Netapp几十万
硬件存储:稳定、两台、双主机头、几十块硬盘
BAT 曾经用硬件,但是超级贵
阿里云,去IOE Ibm Orace EMC

4、NFS工作原理

NFS是网络文件系统
需要启动很多服务,每个服务都有端口,而且经常变化
如何让客户端找到这些端口呢?需要一个经纪人(rpc服务)启动的服务包含两个服务

  • 1.NFS服务,包含很多进程和端口,把自己的端口告诉RPC
  • 2.RPC服务(对外固定端口)
    客户端请求NFS服务,先找RPC 111,查到NFS端口,然后发给客户
    环境部署:
    安装软件包

1.nfs-ytils:NFS主程序

[root@nfs01~]'# yum install nfs-uyils rpcbind -y
yum install nfs-uyils rpcbind -y
  • 检查
[root@nfs01~]# rpm -qa nfs-uyils rpcbind
rpcbind-0.2.0-47.el7.x86_64
  • 启动,激活开机自启
[root@nfs01~]# systemctl enable rpcbind.service
[root@nfs01~]# rpcinfo -p 127.0.0.1
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
  • 2、配置
[root@web01/mnt]# cat /etc/exports
/data 172.16.1.0/24(rw,sync)
  • 3、更改目录
  • 4、重启NFS
[root@nfs01~]# systemctl reload nfs #企业生产不许平滑重启
  • 平滑重启:不影响访问
  • 5、远程挂载
  • 6、换到web01挂载

exports参数

all_squash :不管客户端是什么用户,到服务端都是nfsnobody
anonuid=匿名用户的UID
anongid=匿名用户的GID


16组马国龙 第八周 随堂笔记_第3张图片
image.png

TCP/UDP区别

  • TCP面向连接
  • UDP无连接 FTP服务


    16组马国龙 第八周 随堂笔记_第4张图片
    image.png

    16组马国龙 第八周 随堂笔记_第5张图片
    image.png

Linux正在工作,文件系统只读故障,企业案例

  • 1、救援模式光盘修复

  • 2、单用户,mount -o remount,rw /
    以上也可以解决fstab故障

  • 2)安全加优化的挂载方式如下:

  • 3)安全加优化的挂载方式如下:
    mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072
    172.16.1.31:/data /mnt


    image.png

    自学:多块网卡bond


    16组马国龙 第八周 随堂笔记_第6张图片
    image.png
  • aliyun对应的存储服务NAS,还有oss对象存储

NFS优缺点

16组马国龙 第八周 随堂笔记_第7张图片
image.png

16组马国龙 第八周 随堂笔记_第8张图片
image.png
  • 使用CDN服务大大降低了对NFS的压力。


    16组马国龙 第八周 随堂笔记_第9张图片
    image.png

解决NFS性能问题:

1、使用CDN加速以及自己搭建缓存服务
2、把多个目录分配到到不同的NFS服务器上
3、弃用NFS


16组马国龙 第八周 随堂笔记_第10张图片
image.png

4、使用分布式文件系统(FastDFS)

  • 了解autofs

3)()权限

  • rw 可读写 read write
  • ro 只读 read only
  • sync 写到磁盘才算完成,安全 慢
  • async 异步写到远程缓冲区,快 不安全
    一会再说。
  • all_squash※ 不管客户端什么用户,到服务端都是nfsnobody
  • anonuid=匿名用户的UID
  • anongid=匿名用户的GID
[root@nfs01 ~]'# cat /etc/exports
oldboy shared dir at time
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)
/data 172.16.1.0/24(rw,sync)
/data1 10.0.0.0/24(ro)
[root@nfs01 ~]'# cat /var/lib/nfs/etab 
/data1  10.0.0.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash)
/data   172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

更改默认NFS默认用户

项目实践2:

NFS共享的匿名用户用www,使得客户端上传的图片都是www用户,而不是匿名的nfsnobody。
web01 backup客户端实现挂载到nfs
NFS下面共享/backup ,允许web01 backup客户端(/backup)可读写.
web01上传图片,backup上可以删除web01上传的图片。
NFS下面共享/data1,允许 web01 backup客户端10网段只读(data1)
实现开机自动挂载

1)nfs01服务端NFS、以及所有客户端:

[root@nfs01 ~]# useradd -u 1111 www
[root@nfs01 ~]# id www
uid=1111(www) gid=1111(www) 组=1111(www)

2)服务端NFS特殊配置

[root@nfs01 ~]'# tail -2 /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1 10.0.0.0/24(ro)
[root@nfs01 ~]'# chown -R www.www /data
[root@nfs01 ~]# 
drwxr-xr-x 2 www www 70 4月  18 10:05 /data

3)服务端NFS重启

[root@nfs01 ~]# systemctl reload nfs

4)每个客户端

  • mount -t nfs 172.16.1.31:/data /data
    [root@web01 ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    172.16.1.31:/data 19G 1.8G 18G 10% /data

[root@web01 /data]'# touch new_web01.txt
[root@web01 /data]# ls -l
总用量 0
-rw-r--r-- 1 www www 0 4月 16 10:24 ddddf
-rw-r--r-- 1 www www 0 4月 16 10:23 dddfff
-rw-r--r-- 1 www www 0 4月 18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月 17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月 17 12:30 oldgirl.txt



[root@nfs01 ~]# cat /etc/fstab 

/etc/fstab
 Created by anaconda on Mon Mar  4 11:15:16 2019

 Accessible filesystems, by reference, are maintained under '/dev/disk'
 See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

UUID=3a3a295f-88f8-456d-94dc-1a3eeb517c02 /                       xfs     defaults        0 0
UUID=fd2e0ca7-32be-425f-86a2-85c02b9ec5ea /boot                   xfs     defaults        0 0
UUID=79a3924b-739e-48dc-ab0c-0444b9ac6591 swap                    swap    defaults,_netdev   0 0

man mount
_netdev
              The  filesystem  resides on a device that requires network access (used to prevent the  system from attempting to mount these filesystems until the network has  been  enabled  on the system).

自学:fstab被破坏了如何修复?

[root@web01 ~]# cat /etc/fstab 
 /etc/fstab
 Created by anaconda on Mon Mar  4 11:15:16 2019
UUID=3a3a295f-88f8-456d-94dc-1a3eeb517c02 /                       xfs     defaults        0 0
UUID=fd2e0ca7-32be-425f-86a2-85c02b9ec5ea /boot                   xfs     defaults        0 0
UUID=79a3924b-739e-48dc-ab0c-0444b9ac6591 swap                    swap    defaults        0 0
172.16.1.31:/data                         /data                   nfs     defaults,soft        0 0

172.16.1.31:/data                         /data                   nfs     defaults,hard,intr        0 

mount -t nfs -o hard,intr,rsize=131072,wsize=131072 172.16.1.31:/data/ /mnt

NFS服务器出问题时候,客户端重启依然能够启动,可以用如下列两个方法:

defaults,soft
defaults,hard,intr
etc/fstab

客户端挂载深入

[root@web01 ~]# cat /proc/mounts 
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
10.0.0.31:/data1 /mnt nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.7,local_lock=none,addr=10.0.0.31 0 0
172.16.1.31:/data /data nfs rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.16.1.31,mountvers=3,mountport=20048,mountproto=udp,local_lock=none,addr=172.16.1.31 0 0

rsize=131072,wsize=131072
hard
proto=tcp
tcp安全稳定 udp无连接 FTP服务

  • Linux正在工作呢,文件系统只读。
  • 企业生产案例文件系统只读故障/fstab故障。

自己找一下:

  • 1、救援模式修复。
  • 2、单用户,mount -o remount,rw /

实时备份数据

  • inotify机制是一种异步的件系统事件监控,监控文件系统的增删改查


    16组马国龙 第八周 随堂笔记_第11张图片
    image.png

实时复制实践:

  • 前提:backup rsync服务端部署好。

1)部署NFS客户端

[root@nfs01 ~]# echo 'export RSYNC_PASSWORD=oldboy' >>/etc/bashrc
[root@nfs01 ~]# source /etc/bashrc
[root@nfs01 ~]# echo $RSYNC_PASSWORD
oldboy

  • 测试推送
    [root@nfs01 ~]# rsync -avz /data [email protected]::backup/
    sending incremental file list

sent 164 bytes received 25 bytes 126.00 bytes/sec
total size is 0 speedup is 0.00

2)查看inotify支持情况

[root@nfs01 ~]# uname -r
3.10.0-957.5.1.el7.x86_64
[root@nfs01 ~]# ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 4月 19 09:45 max_queued_events
-rw-r--r-- 1 root root 0 4月 19 09:45 max_user_instances
-rw-r--r-- 1 root root 0 4月 19 09:45 max_user_watches

3)安装inotify-tools

yum install inotify-tools -y

[root@nfs01 ~]# rpm -ql inotify-tools|head -2
/usr/bin/inotifywait
/usr/bin/inotifywatch

[root@nfs01 ~]# rpm -qa inotify-tools
inotify-tools-3.14-8.el7.x86_64

4)命令参数:

16组马国龙 第八周 随堂笔记_第12张图片
image.png

5)实践:

[root@nfs01~]'# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data
  • 监控增删改
[root@nfs01~]‘’# inotifywait -mrq --timefmmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete /data
19/04/19 10:27 /data/1.txt
19/04/19 10:27 /data/1.txt
19/04/19 10:28 /data/1.txt

sersync实践

1)推送成功

2)部署

  • 先下载

3)解压,移动

4)配置

image.png

16组马国龙 第八周 随堂笔记_第13张图片
40Q`_FRHFUYF$THHMT3O{HL.jpg

5)看一下参数

16组马国龙 第八周 随堂笔记_第14张图片
image.png

6)启动

16组马国龙 第八周 随堂笔记_第15张图片
image.png

7)加入开机自启动

16组马国龙 第八周 随堂笔记_第16张图片
image.png

完成了哦!!!!等一等,弟兄们我还有最后一句话:

有志者、事竟成,破釜沉舟,百二秦关终属楚;

苦心人、天不负,卧薪尝胆,三千越甲可吞吴。

加油!再见!

你可能感兴趣的:(16组马国龙 第八周 随堂笔记)