zoukankan      html  css  js  c++  java
  • NFS部署过程

    课前回顾 及 NFS

    NFS部署过程

    1)安装服务端

    yum install -y nfs-utils rpcbind

    2)修改配置文件

    vim /etc/exports
    #共享目录       IP网段           参数
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

    3)nfs自带用户:nfsnobody 65534,自己创建用户

    groupadd www -g 666
    useradd www -u 666 -g 666 -s /sbin/nologin -M

    4)创建共享目录

    mkdir /data
    chown -R www.www /data

    5)启动服务

    systemctl start rpcbind nfs-server

    客户端部署

    1)安装rpcbind和nfs

    yum install -y rpcbind nfs-utils

    2)启动rpcbind

    systemctl start rpcbind

    3)查看可挂载点

    showmount -e 172.16.1.31

    4)挂载

    mount -t nfs 172.16.1.31:/data /var/www/html/tupian

    5)开机挂载

    vim /etc/fstab
    172.16.1.31:/data /var/www/html/tupian nfs defaults 0 0

    6)使用mount -a 检测

    [root@backup ~]# mount -a

    7)卸载

    umount /var/www/html/tupian
    #强制卸载
    umount -lf /var/www/html/tupian

    8)nfs挂载文件

    [root@nfs01 ~]# cat /var/lib/nfs/etab

    9)增加挂载的安全性

    #通过mount -o指定挂载参数,禁止使用suid,exec,增加安全性能
    [root@nfs-client ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt

    nfs配置参数

    rw:共享目录的权限是 可读 可写

    sync:同时将数据写入内存和磁盘,增强数据的安全性,保证数据不丢失

    all_squash:无论使用什么用上传或者访问,一律压缩成 nfs的匿名用户

    anonuid:指定一个匿名用户,必须是系统存在的uid

    anongid:指定一个匿名用户组,必须是系统存在的gid

    ----------------------------------------------不常用--------------------------------------------

    root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)
    no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
    no_all_squash无论NFS客户端使用什么账户访问,都不进行压缩
    async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
    ro只读权限
       

     

    NFS存储小结

    • NFS存储优点

      • 1)NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。

        2)NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。

       

      • NFS存储局限

        • 1)存在单点故障, 如果构建高可用维护麻烦web->nfs()->backup

        • 2)NFS数据明文, 并不对数据做任何校验。

        • 3)客户端挂载NFS服务没有密码验证, 安全性一般(内网使用)

           

    3.NFS应用建议 1)生产场景应将静态数据尽可能往前端推, 减少后端存储压力

    2)必须将存储里的静态资源通过CDN缓存jpgpngmp4avicssjs

    3)如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用

    rsync+nfs实战,解决nfs的单点故障

    服务器系统角色IP
    CentOS 7.5 NfsServer(A) 172.16.1.31
    CentOS 7.5 NfsClient(B) 172.16.1.41
    CentOS 7.5 NfsClient(C) 172.16.1.7

    1)安装服务端

    yum install -y rpcbind nfs-utils

    2)编辑服务端的配置文件

    vim /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

    3)创建用户

    groupadd www -g 666
    useradd www -u 666 -g 666 -s /sbin/nologin -M

    4)创建目录并授权

    mkdir /data
    chown -R www.www /data

    5)启动服务

    systemctl start rpcbind nfs-server

    6)检查

    cat /var/lib/nfs/etab
    /data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

    配置客户端

    1)安装客户端服务

    yum install -y rpcbind nfs-utils

    2)启动rpc

    systemctl start rpcbind
    

    3)查看挂载点

    showmount -e 172.16.1.31
    

    4)挂载

    mount -t nfs 172.16.1.31:/data /var/www/html/tupian
    

    结合rsync

    1)NFS安装rsync

    yum install -y rsync
    

    2)客户端与服务端的关系

     

    3)使用免密的方式

    export RSYNC_PASSWORD=123456
    

     

    rsync服务端操作(backup)

    1)创建www用户

    groupadd www -g 666
    useradd www -u 666 -g 666 -s /sbin/nologin -M
    

    2)统一rsync服务的用户和用户组(修改配置文件)

    vim /etc/rsyncd.conf
    uid = www
    gid = www
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    ignore errors
    read only = false
    list = false
    auth users = rsync_backup
    secrets file = /etc/rsync.passwd
    log file = /var/log/rsyncd.log
    #####################################
    [zls]
    comment = welcome to oldboyedu backup!
    path = /backup
    
    [nfs]
    comment = welcome to oldboyedu nfs!
    path = /data
    

    3)创建目录并授权

    [root@backup ~]# mkdir /data
    [root@backup ~]# chown -R www.www /data/
    

    4)编写备份脚本

    vim rsync.sh 
    #!/bin/bash
    
    PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'
    H=`hostname`
    I=`ifconfig eth1|awk 'NR==2{print $2}'`
    D=`date +%F`
    S=${H}_${I}_${D}
    BD=/backup
    export RSYNC_PASSWORD=123456
    
    mkdir -p ${BD}/${S}
    
    tar zcf ${BD}/${S}/conf.tar.gz /etc/passwd &>/dev/null
    
    md5sum ${BD}/${S}/conf.tar.gz  > /backup/${I}.txt
    
    rsync -az ${BD}/ rsync_backup@172.16.1.41::zls
    rsync -az --delete /data/ rsync_backup@172.16.1.41::nfs
    find ${BD} -type d -mtime +7|xargs rm -fr
    

    5)安装nfs服务端

    [root@backup ~]# yum install -y rpcbind nfs-utils
    

    6)编辑配置文件

    [root@backup ~]# vim /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    

    7)启动服务

    [root@backup ~]# systemctl start rpcbind nfs-server
    [root@backup ~]# systemctl enable rpcbind nfs-server
    

    web01客户端写脚本

    #!/bin/bash
    
    check_nfs=`df -h|grep '/var/www/html/tupian'|wc -l`
    if [ $check_nfs -eq 0 ];then
            showmount -e 172.16.1.31 &>/dev/null
            if [ $? -eq 0 ];then
                    mount -t nfs 172.16.1.31:/data /var/www/html/tupian
            else
                    mount -t nfs 172.16.1.41:/data /var/www/html/tupian
            fi
    fi
    

     

    5.录视频

  • 相关阅读:
    Can't remove netstandard folder from output path (.net standard)
    website项目的reference问题
    The type exists in both DLLs
    git常用配置
    Map dependencies with code maps
    How to check HTML version of any website
    Bootstrap UI 编辑器
    网上职位要求对照
    Use of implicitly declared global variable
    ResolveUrl in external JavaScript file in asp.net project
  • 原文地址:https://www.cnblogs.com/223zhp/p/11372880.html
Copyright © 2011-2022 走看看