day 35集群架构

day 35权限

权限

  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默认用户

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 ~]# ls -ld /data

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@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

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

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt

为什么fstab无法实现nfs挂载?

回顾:开机启动流程:

1、磁盘先启动/etc/fstab

2、防火墙在前。

3、网卡

NFS网络文件系统,通过网络挂载,网络没起如何挂载?

又想在fstab里实现挂载、就用一个服务,延迟启动。

延迟满足:小孩给棉花糖的故事,学会延迟满足是成就自己的优秀思维。

[root@nfs01 /data1]# systemctl start remote-fs.target

[root@nfs01 /data1]# systemctl enable remote-fs.target

Created symlink from /etc/systemd/system/multi-user.target.wants/remote-fs.target to /usr/lib/systemd/system/remote-fs.target.

[root@nfs01 /data1]# systemctl status remote-fs.target

● remote-fs.target - Remote File Systems

  Loaded: loaded (/usr/lib/systemd/system/remote-fs.target; enabled; vendor preset: enabled)

  Active: active since 四 2019-04-18 10:17:57 CST; 18s ago

    Docs: man:systemd.special(7)

4月 18 10:17:57 nfs01 systemd[1]: Reached target Remote File Systems.

C6:netfs服务

C7:remote-fs.target


day 35集群架构_第1张图片
day 35集群架构_第2张图片
day 35集群架构_第3张图片
day 35集群架构_第4张图片
day 35集群架构_第5张图片
day 35集群架构_第6张图片

提高性能,但会降低数据安全。一般情况,生产环境不推荐使用。除非对性能要求很高,对数据可靠性不要求的场合。

# sync:该参数和async相反。有I/O操作时,都会同步处理I/O,即把数据同步写入硬盘。此参数会牺牲一点I/O性能,但是,换来的是掉电后数据的安全性。※

# atime:在每一次数据访问时,会同步更新访问文件的inode时间戳,是默认选项,在高并发的情况下,建议通过明确加上noatime,来取消这个默认项,以到达提升I/O性能,优化I/O的目的。

# ro:以只读的方式挂载一个文件系统。

# rw:以可写的方式挂载一个文件系统。※

# auto:能够被自动挂载通过-a选项。

# noauto:不会自动挂载文件系统。

# defaults:这是fstab里的默认值,包括rw,suid, dev, exec, auto, nouser,and async,默认情况大部分都是默认值。

# exec:允许文件系统执行二进制文件,取消这个参数,可以提升系统安全。

# noexec :在挂载的文件系统中不允许直接执行任何二进制的程序,注意,仅对二进制程序有效,即使设置了noexec, shell, php程序还是可以执行的。

# noatime 访问文件时不更新文件的inode时间截,高并发环境下,推荐显式应用该选项,可以提高系统IO性能。※

# nodiratime:不更新文件系统上的directory inode时间戳,高并发环境,推荐显式应用该选项,可以提高系统IO性能。※ 

# nosuid:不允许set-user-identifier or set-group-identifier位生效。

# suid:允许set-user-identifier or set-group-identifier位生效。

# nouser:禁止一个普通用户挂载该文件系统,这是默认挂载时的默认选项。

remount:尝试重新挂载一个已经挂载了的文件系统,这通常被用来改变一个文件系统的挂载标志,从而使得一个只读文件系统变的可写,这个动作不会改变设备或者挂载点。当系统故障时进入single或rescue模式修复系统时,会发现根文件系统经常会变成只读文件系统,不允许修改,此时该命令就派上用场了。具体命令为: mount -o remount,rw /,表示将根文件系统重新挂载使得可写。single或rescue模式修复系统时这个命令十分重要。※

dirsync: 目录更新时同步写入磁盘*。


NFS服务器端配置: /data 172.16.1.0/24(rw,sync,all squash,anonuid-65534,anongid-65534)

NFS客户端挂载优化配置命令;

mount-t nfs -o nosuid, noexec, nodev, noatime, nodiratime, rsize=131072, wsize=131072 172. 16. 1. 31:/data//mnt #<==兼顾安全性能

口对NFS服务的所有服务器内核进行优化时,执行如下命令:

cat >>/ete/sysctl. conf<

net. core. wmem_default = 8388608

net. core. rmem_default = 8388608

net. core. rmem-max = 16777216 

net. core. wmem_max = 16777216

EOF

执行sysctl-p生效

如果卸载的时候提示"umount: /mnt: device is busy" ,需要退出挂载目录在进行卸载,如果是NFS Server宕机了,则需要强制卸载,可执行umount-lf/mnt

大型网站NFS网络文件系统的替代软件为分布式文件系统Moosefs(mfs).GlusterFS, FastDFS.

阿里云对应的存储服务NAS服务,还有OSS对象存储。


NFS服务可以让不同的客户端挂载使用同一个共享目录,也就是将其作为共享存储使用,这样可以保证不同节点客户端数据的一致性,在集群架构环境中经常会用到。如果是 Windows和Linux混合环境的集群系统,可以用samba来实现。

优点:

1)简单,容易上手,容易掌握。

2)NFS文件系统内数据是在文件系统之上的,即数据是能看得见的。

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

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

5)服务非常稳定。

局限:

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

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

3)客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网则问题不大)。

解决NFS性能问题:

1、使用CDN加速以及自己搭建文件缓存服务(squid,nginx,varnish)

2、把多个目录分配到不同的NFS服务器上。

3、弃用NFSF

4、使用分布式文件系统。

day 35集群架构_第7张图片

本章重点回顾

1) NFS服务的访问原理流程(会口述)。

2)NFS作为集群共享存储角色的搭建、部署

 3)NFS作为集群共享存储角色的排障,高级优化(会口述)。

4)mount命令的知识及参数,如-o(noatime,nodiratime,noexec,nosuid,rsize,wsize)等。

5)fstab文件知识以及fstab故障修复。

6)常用命令showmount, exportfs, umount(-If), rpcinfo.

7)NFS的优点、缺点,适合的应用场景,替代产品(FastDFS 、Moosefs(mfs), GlusterFS) 。

8)NFS架构上性能解决方案。

9)了解autofs.

你可能感兴趣的:(day 35集群架构)