综合架构

综合架构

rsync 远程同步

rsync能实现远程备份

 

rsync远程传输方式和守护进程方式区别?

临时

周期性任务

保证客户端与服务端数据一致?

--delete参数

 

限制推送传输的速率?

--bwlimit 限速

-P 显示速率

rsync守护进程配置?

安装

配置

启动

 

rsync进程运行的用户和rsync_backup虚拟用户区别?

rsync_backup:用于提供给客户端远程连接

rsync:是否往本地服务器写入客户端推送过来的数据

 

[root@nfs ~]# telnet 172.16.1.41 873

Trying 172.16.1.41...

telnet: connect to address 172.16.1.41: Connection refused #端口不可达

 

[root@nfs ~]# telnet 172.16.1.41 873

Trying 172.16.1.41...

telnet: connect to address 172.16.1.41: No route to host #防火墙拦截

 

#当rsync服务端没有创建数据存放的目录时,则会出现如下提示

[root@nfs ~]# sh /server/scripts/client_push_data.sh

@ERROR: chdir failed

rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

 

2019/01/07 08:57:33 [1272] rsync: chdir /backup failed

: No such file or directory (2)

 

#用户密码不对,或权限不是600

[root@nfs ~]# sh /server/scripts/client_push_data.sh

@ERROR: auth failed on module backup

rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

 

nfs存储

sersync实时同步

ssh远程连接服务

http协议

nginx

 

 

NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。

NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中

如果是大型网站, 会用到更复杂的分布式文件系统FastDFS(音频、小说、视频),glusterfs(iso镜像),HDFS

NFS(图片、)解决共享前端web共享

 

 

nfs

解决前端web静态资源的共享

解决前端web静态资源一致性

解决前端web磁盘空间的浪费

 

并不能解决网站访问的延时,如果想解决访问延时:静态资源--->CDN

 

 

 

本地文件操作方式

1.当用户执行mkdir命令, 该命令会调用shell解释器翻译给内核。

2.内核解析完成后会驱动对应的硬件设备,完成相应的操作。

 

程序

进程

线程

NFS实现原理(需要先了解[程序|进程|线程])

1.用户进程访问NFS客户端,使用不同的函数对数据进行处理

2.NFS客户端通过TCP/IP的方式传递给NFS服务端。

3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。

4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。

5.Rpc.mount进程判断客户端是否有对应的权限进行验证。

6.idmap进程实现用户映射和压缩

7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。

注意: rpc是一个远程过程调用,那么使用nfs必须有rpc服务

 

 

nfs

安装

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

配置

[root@nfs ~]# cat /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash)

授权

[root@nfs ~]# mkdir /data

[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/

启动

[root@nfs ~]# systemctl start nfs-server

[root@nfs ~]# systemctl enable nfs-server

检查

[root@nfs ~]# 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=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)

 

 

客户端操作

安装

[root@nfs ~]# yum install nfs-utils -y #rpc软件包、showmount命令

检查nfs是否有共享的内容

[root@web01 ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/24

 

挂载

[root@web01 ~]# mount -t nfs 172.16.1.31:/data /opt

[root@web01 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 99G 1.2G 98G 2% /

devtmpfs 477M 0 477M 0% /dev

tmpfs 488M 0 488M 0% /dev/shm

tmpfs 488M 7.7M 480M 2% /run

tmpfs 488M 0 488M 0% /sys/fs/cgroup

/dev/sda1 197M 102M 96M 52% /boot

tmpfs 98M 0 98M 0% /run/user/0

172.16.1.31:/data 99G 1.8G 98G 2% /opt

 

尝试写入数据测试

[root@web01 opt]# pwd

/opt

[root@web01 opt]# touch file

[root@web01 opt]# mkdir test

[root@web01 opt]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 7 10:37 file

drwxr-xr-x 2 nfsnobody nfsnobody 6 Jan 7 10:37 test

 

在客户端将nfs挂载信息写入/etc/fstab文件中

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

172.16.1.31:/data /opt nfs defaults 0 0

mount -a #验证fstab开机启动是否填写错误。

nfs挂载:客户端当前的目录仅仅只是nfs服务端共享目录的一个入口文件

nfs共享参数 参数作用

ro 只读权限

root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)

no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)

no_all_squash 无论NFS客户端使用什么账户访问,都不进行压缩

async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

 

rw* 读写权限

sync* 同时将数据写入到内存与硬盘中,保证不丢失数据

all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)

anonuid* 配置all_squash使用,指定NFS的用户UID,必须存在系统

anongid* 配置all_squash使用,指定NFS的用户UID,必须存在系统

 

验证ro权限

[root@nfs ~]# cat /etc/exports

/data 172.16.1.0/24(ro,sync,all_squash)

[root@nfs ~]# systemctl restart nfs-server

 

[root@web01 ~]# touch /opt/ttt

touch: cannot touch ‘/opt/ttt’: Read-only file system #通常这样的错误都是设定的ro权限导致

 

 

2.验证all_squash、anonuid、anongid权限

[root@nfs ~]# cat /etc/exports

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

创建用户

[root@nfs ~]# groupadd -g 666 www

[root@nfs ~]# useradd -u666 -g666 www

[root@nfs ~]# id www

uid=666(www) gid=666(www) groups=666(www)

授权

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

重启

[root@nfs ~]# systemctl restart nfs-server

 

客户端重新挂载验证

[root@web01 opt]# touch file

[root@web01 opt]# touch test

[root@web01 opt]# ll

total 4

-rw-r--r-- 1 666 666 0 Jan 7 11:29 file

-rw-r--r-- 1 666 666 0 Jan 7 11:29 test

 

客户端如果觉得666不好看,建议在客户端上创建同名的用户以及uid

[root@web01 ~]# groupadd -g 666 www

[root@web01 ~]# useradd -u 666 -g 666 www

[root@web01 ~]# id www

uid=666(www) gid=666(www) groups=666(www)

[root@web01 ~]# ll /opt/

total 4

-rw-r--r-- 1 www www 0 Jan 7 11:29 file

-rw-r--r-- 1 www www 0 Jan 7 11:29 test

 

1.NFS存储优点

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

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

 

2.NFS存储局限

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

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

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

 

3.NFS应用建议

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

2.必须将存储里的静态资源通过CDN缓存jpg\png\mp4\avi\css\js

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

 

例如:1_老男孩_lnmp架构.mp4

1 哪个组

老男孩 姓名

lnmp架构 内容

 

# sample /etc/exports file

共享的目录 共享给谁(共享的参数)

/ master(rw) trusty(rw,no_root_squash)

/projects proj*.local.domain(rw)

/usr *.local.domain(ro) @trusted(rw)

/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)

/pub *(ro,insecure,all_squash)

/srv/www -sync,rw server @trusted @external(ro)

/foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)

/build buildhost[0-9].local.domain(rw)

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值