03存储服务和实现同步服务

2. 存储服务

1. 基础知识

1. NFS 存储服务概介绍
  • NFS是Network File System的缩写,中文意思是网络文件共享系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
2. 存储服务的种类
  • FTP(文件传输协议)— 本地共享
  • 分布式存储
    • Mosefs 比较落伍
    • glusterFS 较为常用
    • FastDFS 最常用
3. NFS 存储服务的作用
  • 实现数据的共享存储
  • 便于数据操作管理
  • 节省购买服务器磁盘开销
4. NFS 服务工作原理
  • 服务端
    1. 启动 rpc 服务,开启 111 端口
    2. 启动 nfs 服务
    3. 实现nfs服务进程和端口好的注册
  • 客户端
    1. 建立TCP网络连接
    2. 客户端执行挂载命令,进行远程挂载
    3. 可以实现数据远程传输存储

2. NFS 服务部署流程

  • RPC:远程过程调用服务程序 — 租房的中介(端口)
    在这里插入图片描述
1. 服务端部署
  • 下载安装软件

    yum -y install nfs-utils rpcbind
    
  • 编写配置文件

    vim /etc/exports # man exports 查看配置文件的帮助文档
    # 数据存储目录
    # 网络白名单
    # 配置存储目录的权限信息
    -----------------------------
    /data 172.16.1.0/24(rw,sync)
    ------------------------------
    
  • 创建 data 目录

    mkdir /data 
    chown nfsnobody:nfsnobody /data
    
  • 启动服务程序

    systemctl start rpcbind.service 
    systemctl enable rpcbind.service 
    
    systemctl start nfs
    systemctl enable nfs
    
2. 客户端配置
  • 安装 nfs 服务软件

    yum install -y nfs-utils
    
  • 实现远程挂载目录

    `mount` -t nfs 172.16.1.130:/data /mnt
    ------ERROR----------------
    mount.nfs: access denied by server while mounting 192.168.80.130:/data
    # 在 server 上用 exportfs -rv 检验 /etc/exports 文件是否有误,根据错误判断
    ----------------------------
    
3. NFS 服务挂载不上排查方法
  • 服务端

    • 检查 NFS 进程信息是否注册

      `rpcinfo` -p localhost # 问题原因,服务启动顺序不对,没有启动 NFS
      
    • 检查有没有可以用存储目录

      `showmount` -e localhost # 问题原因:配置文件书写有问题
      
    • 在服务端进行挂载测试
      是否能在存储目录中创建或删除数据

  • 客户端测试

    • 检查 NFS 服务是否启动

    • 网络问题

      ping IP  查看网络连接
      telnet IP:port 查看端口是否异常
      

3. NFS 服务端详细配置说明

1. 实现多个网段主机可以进行挂载
## 第一种方法
vim /etc/exports
/data 172.16.1.0/24(rw,sync) 192.168.80.0/24(rw,sync)

## 第二种方法
vim /etc/exports
/data 172.16.1.0/24(rw,sync) 
/data 192.168.80.0/24(rw,sync)
2. 共享目录的权限和那些因素有关
  1. 和存储目录的本身权限有关(文件权限、属主属组)
  2. 和配置文件中的权限配置有关
3. NFS 配置参数权限
  • rw – 读写权限
  • ro – 只读权限
  • sync – 同步存储数据 直接将数据保存到磁盘(数据存储安全 慢)
  • async – 异步存储数据 直接将数据保存到内存(存储数据块 不安全)
  • no_root_squash – 不要将 root 用户身份进行转换
  • root_squash – 将 root 用户身份进行转换
  • all_squash – 将所有用户身份都进行转换
  • no_all_squash – 不要将普通用户身份进行转换
4. 企业互联网公司如何配置 NFS 各种 squash 参数
  • 保证网站存储服务器数据安全性(默认设置):

    • no_all_squash 需要设置,共享目录权限改为上游普通用户,上下游用户的 uid 必须一致

    • root_squash 需要配置,防止内部人员搞破坏

  • 企业中如何编辑 NFS 配置文件

    • 通用方法

      /data 172.16.1.0/24(rw,sync)
      
    • 特殊情况(让部分人员只能看目录中的数据,但是不能操作)

      `/data 172.16.1.0/24(ro,sync)`
      
    • 修改默认用户的匿名用户

      /data 192.168.80.0/24(rw,sync,anonuid=xxx,anongid=xxx) ## 修改匿名用户
      
5. nfs 服务问题
  • nfs 服务重启,挂载后创建数据比较慢
    • 原因:服务器重启方式不正确
    • restart 重启服务 强制断开所有连接
    • reload 重启服务(平滑连接) 强制断开没有数据传输的连接

4. NFS 客户端的详细配置说明

1. 如何实现自动挂载
  • 利用 rc.local

    echo "mount -t nfs 172.16.1.130:/data /mnt" >> /etc/rc.local 
    
  • 利用 /etc/fstab

    vim /etc/fstab
    172.16.1.130:/data /mnt
    
  • 网络自动挂载之后开机后不自动挂载?

    • 原因:由于网络服务的启动慢于 /etc/fstab,所以开机启动后不识别网络挂载配置
    • 解决方式: 开机自启 remote-fs.target
  • 客户端 mount 命令参数

    • 以下参数的使用方式为:

      mount -o -rw 挂载目录 挂载点
      
      vim /etc/fstab
      挂载目录 挂载点 磁盘格式 #参数 0 0
      
    • rw – 实现挂载点目录可读可写(默认)

    • ro – 实现挂载点目录可读

    • suid – 使共享目录中使 setuid 起作用(默认)

    • nosuid – 使共享目录中使 setuid 不起作用(默认) 提高共享目录的安全性

    • exec – 共享目录中的执行文件可以直接执行

    • noexec – 共享目录中的执行文件无法直接执行 提高共享目录的安全性

    • auto – 可以实现自动挂载 mount -a

    • noauto – 不可以实现自动挂载

    • nouser – 禁止普通用户卸载挂载点

  • 客户端如何卸载

    umount -lf /mnt # 强制卸载挂载点
    -l              # 不退出挂载点目录进行卸载
    -t              # 强制进行卸载操作
    

3. 实时同步服务

1. 实现实时同步数据原理

  • 部署好 rsync 守护进程服务,实现数据传输
  • 部署好 inotify 监控服务,实现目录中数据变化监控
  • 部署好 sersync 实时同步服务,将变化的数据进行实时备份传输

2. 实时同步服务的部署

  • 部署好 rsync 守护进程服务

    • 服务端
    • 客户端
  • 部署好 inotify 监控服务

    1. 安装软件

      `yum` install -y inotify-tools
      
    2. 熟悉命令的使用

      inotifywait # 监控目录数据信息变化
      
      # 命令格式
      inotifywait [参数] 监控的目录
      
      # 参数大全
      -m --monitor     # 实现一直监控目录的数据变化
      -r --recursive   # 进行迭代监控
      -q --quiet       # 尽量减少信息的输出
      --format         # 指定输出信息的格式
      --timefmt        # 指定输出的时间信息格式
      -e --event       # 指定监控的事件信息
      
      #创建文件时的监控信息
      /tmp/ CREATE test.txt   # 一个文件被创建
      /tmp/ OPEN test.txt	    # 打开创建的文件
      /tmp/ ATTRIB test.txt   # 修改文件的属性信息
      /tmp/ CLOSE_WRITE,CLOSE test.txt # 保存关闭一个文件
      
      # 删除文件时的监控信息
      /tmp/ DELETE test.txt
      
      # 向文件中写入信息时的监控信息
      /data/ CREATE user10
      /data/ OPEN user10
      /data/ MODIFY user10
      /data/ CLOSE_WRITE,CLOSE user10
      
      # sed命令修改文件原理
      /data/ OPEN user10         #打开文件
      /data/ CREATE sedpSAFR7    #创建出一个临时文件(内存)
      /data/ OPEN sedpSAFR7      #临时文件进行打开
      /data/ ACCESS user10       #读取源文件内容
      /data/ MODIFY sedpSAFR7    #修改临时文件
      /data/ ATTRIB sedpSAFR7    #临时文件属性变化
      /data/ CLOSE_NOWRITE,CLOSE user10  #不编辑直接关闭源文件
      /data/ CLOSE_WRITE,CLOSE sedpSAFR7 #写入关闭临时文件
       /data/ MOVED_FROM sedpSAFR7       #将临时文件移除
       /data/ MOVED_TO user10            #移入一个新的user10源文件
       
      
    ##notify 监控命令模板:
    inotifywait -mrq --timefmt "%F" --format "时间:%T 改动目录:%w 文件:%f 事件信息:%e" /tmp -e CREATE 
    touch a.txt
    时间:2021-04-28 改动目录:/tmp/ 文件:a.txt 事件信息:CREATE
    
  • 部署好 sersync 实时同步服务

    1. 下载安装 sersync

      https://github.com/wsgzao/sersync  # 下载网址
      rz -y # 选择需要上传的数据信息
      
      # 将下载的压缩包进行解压并移动至 /usr/local/ 目录下
      
      # 进入 sersync 目录,修改 .xml 文件
      vim /usr/local/sersync/confxml.xml
      [修改的内容如下]
      <sersync>
              <localpath watch="/backup">  ## 监听本地那个目录
                 	<remote ip="172.16.1.131" name="backup"/>  ## 同步的远程目录及 IP
              </localpath>
              <rsync>
                  <commonParams params="-az"/> ## rsync 的参数
                  <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/> ## rsync 的密码
                  <userDefinedPort start="true" port="873"/><!-- port=874 --> ## 端口号
                  <timeout start="false" time="100"/><!-- timeout=100 -->
                  <ssh start="false"/>
              </rsync>
      [精致的结尾]
      
      
    2. 启动 sersync

      # 将命令写入系统环境变量
      # 执行命令
      sersync -dro /usr/local/sersync/confxml.xml
      # 参数介绍
      参数-d:启用守护进程模式
      参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
      c参数-n: 指定开启守护线程的数量,默认为10个
      参数-o:指定配置文件,默认使用confxml.xml文件
      参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
      参数-m:单独启用其他模块,使用 -m socket 开启socket模块
      参数-m:单独启用其他模块,使用 -m http 开启http模块
      不加-m参数,则默认执行同步程序
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值