首页
友链
统计
留言
更多
直播
壁纸
推荐
我的毛线
院长科技
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
常用工具
微软
页面
友链
统计
留言
直播
壁纸
推荐
我的毛线
院长科技
搜索到
28
篇与
的结果
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 点赞
2023-11-03
Firewalld防火墙
1.防火墙基本概述RHEL/CentOS 7系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems, Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。相较于传统的Iptables防火墙管理工具firewalld支持动态更新,并加入了区域zone的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。注意一个zone区域仅能绑定一个网卡, 设定不同的匹配规则一个zone区域又可以针对不同的源地址设定不同的规则Firewalld相关配置文件默认定义的模板配置文件/usr/lib/firewalld存储规则配置文件 /etc/firewalld/2.防火墙区域概述 区域 默认规则策略 trusted 允许所有的数据包流入与流出 home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 internal 等同于home区域 work 拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 block 拒绝流入的流量,除非与流出的流量相关 drop 拒绝流入的流量,除非与流出的流量相关 3.防火墙基本指令参数为了能够使用firwalld服务和相关工具去管理防火墙,必须启动firwalld服务,并且需要禁用以前旧防火墙相关服务, firewall-config(图形界面), firewall-cmdfirewalld的规则分两种状态:runtime运行时: 修改规则马上生效,但是临时生效 [不建议]permanent持久配置: 修改后需要reload重载才会生效 [强烈推荐]firewall-cmd命令分类 参数 作用 zone区域相关指令 --get-default-zone 查询默认的区域名称 --set-default-zone=<区域名称> 设置默认的区域,使其永久生效 --get-active-zones 显示当前正在使用的区域与网卡名称 --get-zones 显示总共可用的区域 --new-zone= 新增区域 services服务相关指令 --get-services 显示预先定义的服务 --add-service=<服务名> 设置默认区域允许该服务的流量 --remove-service=<服务名> 设置默认区域不再允许该服务的流量 Port端口相关指令 --add-port=<端口号/协议> 设置默认区域允许该端口的流量 --remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量 Interface网卡相关指令 --add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域 --change-interface=<网卡名称> 将某个网卡与区域进行关联 其他相关指令 --list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息 --reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 4.防火墙区域配置策略1.为了能正常使用firwalld服务和相关工具去管理防火墙,必须启动firwalld服务, 同时关闭以前旧防火墙相关服务//禁用旧版防火墙服务 [root@xuliangwei ~] [root@xuliangwei ~] //启动firewalld防火墙, 并加入开机自启动服务 [root@xuliangwei ~] [root@xuliangwei ~] //备份firewalld相关配置文件(重要) [root@Firewalld ~] 2.zone区域相关指令 [root@xuliangwei ~]# firewall-cmd --get-default-zone public [root@xuliangwei ~]# firewall-cmd --set-default-zone=work [root@xuliangwei ~]# firewall-cmd --permanent --add-service=http --zone=work [root@xuliangwei ~]# firewall-cmd --change-interface=eth0 --zone=work 3.将某网段IP路由至home区域, 由该区域规则进行匹配决定是否放行[root@Firewalld ~] [root@Firewalld ~] success [root@Firewalld ~] success //检查相关规则 [root@Firewalld ~] home sources: 192.168.56.0/24 public interfaces: eth0 br0 vnet0 4.查询firewald相关规则 [root@Firewalld ~]# firewall-cmd --get-active-zones home sources: 192.168.69.0/24 work interfaces: eth0 br0 vnet0 [root@xuliangwei ~]# firewall-cmd --list-all --zone=work work (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client 'http' ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: 5.查询public区域是否允许请求SSH HTTPS协议的流量[root@Firewalld ~] yes [root@Firewalld ~] no 5.防火墙服务访问策略1.配置防火墙, 允许请求http https协议的流量设置为永久允许,并立即生效[root@Firewalld ~] success //重启加载生效 [root@Firewalld ~] success //检查相关配置 [root@Firewalld ~] ssh dhcpv6-client 'http https' 2.配置防火墙, 允许请求php-fpm服务的流量设置为永久允许,并立即生效[root@Firewalld ~]# cd /usr/lib/firewalld/services/ [root@Firewalld services]# cp http.xml php-fpm.xml [root@Firewalld services]# cat php-fpm.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>PHP-FPM</short> <description> php-fpm </description> <port protocol="tcp" port="9000"/> </service> [root@Firewalld ~]# firewall-cmd --permanent --add-service=php-fpm [root@Firewalld ~]# firewall-cmd --list-services ssh dhcpv6-client 'http https php-fpm' [root@Firewalld ~]# yum install php-fpm -y [root@Firewalld ~]# systemctl start php-fpm ~ telnet 192.168.56.11 9000 Trying 192.168.56.11... Connected to 192.168.56.11. Escape character is '^]'. 3.配置防火墙, 请求https协议的流量设置为永久拒绝,并立即生效[root@Firewalld ~] success [root@Firewalld ~] success //检查当前活动服务 [root@Firewalld ~] ssh dhcpv6-client http 6.防火墙端口访问策略1.配置防火墙, 访问8080/tcp 8080/udp端口的流量策略设置为永久允许, 并立即生效 [root@Firewalld ~]# firewall-cmd --permanent --add-port=8080/udp --add-port=8080/tcp [root@Firewalld ~]# firewall-cmd --reload success [root@Firewalld ~]# firewall-cmd --list-ports 8080/tcp 8080/udp 2.配置防火墙, 访问8080/udp的端口流量设置为永久拒绝,并立即生效[root@Firewalld ~] success [root@Firewalld ~] success 8080/tcp 7.防火墙端口转发策略端口转发是指传统的目标地址映射,实现外网访问内网资源流量转发命令格式为firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>1.把访问本机555/tcp端口的流量转发到22/tcp端口,要求当前和长期有效[root@Firewalld ~] success [root@Firewalld ~] success 2.把访问本机6666/tcp端口的流量转发到80/tcp端口,要求当前和长期有效[root@Firewalld ~] [root@Firewalld ~] success [root@Firewalld ~] success 3.移除本地555/tcp端口转发策略, 要求当前和长期有效[root@Firewalld ~] success [root@Firewalld ~] success 8.防火墙富规则策略firewalld中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置, 优先级在所有的防火墙策略中也是最高的。1.富规则帮助手册man firewall-cmd man firewalld.richlanguage rule [source] [destination] service|port|protocol|icmp-block|masquerade|forward-port [log] [audit] [accept|reject|drop] rule [family="ipv4|ipv6"] source address="address[/mask]" [invert="True"] destination address="address[/mask]" invert="True" service name="service name" port port="port value" protocol="tcp|udp" protocol value="protocol value" forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address" log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"] accept | reject [type="reject type"] | drop //区里的富规则按先后顺序匹配,按先匹配到的规则生效。 1.允许来自于192.168.69.113/32主机请求8081-8083端口, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 port port=8081-8083 protocol=tcp accept' success [root@Firewalld ~] success 2.拒绝来自192.168.69.113/32主机所有的请求, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 reject' success [root@Firewalld ~] success 3.拒绝来自于192.168.69.0/24网段请求ssh服务, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.0/24 service name=ssh reject' success [root@Firewalld ~] success 4.限制所有请求ftp服务流量, 每分钟1个并发, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule service name=ftp log prefix="ftp " level=notice limit value=1/m accept' success [root@Firewalld ~] success //开启多个ftp连接, 查看日志 [root@Firewalld ~] Apr 21 11:16:04 kvm-node1 kernel: ftp IN=br0 OUT= MAC=00:0c:29:72:6a96:00:50:56:c0:00:02:08:00 SRC=192.168.56.1 DST=192.168.56.11 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=21160 DF PROTO=TCP SPT=57050 DPT=21 WINDOW=65535 RES=0x00 SYN URGP=0 5.防止规则设定错误导致网络连接断开,用于调试,规则在300秒后失效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 service name=ssh reject' --timeout=300 6.将192.168.69.113/32主机访问443/tcp的数据包转发到本机的22/tcp端口, 当前和永久生效//端口转发规则 [root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.56.1/32 forward-port port=443 protocol=tcp to-port=22' success [root@Firewalld ~] success 7.允许192.168.69.113/32访问httpd, 并且记录日志, 日志级别为notice,日志前缀为NEW HTTP, 限制每秒最多3个并发, 当前和永久生效 [root@Firewalld soft] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 service name=http,https log level=notice prefix="New Http " limit value="3/s" accept' success [root@Firewalld soft] success 转 xuliangwei.com
2023年11月03日
6 阅读
0 评论
0 点赞
2023-11-01
cron 命令
1.Crond计划任务概述什么是计划任务,计划任务类似于我们平时生活中的闹钟。在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据Schedule one-time tasks with at. 一次性调度执行 at Schedule recurring jobs with cron. 循环调度执行 cron Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向 //循环调度执行cron 进程每分钟会处理一次计划任务 [root@xuliangwei ~] [root@xuliangwei ~] root 1201 0.0 0.0 126264 1640 ? Ss 11:15 0:00 /usr/sbin/crond -n 计划任务分为以下两种情况:1.系统级别的定时任务:清理系统缓存临时文件清理系统信息采集日志文件切割2.用户级别的定时任务:定时同步互联网时间定时备份系统配置文件定时备份数据库文件2.crond配置文件详解文件 说明 /etc/crontab /etc/cron.deny /var/spool/cron 3.crond计划任务管理crond任务管理参数 含义 指定示例 [root@xuliangwei ~] -e 编辑crontab文件内容 crontab -e -l 查看crontab文件内容 crontab -l -r 删除crontab文件内容 crontab -r -u 管理其他用户的计划任务 crontab -u xuliangwei -l 注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username crond时间含义# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed crond编写示例00 02 * * * ls //每天2:00整 00 02 1 * * ls //每月1号2:00整 00 02 14 2 * ls //每年2月14号2:00整 00 02 * * 7 ls //每周日2:00整 00 02 * 6 5 ls //每年6月的周五2:00整 00 02 14 * 7 ls //每月14号2:00整或每周日2:00整,这两个时间都执行 00 02 14 2 7 ls //每年 2 月 14 号 2:00 整 或者 每周日 2:00 整,这两个时间都执行 00 02 * * * ls //每天2:00整 * 02 * * * ls //每天2:00中的每一分钟 (逻辑错误) * * * * * ls //每分钟执行 ls * * 14 2 * ls //2月14号的每分钟(逻辑错误) */5 * * * * ls //每隔5分钟 00 02 * 1,5,8 * ls //每年1,5,8月的每天2:00整 00 02 1-8 * * ls //每月1到8号的2:00整 crond书写规范 [root@xuliangwei ~]# crontab -l ##time sync by xuliangwei 2018-00-00 */5 * * * * /usr/sbin/ntpdate time.windows.com &>/dev/null [root@xuliangwei ~]# crontab -l ##backup www to /backup xuliangwei 2018-00-00 00 01 * * * /bin/sh /soft/scripts/www_backup.sh &>/dev/null [root@xuliangwei ~]# crontab -l ####backup www to /backup xuliangwei 2018-00-00 00 01 * * * /bin/sh /soft/scripts/www_backup.sh &>/dev/null 4.crond配置编写实例[root@xuliangwei ~]# crontab -e #每天凌晨切割nginx日志 00 00 * * * /bin/sh -x /soft/scripts/cut_nginx.sh &> /soft/scripts/log/nginx.log #每天5点备份数据库 00 05 * * * /bin/sh -x /soft/scripts/dump_sql.sh &>/soft/scripts/log/mysql.log #每5分钟检测数据库是否正常 */5 * * * * /bin/sh /soft/scripts/start_mysql.sh &>/dev/null 1.我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。 2.crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。 3.几乎每个服务器都会用到crond服务。 5.crond计划任务调试1.调整任务每分钟执行, 检测是否是否正常, 有些任务不要频繁执行2.调整系统时间然后在检测任务, 生产不建议直接使用此方式3.执行脚本, 将脚本执行输出写入指定日志文件, 观察日志内容是否正常4.注意一些任务命令带来的问题echo “xuliangwei” >>/tmp/xlw.log &>/dev/null5.命令使用绝对路径, 防止无法找到命令导致定时任务执行故障6.查看/var/log/cron日志进行调试建议: 将需要定期执行的任务写入脚本中, 建立/soft/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。 1.手动执行保留执行命令的正确结果 2.编写脚本 脚本需要统一路径/soft/scripts 脚本开头建议填写注释信息, 包括执行时间、周期、任务 脚本内容复制执行成功的命令至脚本文件中(减少每个环节出错几率) 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句 脚本执行的输出信息不要随意打印, 可以重定向至其他位置保留或丢入黑洞 3.执行脚本 使用bash执行, 防止脚本没有增加执行权限(/usr/bin/bash) 执行命令以及脚本成功后并复制该命令 4.编写计划任务 加上必要的注释信息, 人、时间、任务 设定计划任务执行的周期 粘贴执行脚本的命令(不要手敲) 5.调试计划任务 增加任务频率测试、调整系统时间测试(不能用于生产) 检查环境变量问题、检查crond服务产生日志进行排查 转 xuliangwei.com
2023年11月01日
18 阅读
0 评论
0 点赞
1
2
...
6