• NFS服务


    第1章 NFS介绍

    1.1 NFS的概念

    NFS是Network File System的缩写,即网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器如web)可以通过mount挂载的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)

    1.2 NFS在企业中的应用场景

    在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资源

    1.2.1 NFS文件系统存在的作用

    01. 实现数据信息的共享

    02. 实现数据信息的一致

    1.2.2 共享存储的实现方式

    1.硬件实现共享存储

    IBM(服务器 小型机 大型机 存储 DS V7000 V5000) Oracle EMC ==>去IOE

    2.软件实现共享存储

    本地文件系统NFS 分布式文件系统mfs FTP samba

    说明:互联网领域发展过程详细了解(浪潮之巅)

    1.3 NFS共享系统原理

    01. 在NFS服务器端创建一个共享目录/video

    02. 通过mount网络挂载,将这个共享目录/video挂载到客户端本地挂载点(不同客户端的挂载点可以不相同)

    03. 客户端挂载完毕后,进入NFS客户端挂载点所在的目录就可以看到NFS服务器端/video共享出来的目录下的所有数据。在客户端的挂载目录上进行创建/删除/查看数据操作时,就相当于在服务器进行的创建/删除/查看操作

    显示本地共享服务器挂载的基本信息

     1 [root@nfs01 ~]# df -h
     2 
     3 Filesystem         Size  Used  Avail Use% Mounted on
     4 
     5 /dev/sda3          6.9G  1.6G  5.0G  24% /
     6 
     7 tmpfs              491M    0  491M   0% /dev/shm
     8 
     9 /dev/sda1          190M 33M  147M  19% /boot
    10 
    11 172.16.1.31:/data  6.9G  1.6G  5.0G  24% /mnt  #使用率到达99%时扩容对端NFS

    说明:mount -t 指定挂载类型   源           目标

    mount -t     nfs    172.16.1.31:/data    /mnt

    1.4 RPC远程过程调用

    1.4.2 NFS工作流程原理

    1.4.2.1  服务端三部曲

    01.启动RPC服务/etc/init.d/rpcbind start

    02.启动NFS服务/etc/init.d/nfs start

    03.NFS服务会向RPC服务注册启动的端口信息(只能注册一次,要想注册第二次要重启NFS服务)

    1.4.2.2  客户端三部曲

    01.启动RPC服务/etc/init.d/rpcbind start,通过TCP/IP和服务端的RPC服务建立连接

    02.通过mount进行挂载,将远程磁盘目录挂载到本地

    03.通过客户端RPC服务向服务端RPC服务请求NFS服务端口信息,根据不同的进程和端口进行应用NFS服务

    1.5 NFS服务网络文件共享RPC服务

    由于NFS支持的功能很多,当NFS启动时会出现多个进程,网络服务又会自动生成一些随机的端口信息。NFS的随机端口造成了客户端与服务端的通信障碍,因为NFS客户端必须要知道NFS服务器端的数据传输端口才能进行通信,这时就生成了RPC远程调用服务

    当RPC启动时会记录每个NFS功能所对应的端口信息,由RPC服务提供用户访问,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而确保客户端可以连接到正确的NFS端口,达到实现数据传输交互数据目的

    第2章 NFS服务器端部署环境准备

    2.1 NFS服务端部署

    服务器系统

    角色

    IP

    Centos6.9x86_64

    NFS客户端(web-client)

    10.0.0.7

    Centos6.9x86_64

    NFS服务器端(nfs-server)

    10.0.0.8

    Centos6.9x86_64

    NFS客户端(web-client)

    10.0.0.9

    2.1.1 centos6.x x86_64模拟环境信息

    NFS服务器端操作系统信息及内核版本信息

     1 [root@nfs01 ~]# cat /etc/redhat-release
     2 
     3 CentOS release 6.9 (Final)
     4 
     5 [root@nfs01 ~]# uname -r
     6 
     7 2.6.32-696.el6.x86_64
     8 
     9 [root@nfs01 ~]# uname -m
    10 
    11 x86_64

    NFS客户端操作系统信息及内核版本信息如下:

     1 [root@web01 ~]# cat /etc/redhat-release
     2 
     3 CentOS release 6.9 (Final)
     4 
     5 [root@web01 ~]# uname -r
     6 
     7 2.6.32-696.el6.x86_64
     8 
     9 [root@web01 ~]# uname -m
    10 
    11 x86_64

    2.1.2 检查NFS RPC服务软件是否安装

     1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpc 

    说明:当不知道软件名字时候,可以用rpm -qa|grep -E "nfs-|rpcbind"来过滤包含在引号内的字符串;默认centos6.x系统没有安装nfs和rpc软件包(centos5默认会安装)

    2.1.3 进行yum安装nfs与rpc服务软件

    注意:这里安装的rpc软件是rpcbind,centos5.x安装portmap

     1 yum install -y nfs-utils rpcbind 

    查看已安装的软件包里的内容

     1 [root@nfs01 ~]# rpm -ql nfs-utils
     2 
     3 /etc/rc.d/init.d/nfs     #启动脚本命令
     4 
     5 /usr/sbin/exportfs    #NFS共享服务的管理命令
     6 
     7 /usr/sbin/showmount  #查看NFS共享列表信息
     8 
     9 [root@nfs01 ~]# rpm -ql rpcbind
    10 
    11 /etc/rc.d/init.d/rpcbind #启动脚本命令
    12 
    13 /usr/sbin/rpcinfo      #查看NFS注册信息

    查看某个命令/文件属于哪个大礼包

     1 rpm -qf `which ssh` 

    2.1.4 进行NFS配置文件/etc/exports编写

    NFS服务的默认配置文件路径为/etc/exports且默认为空

    说明:NFS默认配置文件是存在的,但是没有内容,需要用户自行配置

    1 vim /etc/exports
    2 
    3 #share /data by shine for share at 20171013
    4 
    5 /data 172.16.1.0/24(rw,sync)

    第一部分:/data  <=指定共享目录信息

    第二部分:172.16.1.0/24  <=指定目标网段,表示允许指定网段主机挂载到本地的共享目录上

    第二部分:(rw,sync)  <=定义共享服务相关参数信息

    rw表示读写,对共享目录设置的权限;

    sync同步,数据先写入NFS服务器内存,立刻同步到磁盘中==>即直接写入到磁盘中

    说明:修改/etc/exports后,需执行/etc/init.d/nfs reload平滑重启或exportfs -rv重新加载NFS配置,不进行重启NFS

    2.1.5 创建共享目录并更改权限

     1 mkdir -p /data 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data 

    在NFS服务器端把要共享的NFS目录赋予NFS默认用户nfsnobody用户和用户组权限,如果不设置则会导致NFS客户端无法通过NFS本地共享目录权限写入;当然也可以给NFS服务器端本地共享目录777的权限,但工作中最好不要用,因为777的权限太大

    说明:NFS共享目录管理用户这里为nfsnobody,服务端(个人)没有创建nfsnobody用户但仍可以赋予用户权限,是由于nfsnobody用户是在进行nfs软件的yum安装时自动创建的

    2.1.6 启动NFS服务

    1.首先启动rpc服务(检查状态/etc/init.d/rpcbind status)

     1 /etc/init.d/rpcbind start 

    2.查看NFS向rpc服务注册的本地端口信息

     1 ps -ef |grep rpcbind 2 3 netstat rpcbind 4 5 rpcinfo -p 10.0.0.31 #这时由于NFS还未启动,所以没有过多注册的端口映射信息 

    3.其次启动NFS服务

     1 /etc/init.d/nfs start 2 3 rpcinfo -p 10.0.0.31 #NFS服务启动会有很多端口和功能的对应,每次启动时除了873和2049其他端口均随机 

    说明:如果rpcbind服务未启动,执行命令rpcinfo -p localhost检查时,会报如下错误

    rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused

    解决办法:执行/etc/init.d/rpcbind start启动rpcbind服务即可

    2.1.7 检查NFS服务配置及本地测试挂载

    测试挂载结果

    1 mount -t nfs 172.16.1.31:/data /mnt  #mount -t 挂载类型 要挂载的服务器:共享目录 客户端的挂载点
    2 
    3 df -h  #查看挂载后的结果
    4 
    5 #172.16.1.31:/data  8.8G  1.7G  6.7G  20% /mnt
    6 
    7 mount

    2.2 NFS客户端部署(以下步骤均在backup和web01服务器中执行)

    2.2.1 检查NFS RPC服务软件是否安装

     1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpcbind 

    2.2.2 进行yum安装nfs与rpc服务软件

     1 yum install -y nfs-utils rpcbind 

    说明:进行同时安装的操作:在命令行界面右键→"发送键输入到所有会话"

    nfs-utils和rpcbind软件安装后,均不是必须要启动的,也可以不启动。但是,软件必须要安装

      如果nfs/rpc软件不安装会造成的问题:

    a 客户端无法使用showmount/rpcinfo命令

    b 挂载时客户端无法识别nfs/rpc文件系统类型

    2.2.3 检查nfs客户端是否有可以进行共享挂载目录的包

     1 rpm -qf `which showmount` 

    说明:showmount使用,需要安装nfs-utils软件

    2.2.4 进行nfs客户端共享目录挂载

    进行共享目录挂载

     1 mount -t nfs 172.16.1.31:/data /mnt 

    说明:只要nfs服务端进行修改配置文件重新挂载,客户端也必须重新进行挂载

    2.2.5 进行文件创建/删除测试检查

    在备份服务器中,新建oldboy文件

     1 [root@web01 ~]# touch /mnt/oldboy.txt 2 3 [root@web01 ~]# rm -f /mnt/oldboy.txt 

    此时,nfs和web客户端均能共享到oldboy文件

    注意:客户端测试如果有异常,可以把测试过程转移到服务端,通过服务端进行测试,便可确认异常问题原因

     

    第3章 NFS深入扩展知识

    3.1 NFS服务相关进程说明

     1 [root@nfs01 ~]# ps -ef |egrep "rpc|nfs"
     2 
     3 rpc        1185      1  0 20:17 ?        00:00:00 rpcbind      <-RPC主进程
     4 rpcuser    1207      1  0 20:17 ?        00:00:00 rpc.statd      <-检查数据存储一致性
     5 root       1367      2  0 20:19 ?        00:00:00 [rpciod/0]
     6 root       1376      1  0 20:19 ?        00:00:00 rpc.rquotad   <-磁盘配额进程(remote quota server)
     7 root       1381      1  0 20:19 ?        00:00:00 rpc.mountd   <-服务端挂载权限管理验证等(NFS mount daemon)
     8 root       1388      2  0 20:19 ?        00:00:00 [nfsd4]
     9 root       1389      2  0 20:19 ?        00:00:00 [nfsd4_callbacks]
    10 root       1390      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主进程daemon
    11 root       1391      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主进程
    12 root       1392      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主进程,管理登入,ID身份判别等
    13 root       1393      2  0 20:19 ?        00:00:00 [nfsd]
    14 root       1394      2  0 20:19 ?        00:00:00 [nfsd]
    15 root       1395      2  0 20:19 ?        00:00:00 [nfsd]
    16 root       1396      2  0 20:19 ?        00:00:00 [nfsd]
    17 root       1397      2  0 20:19 ?        00:00:00 [nfsd]        <-NFS主进程
    18 root       1428      1  0 20:19 ?        00:00:00 rpc.idmapd   <-name mapping daemon用户压缩/用户映射
    19 root       1432   1305  0 20:19 pts/0    00:00:00 egrep --color=auto rpc|nfs


    NFS查看以上进程,可以通过man进程名命令,如man rpcidmapd

    3.2 配置NFS服务端开机自启动

     1 [root@nfs01 ~]# chkconfig rpcbind on 2 3 [root@nfs01 ~]# chkconfig nfs on 

    3.3 NFS服务端配置文件路径

    NFS服务的默认配置文件路径为/etc/exports且默认为空

    1 [root@nfs01 ~]# ls -l /etc/exports
    2 
    3 -rw-r--r-- 1 root root 29 Oct 11 11:13 /etc/exports
    4 
    5 [root@nfs01 ~]# cat /etc/exports

    说明:NFS默认配置文件是存在的,但是没有内容,需要用户自配

     

    第4章 NFS配置参数权限说明


     
    4.1 squash参数详解

    rpc.idmapd      名字映射后台进程

    4.2 anonuid、anongid参数详解

    作用:修改映射后的默认用户信息,默认映射用户为65534-nfsnobody

    4.2.1 实践操作配置1:修改NFS默认映射用户(nfsnobody->www)

    4.2.1.1  服务端配置

    第一个里程碑-创建映射用户(服务端与客户端都创建,且uid和gid保持一致)

    说明:因为两端识别用户身份并不是依靠用户名识别的,而是识别uid和gid信息,需要 uid和gid信息来判断用户是否一致,不一致则出现拒绝访问错误!

    #客户端和服务端创建用户www

     1 useradd www -u 666 2 3 id www 

    第二个里程碑-服务端进行nfs文件配置,修改共享目录权限(客户端不进行修改)

    1 [root@nfs01 ~]# vim /etc/exports
    2 
    3 #share /data by root for www at 20171015
    4 
    5 /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

    说明:不指定anon参数这里就以uid为65534的nfsnobody用户作为默认映射用户

    提示:用户默认的映射参数为root_squash、no_all_squash,所以配置文件中一定要进行参数设置

    第三个里程碑-修改上级目录权限

     1 [root@nfs01 ~]# chown -R www.www /data 

    第四个里程碑-重启服务器

     1 [root@nfs01 ~]# /etc/init.d/nfs reload 

    4.2.1.2  客户端配置

    第一个里程碑-进行挂载/重新挂载

     1 [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
     2 
     3 [root@backup ~]# df -h
     4 
     5 Filesystem         Size  Used Avail Use% Mounted on
     6 
     7 /dev/sda3          8.8G  1.7G  6.7G  20% /
     8 
     9 tmpfs              238M     0  238M   0% /dev/shm
    10 
    11 /dev/sda1          190M   40M  141M  22% /boot
    12 
    13 172.16.1.31:/data  8.8G  1.7G  6.7G  20% /mnt

    第二个里程碑-创建指定www用户

     1 useradd www -u 666 2 3 id www 4 5 uid=666(www) gid=666(www) groups=666(www) 

    第三个里程碑-客户端进行测试

    01.测试root用户映射

    1 [root@backup mnt]# touch user_root.txt
    2 
    3 [root@backup mnt]# ll
    4 
    5 total 0
    6 
    7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt

    02.测试普通用户映射

    #www用户映射

    1 [www@backup mnt]$ touch user_www.txt
    2 
    3 [www@backup mnt]$ ll
    4 
    5 total 0
    6 
    7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt
    8 
    9 -rw-rw-r-- 1 www www 0 Oct 15 16:26 user_www.txt

    注意:当服务端创建用户而客户端不存在此用户时,客户端在挂载点下创建目录,文件用户属性出现nobody信息

    4.2.2 实践操作配置2:修改客户端配置文件进行测试

    no_all_squash

     1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied 

    root_squash(服务端挂载目录/data属主为www,故www用户仍能挂载)

     1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied 

    no_root_squash(root用户不进行映射,其权限能创建文件且属主依然为root)

    1 [root@backup mnt]# touch user_root.txt
    2 
    3 [root@backup mnt]# ll
    4 
    5 -rw-r--r-- 1 root root 0 Oct 15 17:06 user_root.txt
    6 
    7 [oldboy@backup mnt]$ touch user_oldboy.txt
    8 
    9 touch: cannot touch `user_oldboy.txt': Permission denied

      NFS服务umount命令参数

    -l  表示不用离开当前挂载目录,进行懒惰卸载

    -f  表示对挂载的目录进行强制卸载

     

    第5章 NFS服务企业案例配置实践

    5.1 实例:共享不同的两个目录,分别赋予读和写的权限

    5.1.1 具体要求

    服务端上面要求:nfs服务器172.16.1.31,共享下面两个目录

    /data/w   要求的权限可读写,同步数据,所有用户都压缩为匿名用户

    /data/r   要求的权限为只读,同步数据,所有用户都压缩为匿名用户

    客户端上面要求 :

    backup服务器   把NFS服务器的/data/r挂载到backup的/data/r

    web01服务器   把NFS服务器的/data/w挂载到web01的/data/w

    5.1.2 部署过程

    5.1.3 第一个里程碑-卸载并创建目录环境

     1 umount -lf /data 

    ①    服务端创建

     1 mkdir /data/{r,w} 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data/{r,w} 

    ②    客户端创建(这里无需修改权限)

     1 [root@backup ~]# mkdir -p /data/r 2 3 [root@web01 ~]# mkdir -p /data/w 

    5.1.4 第二个里程碑-编辑nfs服务端配置文件

    1 [root@nfs01 ~]# vim /etc/exports
    2 
    3 #share /data by root at 20171015
    4 
    5 #/data 172.16.1.0/24(rw,sync)
    6 
    7 /data/w 172.16.1.0/24(rw,sync,all_squash)
    8 
    9 /data/r 172.16.1.0/24(ro,sync,all_squash)

    5.1.5 第三个里程碑-重启nfs

     1 [root@nfs01 ~]# /etc/init.d/nfs reload 

    说明:在配置共享目录时,需要考虑到子目录会继承上一级目录的权限,即上一级目录/data若有rw权限,/data/r将仍被继承(ro权限不起作用),因此应尽量让共享目录之间没有继承关系,这里采用注释/data目录方法

    5.1.6 第四个里程碑-客户端进行重新挂载

     1 umount -lf /mnt  #卸载已挂载目录
     2 
     3 backup
     4 
     5 [root@backup ~]# mount -t nfs 172.16.1.31:/data/r /data/r/
     6 [root@backup ~]# df -h
     7 Filesystem           Size  Used Avail Use% Mounted on
     8 /dev/sda3            8.8G  1.7G  6.7G  20% /
     9 tmpfs                238M     0  238M   0% /dev/shm
    10 /dev/sda1            190M   40M  141M  22% /boot
    11 172.16.1.31:/data/r  8.8G  1.7G  6.7G  20% /data/r
    12 
    13 web01
    14 
    15 [root@web01 ~]# mount -t nfs 172.16.1.31:/data/w /data/w/
    16 [root@web01 ~]# df -h
    17 Filesystem           Size  Used Avail Use% Mounted on
    18 /dev/sda3            8.8G  1.7G  6.8G  20% /
    19 tmpfs                238M     0  238M   0% /dev/shm
    20 /dev/sda1            190M   40M  141M  22% /boot
    21 172.16.1.31:/data/w  8.8G  1.7G  6.7G  20% /data/w

    5.1.7 第五个里程碑-进行测试

    ①    测试读写功能

    1 [root@web01 ~]# cd /data/w
    2 
    3 [root@web01 w]# touch test01.txt
    4 
    5 [root@web01 w]# ll
    6 
    7 total 0
    8 
    9 -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 15  2017 test01.txt

    ②    测试只读功能

    1 [root@backup ~]# cd /data/r
    2 
    3 [root@backup r]# touch test02.txt  #创建文件进行测试
    4 
    5 touch: cannot touch ` test02.txt': Read-only file system  #提示:不能创建文件,该文件为只读文件系统

    提示:在任何情况下,服务端重启之后客户端都必须进行重新挂载,否则就出现如下错误

     1 [root@backup r]# ll 2 3 ls: cannot open directory .: Stale file handle 

    第6章 NFS服务的重点知识梳理

    6.1 多个NFS客户端访问服务端的读写文件要具有的权限

    01.NFS服务器/etc/exports设置需要开放可写入的权限,即服务端的共享权限

    02.NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务端本地目录的安全权限

    03.每台机器对应存在和NFS默认配置UID的相同UID 65534的nfsnobody用户(确保所有客户端的访问权限统一,否则每个机器都需要同时建立相同UID的用户,并覆盖NFS的默认用户配置)

    只有满足上述三个条件,多个NFS客户端才能具有查看/修改/删除其它任意NFS客户端上传文件的权限,这在大规模的集群环境中作为集群共享存储时尤为重要

    6.2 NFS客户端挂载命令格式

    挂载命令

    挂载的类型格式

    指定挂载参数

    NFS服务器端提供的共享目录

    NFS客户端的挂载点

    mount

    -t nfs

    -o ro

    172.16.1.31:/data

    /mnt(必须存在)

    完整版的挂载命令:mount -t nfs 172.16.1.31:/data /mnt,此命令需在客户端执行

    6.2.1 NFS共享目录自动挂载方法

    01.将挂载命令放在/etc/rc.local里

    偶尔开机挂载不上,工作中除了开机自启动配置,还要对是否挂载做监控

    02.将挂载命令放在/etc/fstab里

    1 [root@nfs01 data]# chkconfig netfs on
    2 
    3 [root@nfs01 data]# chkconfig --list netfs
    4 
    5 netfs          0:off      1:off      2:on       3:on       4:on       5:on       6:off

    注意:生产环境中一般不将其挂载信息写入fstab中,因为开机启动时,网络连接不上nfs server的话,可能会导致客户端主机无法启动过不了fstab这项,可以将其放到/etc/rc.local中来实现开机自动挂载,但也有可能重启nfs客户端后挂载不成功

    6.3 NFS服务的优缺点及应用建议

    A.优点:

    01.简单,容易上手,容易管理

    02.NFS文件系统内数据是在文件系统之上的,即数据是可见的

    03.部署快速,维护简单方便且可控,满足需求就是最好的

    04.可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的

    05.服务非常稳定

    B.局限:

    01.存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录,这个在后期会通过负载均衡及高可用方案弥补

    02.在大数据高并发的场合,NFS效率、性能有限(2 千万/日以下PV的网站不是瓶颈,除非网站架构设计太差)

    03.客户端认证是基于IP 和主机名的,权限要根据ID 识别,无安全认证机制(用于内网则问题不大)

    04.NFS数据是明文的,NFS本身不对数据完整性进行验证

    05.多台客户机挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其当NFS服务器端出问题后所有NFS客户端都处于挂掉状态测试环境可使用autofs自动挂载解决,正式环境可修复NFS服务或强制卸载)。

    06.涉及了同步(实时等待)和异步(解耦)的概念,NFS服务器端和客户端相对来说就是耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为程序及架构解耦,让网站的扩展性变的更好。

    C.应用建议:

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

    第7章 利用ansible一键化nfs&rsync并实时同步剧本

      1 管理端 :
      2 [root@m01 tools]# cat quanwang.sh
      3 #!/bin/bash
      4 sh /server/scripts/piliangceshimiyao.sh
      5 ansible-playbook /server/tools/rsyncpiliang.yml
      6 ansible-playbook /server/tools/nfspiliang.yml
      7 ansible-playbook /server/tools/quanwang.yml
      8 
      9 01./server/scripts/piliangceshimiyao.sh
     10 
     11 [root@m01 tools]# cat /server/scripts/piliangceshimiyao.sh
     12 #!/bin/bash
     13 #生成密钥
     14 \rm -f /root/.ssh/id_dsa*
     15 ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
     16 #发送密钥
     17 for ip in 61 8 31 41
     18 do
     19 echo "==== 现在分发 172.16.1.$ip=========="
     20 sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"
     21 echo "==============end======="
     22 echo
     23 done
     24 
     25 02.ansible-playbook /server/tools/rsyncpiliang.yml
     26 
     27 - hosts: 172.16.1.41 #服务端
     28 tasks:
     29 - name: yum 
     30 shell: yum install -y rsync #安装rsync
     31 - name: yunm
     32 shell: yum -y install sshpass #安装密钥的软件
     33 - name: chuangjianmulu
     34 shell: mkdir -p /server/tools/ #创建所在配置的文件
     35 - name: peizhi
     36 copy: src=/server/tools/peizhi.sh dest=/server/tools/peizhi.sh
     37 - name: yunxing 
     38 script: /server/tools/peizhi.sh #运行脚本
     39 - name: guanliyunhu
     40 shell: useradd -s /sbin/nologin -M rsync #创建rsync虚拟用户
     41 - name: anquanwenjian
     42 shell: echo "rsync_backup:oldboy123" >/etc/rsync.password #设置密码文件
     43 - name: quanxian
     44 shell: chmod 600 /etc/rsync.password #给予权限
     45 - name: beifenmulu
     46 shell: mkdir -p /backup && chown -R rsync.rsync /backup
     47 - name: qidong
     48 shell: rsync --daemon #运行rsync
     49 - hosts: 172.16.1.8
     50 tasks:
     51 - name: yum
     52 shell: yum install -y rsync # 客户端
     53 - name: chuangjianmulu
     54 shell: mkdir -p /server/tools/
     55 - name: mimawenjian
     56 shell: echo "oldboy123" >/etc/rsync.password && chmod 600 /etc/rsync.password
     57 - hosts: 172.16.1.31
     58 tasks:
     59 - name: yum
     60 shell: yum install -y rsync #客户端 
     61 - name: chuangjianmulu
     62 shell: mkdir -p /server/tools/
     63 - name: mimawenjian
     64 shell: echo "oldboy123" >/etc/rsync.password && chmod 600 /etc/rsync.password
     65 
     66 03.ansible-playbook /server/tools/nfspiliang.yml
     67 
     68 - hosts: 172.16.1.31 #服务端
     69 tasks:
     70 - name: yum 
     71 shell: yum install -y nfs-utils rpcbind #安装nfs
     72 - name: yunm
     73 shell: yum -y install sshpass #安装密钥的软件
     74 - name: chuangjianmulu
     75 shell: mkdir -p /server/tools/ #创建所在配置的文件
     76 - name: peizhi
     77 copy: src=/server/tools/nfspeizhi.sh dest=/server/tools/nfspeizhi.sh
     78 - name: yunxingjiaoben 
     79 script: /server/tools/nfspeizhi.sh #运行脚本
     80 - name: guanlimulu
     81 shell: mkdir -p /data && chown -R nfsnobody.nfsnobody /data
     82 - name: qidong 
     83 shell: /etc/init.d/rpcbind start && /etc/init.d/nfs start #启动
     84 - name: kaijiqidong
     85 shell: chkconfig rpcbind on && chkconfig nfs on
     86 #设置密码文件
     87 - hosts: 172.16.1.8
     88 tasks:
     89 - name: yum
     90 shell: yum install -y nfs-utils rpcbind # 客户端
     91 # - name: gui
     92 # shell: umount -f /mnt
     93 - name: guazai
     94 shell: mount -t nfs 172.16.1.31:/data /mnt
     95 - hosts: 172.16.1.41
     96 tasks:
     97 - name: yumh
     98 shell: yum install -y nfs-utils rpcbind #客户端 
     99 # - name: guih
    100 # shell: umount -f /mnt 
    101 - name: guazaih
    102 shell: mount -t nfs 172.16.1.31:/data /mnt
    103 
    104 04.ansible-playbook /server/tools/quanwang.yml
    105 
    106 - hosts: 172.16.1.61
    107 tasks:
    108 # - name: anzhuangrsync
    109 # shell: /server/scripts/piliangceshimiyao.sh
    110 # - name: anzhuangrsync
    111 # shell: /server/tools/rsyncpiliang.yml
    112 # - name: anzhuangnfs
    113 # shell: /server/tools/nfspiliang.yml
    114 - hosts: 172.16.1.41
    115 tasks: 
    116 - name: chuangjianmulu41
    117 shell: mkdir -p /server/tools/ #创建所在配置的文件
    118 - name: peizhi41
    119 copy: src=/server/tools/quanwangrsync.sh dest=/server/tools/quanwangrsync.sh
    120 - name: rsyncdajian41
    121 script: /server/tools/quanwangrsync.sh
    122 - hosts: 172.16.1.8
    123 tasks:
    124 - name: chuangjianmulu8
    125 shell: mkdir -p /server/tools/ #创建所在配置的文件
    126 - name: peizhi8
    127 copy: src=/server/tools/quanwangweb.sh dest=/server/tools/quanwangweb.sh
    128 - name: quanwangweb8
    129 script: /server/tools/quanwangweb.sh
    130 - hosts: 172.16.1.31
    131 tasks:
    132 - name: chuangjianmulu31
    133 shell: mkdir -p /server/tools/ #创建所在配置的文件
    134 - name: peizhi31
    135 copy: src=/server/tools/quanwangnfs.sh dest=/server/tools/quanwangnfs.sh
    136 - name: quanwangnfs.sh31
    137 script: /server/tools/quanwangnfs.sh
    View Code

    此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创作品允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明,否则将追究法律责任。http://www.cnblogs.com/bananaaa/

  • 相关阅读:
    软工作业01 P18 第四题
    自我介绍
    进行代码复审训练
    源代码管理工具调查
    软工作业PSP与单元测试训练
    进行代码复审训练
    源代码管理工具
    软工作业PSP与单元测试训练
    作业
    第一堂课
  • 原文地址:https://www.cnblogs.com/bananaaa/p/7853328.html
Copyright © 2020-2023  润新知