首页
友链
统计
留言
更多
直播
壁纸
推荐
我的毛线
院长科技
Search
1
本站官方群:894703859------|诚邀各位大佬的入驻!
418 阅读
2
pxe 自动化安装系统
348 阅读
3
新款螺旋帽子编织#夏凉帽#合股线夏凉帽编织
308 阅读
4
10 个Linux Awk文本处理经典案例
306 阅读
5
软件安装
293 阅读
Linux
yaml
iptables
shell
ansible
ssl
命令
文件管理
用户权限
综合集群架构
三剑客
awk
sed
自动化
pxe
编织
编织视频
监控
prometheus
go
go占位符
vue
vue基础
vue项目
web
Nginx
html
vscode
html标签
html表格
css基础
css定位
css精灵图
code
html5
项目
js
jQuery
面向对象
kubernetes
k8s命令
k8s
k8s搭建
database
clickhouse
常用工具
微软
登录
/
注册
Search
标签搜索
基础
js
Nginx
css
webapi
jQuery
面向对象
command
项目
ansible
用户权限
go
html
文件管理
命令
综合集群架构
k8s
pxe
awk
vscode
JustDoIt
累计撰写
112
篇文章
累计收到
4
条评论
首页
栏目
Linux
yaml
iptables
shell
ansible
ssl
命令
文件管理
用户权限
综合集群架构
三剑客
awk
sed
自动化
pxe
编织
编织视频
监控
prometheus
go
go占位符
vue
vue基础
vue项目
web
Nginx
html
vscode
html标签
html表格
css基础
css定位
css精灵图
code
html5
项目
js
jQuery
面向对象
kubernetes
k8s命令
k8s
k8s搭建
database
clickhouse
常用工具
微软
页面
友链
统计
留言
直播
壁纸
推荐
我的毛线
院长科技
搜索到
3
篇与
的结果
2023-11-03
NFS基本概述
1.NFS基本概述NFS是Network File System的缩写及网络文件系统。主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS为什么要使用NFS服务进行数据存储1.实现多台服务器之间数据共享2.实现多台服务器之间数据的一致2.NFS应用场景下面我将通过图解给大家展示集群需要共享存储服务的理由。1.A用户传图片到WEB1服务器2.B用户访问这张图片,结果B用户访问的请求分发到了WEB2,因为WEB2上没有这张图片,结果B用户无法看到A用户传的图片。1.如果有共享存储的情况, A用户上传图片无论分发到WEB1还是WEB2, 最终都存储至共享存储2.在当B用户访问图片时,无论分发到WEB1还是WEB2上,最终也都会去共享存储上访问,这样就可以访问到资源了3.NFS实现原理本地文件操作方式1.当用户执行mkdir命令, 该命令会通过shell解释器翻译给内核,由内核解析完成后驱动硬件,完成相应的操作。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服务4.NFS服务安装1.环境准备 服务器系统 角色 外网IP 内网IP CentOS 7.5 NFS服务端 eth0:10.0.0.31 eth1:172.16.1.31 CentOS 7.5 NFS客户端 eth0:10.0.0.41 eth1:172.16.1.41 注意: 不要忘记关闭防火墙, 以免默认的防火墙策略禁止正常的NFS共享服务//关闭Firewalld防火墙 [root@xuliangwei ~] [root@xuliangwei ~] //关闭selinux防火墙 [root@xuliangwei ~] [root@xuliangwei ~] 2.安装NFS-Server[root@nfs-server ~] 3.NFS服务程序的配置文件为/etc/exports默认里面没有任何内容。我们可以按照共享目录的路径 允许访问的NFS客户端(共享权限参数)格式,定义要共享的目录与相应的权限。exports配置文件格式NFS共享目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...)NFS共享目录 NFS客户端地址(参数1,参数2,...)如果想要把/data目录共享给172.16.1.0/24网段内的所有主机1.主机都拥有读写权限2.在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失3.将所有用户映射为本地的匿名用户(nfsnobody)//注意: NFS客户端地址与权限之间没有空格 [root@nfs-server ~] /data 172.16.1.0/24(rw,sync,all_squash) //在NFS服务器上建立用于NFS文件共享的目录,并设置对应权限 [root@nfs-server ~] [root@nfs-server ~] //NFS共享目录会记录至/var/lib/nfs/etab,如果该目录不存在共享信息,请检查/etc/exports是否配置错误 4.在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call远程过程调用, 服务将NFS服务器的IP地址和端口号信息发送给客户端。因此,在启动NFS服务之前,需要先重启并启用rpcbind服务程序,同时都加入开机自启动[root@nfs-server ~] [root@nfs-server ~] [root@nfs-server ~] [root@nfs-server ~] 5.NFS挂载卸载NFS客户端的配置步骤也十分简单。先使用showmount命令,查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。1.安装客户端工具,仅启动rpcbind服务[root@nfs-client ~] [root@nfs-client ~] [root@nfs-client ~] 2.客户端使用showmount -e查看远程服务器rpc提供的可挂载nfs信息[root@nfs-client ~] Export list for 172.16.1.31: /data 172.16.1.0/24 3.在NFS客户端创建一个挂载目录, 使用mount命令并结合-t参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的IP地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录。[root@nfs-client ~] [root@nfs-client ~] //查看挂载信息(mount也可以查看) [root@nfs-client ~] Filesystem Size Used Avail Use% Mounted on /dev/sda3 62G 845M 58G 2% / tmpfs 244M 0 244M 0% /dev/shm /dev/sda1 190M 26M 155M 14% /boot 172.16.1.31:/data 62G 880M 58G 2% /nfsdir 4.挂载成功后可以进行增删改操作 [root@nfs-client ~]# echo "nfs-client" >> /mnt/test.txt [root@nfs-client ~]# cat /data/test.txt nfs-client 5.如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中[root@nfs-client ~] 172.16.1.31:/data /nfsdir nfs defaults 0 0 6.如果不希望使用NFS共享, 可进行卸载[root@nfs-client ~] 注意:卸载的时候如果提示”umount.nfs: /nfsdir: device is busy” 1.切换至其他目录, 然后在进行卸载。 2.NFS Server宕机, 强制卸载umount -lf /nfsdir 7.在企业工作场景,通常情况NFS服务器共享的只是普通静态数据(图片、附件、视频),不需要执行suid、exec等权限,挂载的这个文件系统只能作为数据存取之用,无法执行程序,对于客户端来讲增加了安全性。例如: 很多木马篡改站点文件都是由上传入口上传的程序到存储目录。然后执行的。通过mount -o指定挂载参数,禁止使用suid,exec,增加安全性能 [root@nfs-client ~] 8.有时也需要考虑性能相关参数[可选]通过mount -o指定挂载参数,禁止更新目录及文件时间戳挂载 [root@nfs-client ~] 6.NFS配置文件执行man exports命令,然后切换到文件结尾,可以快速查看如下样例格式: nfs共享参数 参数作用 rw* 读写权限 ro 只读权限 root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用) no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用) all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用) no_all_squash 无论NFS客户端使用什么账户访问,都不进行压缩 sync* 同时将数据写入到内存与硬盘中,保证不丢失数据 async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 anonuid* 配置all_squash使用,指定NFS的用户UID,必须存在系统 anongid* 配置all_squash使用,指定NFS的用户UID,必须存在系统 1.验证ro权限1.服务端修改rw为ro参数 [root@nfs01 ~] /data 172.16.1.0/24(ro,sync,all_squash) [root@nfs01 ~] 2.客户端验证 [root@backup ~] [root@backup ~] Filesystem Size Used Avail Use% Mounted on 172.16.1.31:/data 98G 1.7G 97G 2% /mnt [root@backup mnt] touch: cannot touch ‘file’: Read-only file system 2.验证all_squash、anonuid、anongid权限//1.服务端配置 [root@nfs01 ~] /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) //2.服务端需要创建对应的用户 [root@nfs01 ~] [root@nfs01 ~] [root@nfs01 ~] uid=666(www) gid=666(www) groups=666(www) //3.重载nfs-server [root@nfs01 ~] [root@nfs01 ~] /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,secure,root_squash,all_squash) //4.授权共享目录为www [root@nfs01 ~] [root@nfs01 ~] drwxr-xr-x 3 www www 53 Sep 3 02:08 /data/ //5.客户端验证 [root@backup ~] [root@backup ~] //6.客户端查看到的文件,身份是666 [root@backup ~] drwxr-xr-x 2 666 666 6 Sep 3 02:08 rsync_dir -rw-r--r-- 1 666 666 0 Sep 3 02:08 rsync_file //7.客户端依旧能往/mnt目录下写文件 [root@backup mnt] [root@backup mnt] [root@backup mnt] drwxr-xr-x 2 666 666 6 Sep 3 03:05 111 -rw-r--r-- 1 666 666 0 Sep 3 03:05 fff //8.建议:将客户端也创建一个uid为666,gid为666,统一身份,避免后续出现权限不足的情况 [root@backup mnt] [root@backup mnt] [root@backup mnt] uid=666(www) gid=666(www) groups=666(www) //9.最后检查文件的身份 [root@backup mnt] total 4 drwxr-xr-x 2 www www 6 Sep 3 03:05 111 -rw-r--r-- 1 www www 0 Sep 3 03:05 fff 6.NFS存储小结NFS存储优点1.NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。2.NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。NFS存储局限1.存在单点故障, 如果构建高可用维护麻烦。2.NFS数据明文, 并不对数据做任何校验。3.客户端挂载无需账户密码, 安全性一般(内网使用)生产应用建议1.生产场景应将静态数据尽可能往前端推, 减少后端存储压力2.必须将存储里的静态资源通过CDN缓存(jpg\png\mp4\avi\css\js)3.如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用7.NFS案例实践准备3台虚拟机服务器,并且请按照要求搭建配置NFS服务。NFS服务端(A)NFS客户端(B)NFS客户端(C)1.在NFS服务端(A)上共享/data/w(可写)及/data/r(只读)2.在NFS客户端(B/C)上进行挂载环境准备 服务器系统 角色 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.NFS服务端配置//1.安装nfs [root@nfs01 ~] //2.配置nfs [root@nfs01 ~] /data/r 172.16.1.0/24(ro,sync,all_squash,anonuid=666,anongid=666) /data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) //3.创建对应用户 [root@web01 ~] [root@web01 ~] [root@nfs01 ~] uid=666(www) gid=666(www) groups=666(www) //4.创建共享目录 [root@nfs01 ~] [root@nfs01 ~] //5.重启NFS [root@nfs01 ~] 2.NFS-客户端配置//1.安装nfs工具 [root@backup-41 ~]# yum install nfs-utils -y [root@backup-41 ~]# systemctl restart rpcbind //2.准备本地挂载点目录 [root@backup-41 ~]# mkdir /data/{r,w} -p //3.准备对应用户 [root@backup-41 ~]# groupadd -g 666 www [root@backup-41 ~]# useradd -u 666 -g www www [root@backup-41 ~]# id www uid=666(www) gid=666(www) groups=666(www) //4.查看远端共享的nfs目录 [root@backup-41 ~]# showmount -e 172.16.1.31 Export list for 172.16.1.31: /data/w 172.16.1.0/24 /data/r 172.16.1.0/24 //5.挂载对应目录站点 [root@backup-41 ~]# mount -t nfs 172.16.1.31:/data/w /data/w/ [root@backup-41 ~]# mount -t nfs 172.16.1.31:/data/r /data/r/ [root@backup-41 ~]# df -h Filesystem Size Used Avail Use% Mounted on 172.16.1.31:/data/w 50G 1.6G 49G 4% /data/w 172.16.1.31:/data/r 50G 1.6G 49G 4% /data/r //6.测试/data/r读权限 [www@backup-41 r]$ pwd /data/r [www@backup-41 r]$ cat edu.com This is Nfs to Oldboy [www@backup-41 r]$ touch edu touch: cannot touch ‘edu’: Read-only file system //7.测试/data/w写权限 [root@backup-41 r]# cd /data/w/ [root@backup-41 w]# pwd /data/w [root@backup-41 w]# touch bbbback [root@backup-41 w]# ll total 0 -rw-r -rw-r //8.实现开机自动挂载 [root@backup-41 ~]# echo "172.16.1.31:/data/r /data/r nfs defaults 0 0" >>/etc/fstab [root@backup-41 ~]# echo "172.16.1.31:/data/w /data/w nfs defaults 0 0" >>/etc/fstab #注意: 当将远程挂载设备写入/etc/fstab文件后,一定要执行mount -a [root@backup-41 ~]# mount -a [root@backup-41 ~]# df -h Filesystem Size Used Avail Use% Mounted on 172.16.1.31:/data/r 50G 1.6G 49G 4% /data/r 172.16.1.31:/data/w 50G 1.6G 49G 4% /data/w #如果编写错误会有如下提示 [root@backup-41 ~]# mount -a mount.nfs: access denied by server while mounting 172.16.1.31:/dataa/w //9.卸载nfs #1.正常卸载 [root@backup-41 ~]# umount /data/w/ #2.强制卸载 [root@backup-41 ~]# umount -lf /data/w/ 3.NFS扩展项//1.扩展:无需重启NFS服务平滑加载配置文件 [root@nfs01 r] /data/r 172.16.1.0/24(ro) /data/p 172.16.1.0/24(ro) /data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) [root@nfs01 r] exporting 172.16.1.0/24:/data/w exporting 172.16.1.0/24:/data/p exporting 172.16.1.0/24:/data/r //2.扩展:nfs客户端挂载参数 [root@backup-41 ~] //3.扩展:nfs客户端永久挂载参数 [root@backup-41 ~] 172.16.1.31:/data/r /data/r nfs defaults,noatime,nodiratime,noexec,nodev,nosuid 0 0 172.16.1.31:/data/w /data/w nfs defaults,noatime,nodiratime,noexec,nodev,nosuid 0 0 //4.扩展:客户端检查挂载参数是否生效 [root@backup-41 ~] 等价于 [root@backup-41 ~] 8.AutoFS自动挂载无论是Samba服务还是NFS服务, 都要把挂载信息写入到/etc/fstab中, 这样远程共享资源就会自动随服务器开机而进行挂载。1.虽然很方便,但挂载资源过多会造成网络带宽以及服务器硬件资源带来很大的负载2.如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。3.每次使用之前执行mount手动挂载,这是个不错的选择, 但每次都需要先挂载在使用, 会非常的麻烦那么autofs自动挂载服务可以帮我们解决这一问题。autofs服务程序是一种守护进程, 当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。autofs服务程序是在用户需要使用该文件系统时才去动态挂载, 从而节约了网络资源和服务器的硬件资源autofs自动挂载服务, 有两种挂载方式:直接:direct /- 子配置文件必须写本地绝对路径间接: indirect /path 子配置文件写相对于/path的子目录1.客户端安装autofs自动挂载[root@nfs-client ~] [root@nfs-client ~] [root@nfs-client ~] 2.不要将设备挂载信息都写入到autofs服务的主配置/etc/auto.master文件中,会让主配置文件臃肿不堪,不利于服务执行效率,也不利于日后修改里面的配置内容 [root@http-server ~]# grep "dir" /etc/auto.master +dir:/etc/auto.master.d 3.直接挂载方式: 本地的挂载点是绝对路径 [root@nfs-client ~]# vim /etc/auto.master.d/nfs.autofs /- /etc/auto.nfs_direct [root@nfs-client ~]# vim /etc/auto.nfs_direct /nfsdir -fstype=nfs,rw,sync,soft,nosuid,nodev 192.168.56.11:/data [root@nfs-client ~]# systemctl restart autofs 间接挂载: 本地路径和服务端的路径都没有直接写绝对路径//名称后缀必须是autofs,访问本地对应目录自动远端nfs [root@nfs-client ~] /nfsdir /etc/auth.nfs_share [root@nfs-client ~] * -rw,sync,soft,nosuid,nodev,'sec=krb5p' 192.168.56.11:/data/& //重启autofs服务 [root@nfs-client ~] 注意:如果有kerberos验证则需要启动nfs-secure并加入开机自启动使用df命令无法查看具体挂载内容, 使用mount命令可以转 xuliangwei.com
2023年11月03日
8 阅读
0 评论
0 点赞
2023-11-03
Rsync基本概述
1.Rsync基本概述rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用。rsync官方地址:传送门rsync监听端口:873rsync运行模式:C/Srsync常见的两种备份方式完全备份增量备份假设客户端上有file1 file2 file3文件,服务端上有file1文件,现要将客户端上的数据备份至服务端完全备份,将客户端所有的数据内容file1 file2 file3全部备份至服务端 (效率低下, 占用空间)增量备份,将客户端的file2 file3增量备份至服务端 (提高备份效率,节省空间, 适合异地备份 )2.Rsync应用场景关于数据同步的两种方式1.推: 所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)2.拉: rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大3.大量服务器备份场景4.异地备份实现思路3.Rsync传输模式Rsync大致使用三种主要的数据传输方式本地方式远程方式守护进程//Local: 本地传输 rsync [OPTION...] SRC... [DEST] Access via remote shell: 远程通道传输 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: 守护进程方式传输 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST Rsync命令对应选项-a -v -z -r -t -o -p -g -l -P -D -L -e --exclude=PATTERN --exclude-from=file --bwlimit=100 --partial --delete 1.本地传输方式: 单个主机本地之间的数据传输(此时类似于cp命令)Local: rsync [OPTION...] SRC... [DEST] rsync [options] SRC... [DEST] rsync -avz /etc/passwd /tmp/ 2.远程通道传输方式: 通过ssh通道传输数据,类似scp命令 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] rsync -avz
[email protected]
:/root/oldboyedu.com ./ rsync -avz
[email protected]
:/root/ /backup/ rsync -avz
[email protected]
:/root /backup/ Pull rsync [options] [USER@] HOST SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST rsync -avz /backup/2018-07-23
[email protected]
:/tmp/ Push rsync [options] SRC... [USER@] HOST [DEST] 远程通道传输方式问题必须通过ssh协议才可以传输使用ssh系统用户,不安全3.守护进程传输方式: rsync自身非常重要的功能(不使用系统用户,更加安全) Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] [root@nfs01 ~]# rsync -avz
[email protected]
::backup/ /mnt/ rsync [OPTION...] [USER@] HOST:: SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST [root@nfs01 ~]# rsync -avz /mnt/
[email protected]
::backup/ rsync [OPTION...] SRC... [USER@] HOST:: [DEST] 4.Rsync服务实践 角色 外网IP(NAT) 内网IP(LAN) 主机名 Rsync服务端 eth0:10.0.0.41 eth1:172.16.1.41 backup Rsync客户端 eth0:10.0.0.31 eth1:172.16.1.31 nfs 1.第一个里程碑,安装rsync软件[root@backup ~] 2.第二个里程碑,配置/etc/rsyncd.conf[root@backup ~]# cat /etc/rsyncd.conf uid = rsync gid = rsync 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.password log file = /var/log/rsyncd.log ##################################### [backup] comment = welcome to oldboyedu backup! path = /backup [root@backup ~]# vim /etc/rsyncd.conf # 全局模块 uid = rsync gid = rsync 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 ##局部模块 [backup] comment = commit path = /backup 3.第三个里程碑,创建用户(运行rsync服务的用户身份) [root@backup ~] [root@backup ~] [root@backup ~] 4.第四个里程碑,创建虚拟用户密码文件(用于客户端连接时使用的用户) [root@backup ~] [root@backup ~] 5.第五个里程碑,启动rsync服务,并加入开机自启[root@backup ~] [root@backup ~] 启动后检查对应端口 [root@bogon ~] Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4758/rsync 6.第六个里程碑,Rsync客户端配置, 配置密码并设置权限方式一:适合终端执行指定用户密码文件 [root@nfs01 ~] [root@nfs01 ~] [root@nfs01 ~] 方式二:适合写脚本,强烈推荐方式 [root@nfs01 ~] 实战一: 客户端推送数据至Rsync服务端[root@nfs01 ~]# rsync -avz /backup/
[email protected]
::backup/ 实战二: 客户端拉取Rsync服务端数据至本地[root@nfs01 ~]#rsync -avz
[email protected]
::backup /backup/ --password-file=/etc/rsync.password 实战三: Rsync实现数据无差异同步 [root@nfs01 ~]# rsync -avz --delete
[email protected]
::backup/ /data/ --password-file=/etc/rsync.password [root@nfs01 ~]# rsync -avz --delete /data/
[email protected]
::backup/ --password-file=/etc/rsync.password 5.Rsync备份案例已知 3 台服务器主机名分别为 web01、backup 、nfs,主机信息见下表: 角色 外网IP(NAT) 内网IP(LAN) 主机名 WEB eth0:10.0.0.7 eth1:172.16.1.7 web01 NFS eth0:10.0.0.31 eth1:172.16.1.31 nfs01 Rsync eth0:10.0.0.41 eth1:172.16.1.41 backup 客户端需求1.客户端每天凌晨01点在服务器本地打包备份(系统配置文件、日志文件、其他目录、应用配置等文件)2.客户端备份的数据必须存放至以主机名_IP地址_当前时间命名的目录中, 例/backup/nfs-server_172.16.1.31_2018-09-023.客户端最后通过rsync推送本地已打包好的备份文件至backup服务器4.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间服务端需求1.服务端部署rsync,用于接收客户端推送过来的备份数据2.服务端需要每天校验客户端推送过来的数据是否完整3.服务端需要每天校验的结果通知给管理员4.服务端仅保留6个月的备份数据,其余的全部删除注意:所有服务器的备份目录必须都为/backup建议备份的数据内容如下 /etc/rc.local /etc/fstab /etc/hosts /var/spool/cron/ /etc/firewalld /server/scripts /var/log/ 1.客户端备份脚本实现思路[low版][root@nfs01 backup] #!/bin/bash Path=/backup Host=$(hostname) Addr=$(ifconfig eth1|awk 'NR==2{print $2}') Date=$(date +%F) Dest=${Path}/${Host}_${Addr}_${Date} [ -d $Dest ] || mkdir -p $Dest cp -rp /etc/passwd /etc/fstab /etc/rc.d/rc.local /var/spool/cron $Dest/ cp -rp /server/ $Dest/ cp -rp /etc/rsyncd.conf $Dest/ Rsync_User=rsync_backup Rsync_Addr=172.16.1.41 Rsync_Module=backup export RSYNC_PASSWORD=123456 rsync -avz $Path/ ${Rsync_User}@${Rsync_Addr}::${Rsync_Module} find $Path/ -type d -mtime +7 -exec rm -rf {} \; 2.客户端备份脚本实现思路,并将客户端备份的数据进行md5加密[优化版] [root@nfs01 ~] #!/bin/bash Path=/backup Host=$(hostname) Addr=$(ifconfig eth1|awk 'NR==2{print $2}') Date=$(date +%F) Dest=${Path}/${Host}_${Addr}_${Date} [ -d $Dest ] || mkdir -p $Dest cd / && \ tar czf $Dest/system.tar.gz etc/passwd etc/fstab etc/rc.d/rc.local var/spool/cron tar czf $Dest/user.tar.gz server/ tar czf $Dest/config.tar.gz etc/rsyncd.conf md5sum $Dest/*.tar.gz > $Dest/flag_${Date} Rsync_User=rsync_backup Rsync_Addr=172.16.1.41 Rsync_Module=backup export RSYNC_PASSWORD=123456 rsync -avz $Path/ ${Rsync_User}@${Rsync_Addr}::${Rsync_Module} find $Path/ -type d -mtime +7|xargs rm -rf 3.客户端编写定时任务,让备份每天凌晨1点进行备份[root@nfs01 ~] 00 01 * * * /bin/bash /server/scripts/backup_rsync.sh &>/dev/null 4.服务端校验客户端数据, 并将结果以邮件方式发给管理员1).服务端实现邮件功能[root@backup /]# yum install mailx -y [root@backup /]# vim /etc/mail.rc set
[email protected]
set smtp=smtps://smtp.qq.com:465 set
[email protected]
set smtp-auth-password= #客户端授权码 set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb/ 2).服务端使用md5校验客户端数据,并将检查结果发送给管理员[root@backup ~] Path=/backup Date=$(date +%F) find $Path -type f -name "flag_$Date"|xargs md5sum -c >$Path/result_$Date mail -s "Rsync_backup $(date +%F)"
[email protected]
<$Path/result_$Date find $Path/ -type f -name "result*" -mtime +3 -exec rm -f {} \; find $Path/ -type d -mtime +180|xargs rm -rf 3).服务端编写定时任务脚本 [root@backup backup]# crontab -l 00 05 * * * /bin/bash /server/scripts/check_backup.sh &>/dev/null 6.Rsync备份思考1.要备份什么?WEB APP部署程序配置文件 MYSQL数据库部署程序及其配置文件 MySQL数据文件 MySQK的binlog日志、慢查询日志、错误日志 系统的安全日志、内核的日志、sudo日志、rsyslog日志 应用程序日志 access.log error.log 静态数据文件 /usr/local/nginx /opt/mysql /etc/php /etc/my.cnf /soft/webapp/nginx /soft/webapp/apache /soft/webapp/tomcat /soft/scripts/crond_nginx.sh /soft/scripts/crond_rsync.sh /data/mysql/mysql3306/{data,logs,conf,tmp} /data/mysql/mysql3307/{data,logs,conf,tmp} /data/mysql/mysql3308/{data,logs,conf,tmp} 思考2:如何备份?1.根据时间维护划分 实时备份(同步备份) 非实时备份(异步备份) 2.根据地域划分 同IDC备份部署 跨IDC备份部署 本地->云主机->异地主机 备份3:备份可恢复性?时间成本 维护成本 备份4:备份策略备份保留时间? 1个月, 1年或永久? 备份恢复校验 1个月模拟一次,半年演练一次? 这里牵扯到备份有效性和备份时效性的一个校验。 万一备份服务器挂了怎么办? 备份之后是否还有备份 转 xuliangwei.com
2023年11月03日
4 阅读
0 评论
0 点赞
2023-11-03
CentOS7系统特性
Centos7新的主流操作系统, Centos7带来了很多的功能改变。本地虚拟机环境VmWare、KVM、Virtaulbox 操作系统 Centos6.9 Centos7.5 系统基础服务变化 操作 Centos6 Centos7 对比 自动补全 只支持命令、文件名 支持命令、选项、文件名 文件系统 ext4 xfs 随机读写更快 repo仓库 yum yum-config-manager 添加仓库便捷 修改主机名 /etc/sysconfig/network /etc/hostname hostnamectl 修改时区 /etc/sysconfig/clock timedatectl set-timezone 更方便 修改字符集 /etc/sysconfig/il8n /etc/locale.conf localectl 防火墙 iptables firewalld 服务管理 System V init systemd 时间同步服务 ntp chrony 1.系统主机名 操作 centos6 cetos7 临时修改 hostname hostname 永久修改 /etc/sysconfig/network /etc/hostname hostnamectl set-hostname #centos7永久修改 2.系统文件目录结构 centos6 cetos7 bin bin -> usr/bin sbin sbin -> usr/sbin lib lib -> usr/lib 3.网络接口变化net.ifnames 基于固件、拓扑、进行自动分配网卡名称,缺点比eth0、更难读,如ens32biosdevname 根据戴尔服务器系统的BIOS提供的信息对网络接口进行重命名,如em1默认命名规则 eth0 eth1 eth2biosdevname em1 em2 em3net.ifnames ens33 ens34 ens35centos6与centos7使用网络接口规则 Centos6 Centos7 net.ifnames=0 biosdevname=1 默认命名规则 net.ifnames=1 biosdevname=1 默认命名规则 centos7使用ip命令查看ip地址方法1.查看ip地址信息 ip addr2.添加多个IP地址 ip addr add 192.168.56.200/24 dev eth0:13.控制网络接口 ip link set dev eth0 downSystemd服务概述Systemd初始Systemd是Centos7新采用的一套管理体系,可以实现启动及进程服务管理等,对比Centos6系统之前所采用sysVini体系,带来了很多变化。Centos7支持并行启动,显著提高开机启动效率(测试6与7区别)Centos7关机只关闭正在运行的服务,Centos6关机会从头关到尾Centos7服务的启动与停止不在需要init.d下的脚本 Centos6 Centos7 启动项管理 chkconfig systemctl 服务管理 service systemctl 系统启动级别 init systemctl 日志管理 syslog Systemd-journal systemd启动级别在Centos7中没有级别的概念,而是使用target目标来涵盖启动级别的概念设置系统启动运行级别 SysVinit Systemd 关闭系统 0 runlevel0.target,poweroff.target 单用户模式 1,s,single runlevel1.target,rescue.target 多用户模式 2 runlevel2.target,multi-user.target 多用户带网络模式 3 runlevel3.target,multi-user.target 多用户图形化模式 5 runlevel5.target,graphical-user.target 重启操作系统 6 runlevel6.target,reboot.target 设置系统启动运行级别 Centos6 Centos7 设置启动级别 init3 systemctl set-default multi-user.target 获取当前启动级别 runlevel systemctl get-default systemd服务管理命令 选项(非必须) 执行命令 单元名称(非必须)systemctl [OPTIONS...]COMMAND[NAME...] 操作 Centos6 Centos7 启动服务 /etc/init.d/crond start systemctl start crond 停止服务 /etc/init.d/crond stop systemctl stop crond 重启服务 /etc/init.d/crond restart systemctl restart crond 查看状态 /etc/init.d/crond status systemctl status crond 开机启动 chkconfig --level 35 crond on systemctl enable crond 开机禁用 chkconfig crond off systemctl disable crond 禁止运行 systemctl umask crond Centos7系统优化 yum install net-tools vim tree htop iftop \ iotop lrzsz sl wget unzip telnet nmap nc psmisc \ dos2unix bash-completion iotop iftop sysstat -y systemctl disable firewalld systemctl stop firewalld systemctl status firewalld sed -ri 's#(^SELINUX=).*#\1disabled#g' /etc/selinux/config sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config vim /etc/selinux/config setenforce 0 echo '* - nofile 65535' >> /etc/security/limits.conf 核心架构地址规划网站核心架构所需虚拟机IP及主机名规划: wanip lanip hostname 10.0.0.5 172.16.1.5 lb01 10.0.0.6 172.16.1.6 lb02 10.0.0.7 172.16.1.7 web01 10.0.0.8 172.16.1.8 web02 10.0.0.9 172.16.1.9 web03 10.0.0.31 172.16.1.31 nfs01 10.0.0.41 172.16.1.41 backup 10.0.0.51 172.16.1.51 db01 10.0.0.61 172.16.1.61 m01 10.0.0.71 172.16.1.71 zabbix 网站核心架构vmware和xshell软件里虚拟机名字规划: 01-10.0.0.5-keepalived-lb01 02-10.0.0.6-keepalived-lb02 03-10.0.0.7-nginx-web01 04-10.0.0.8-nginx-web02 05-10.0.0.9-nginx-web03 06-10.0.0.31-nfsfilesystem-nfs01 07-10.0.0.41-rsync-backup 08-10.0.0.51-mysql-db01 09-10.0.0.61-manage-m01 10-10.0.0.71-zabbix 转 xuliangwei.com
2023年11月03日
15 阅读
0 评论
0 点赞