linux学习--week11--综合架构备份服务

老男孩教育64期--week11--综合架构备份服务

  1. 综合架构知识概述说明

    1. 备份服务企业应用
    2. 备份服务常见问题
    3. 全网备份项目 ***
    4. 存储服务概念 NFS FTP samba
    5. 存储数据原理
    6. 存储服务进行部署
    7. 存储服务配置参数
    8. 存储服务客户端配置参数
  2. 综合架构课程回顾:

    1. 综合架构组成部分
      防火墙设备 : iptables firewalld
      负载均衡设备 : nginx Lvs haproxy
      网站服务web : nginx apache tomcat/php
      数据库服务 : mysql oracle
      存储服务 : NFS ftp samba 分布式存储
      备份服务 : rsync
      缓存服务 : redis mongodb
      vpn服务器 : pptpvpn openvpn
      跳板机服务 : jumpserver
      批量管理服务 : ansible saltstack
      监控服务 : zabbix

    2. 综合架构环境准备:

      1. 虚拟主机网络配置
      2. 虚拟主机克隆操作 (克隆前/克隆后 -- 快照)
    3. 部署备份服务

      1. rsync备份服务概念作用
      2. rsync备份服务命令语法 (本地备份 rsync=cp/远程备份rsync=scp/ 守护进程)
      3. rsync守护进程部署方式
        rsync服务端部署: 安装-->配置-->创建虚拟用户-->创建密码文件(授权600)-->创建备份目录(授权 rsync.rsync管理备份目录)
        rsync客户端部署: 创建密码文件--> 免交互备份数据
      4. rsync命令参数说明: -avzP
  1. 备份服务企业应用

    1. 备份服务多模块配置
      配置信息:
      [backup_sa]
      comment = "backup dir by oldboy"
      path = /backup
      [backup_dev]
      comment = "backup dir by oldboy"
      path = /backup_dev
      [backup_db]
      comment = "backup dir by oldboy"
      path = /backup_db

    环境准备:
    mkdir /backup_dev
    mkdir /backup_db
    chown rsync.rsync /backup_dev
    chown rsync.rsync /backup_db

    1. 备份服务数据筛选功能
      环境准备
      [root@nfs01 ~]# mkdir /oldboy/{a..c}
      [root@nfs01 ~]# touch /oldboy/{a..c}/{01..03}.txt
      [root@nfs01 ~]# tree /oldboy/
      /oldboy/
      ├── a
      │?? ├── 01.txt
      │?? ├── 02.txt
      │?? └── 03.txt
      ├── b
      │?? ├── 01.txt
      │?? ├── 02.txt
      │?? └── 03.txt
      └── c
      ├── 01.txt
      ├── 02.txt
      └── 03.txt

    3 directories, 9 files

    需求

    1. 不要将a目录所有数据进行备份 不要将b目录中03.txt文件进行备份
      [root@nfs01 ~]# rsync -avz /oldboy/ --exclude=a/ --exclude=b/03.txt [email protected]::backup_sa --password-file=/etc/rsync.password
      sending incremental file list
      ./
      b/
      b/01.txt
      b/02.txt
      c/
      c/01.txt
      c/02.txt
      c/03.txt

    sent 374 bytes received 134 bytes 338.67 bytes/sec
    total size is 0 speedup is 0.00

    1. 不要将a目录01.txt数据进行备份 不要将b目录中02.txt文件进行备份 不要将c目录中03.txt文件进行备份
      [root@nfs01 /tmp]# vim exclude.txt
      a/01.txt
      b/02.txt
      c/03.txt

    [root@nfs01 ~]# rsync -avz /oldboy/ --exclude-from=/tmp/exclude.txt [email protected]::backup_sa --password-file=/etc/rsync.password
    sending incremental file list
    ./
    a/
    a/02.txt
    a/03.txt
    b/
    b/01.txt
    b/03.txt
    c/
    c/01.txt
    c/02.txt

    sent 448 bytes received 157 bytes 1,210.00 bytes/sec
    total size is 0 speedup is 0.00

    1. 客户端创建多级备份目录
      运维部门: 三个员工
      张三 --- backup_sa/zhangsan
      李四 --- backup_sa/lisi
      王五 --- backup_sa/wangwu

    oldboy oldboy数据 ---> rsync数据
    oldgirl oldgirl数据 ---> rsync数据
    root root数据 ---> rsync数据

    rsync -avz /etc/hosts [email protected]::backup_sa/zhangsan/ --password-file=/etc/rsync.password
    创建备份目录子目录

    1. 备份服务策略控制功能
      hosts allow = 172.16.1.0/24 --- 白名单配置
      hosts deny = 0.0.0.0/32 --- 黑名单配置
      情况一: 只有白名单配置
      hosts allow = 172.16.1.0/24
      说明: 白名单允许的可以进行备份数据/白名单不允许阻止访问

    情况二: 只有黑名单配置
    hosts deny = 10.0.0.0/24
    说明: 黑名单阻止的网段不能备份/黑名单没有阻止的可以进行访问

    请求三: 有白名单配置,也有黑名单配置
    白名单信息匹配: 允许进行备份数据
    黑名单信息匹配: 阻止进行备份数据
    白名单和黑名单都没有匹配上: 默认也是可以进行备份数据

    补充: 配置文件说明:
    全局配置: 都有模块都会加载全局配置
    局部配置: 只是影响指定模块配置信息
    局部配置优先于全局配置

    1. 数据无差异同步功能 (用户数据做备份)
      备份服务器上数据和源存储设备上数据信息保持高度一致
      rsync -avz /oldboy/ --delete [email protected]::backup_sa --password-file=/etc/rsync.password

    2. 显示存储模块列表功能
      list = false --- 可以让客户端查看服务端所有模块信息
      [root@nfs01 /oldboy]# rsync [email protected]::
      backup_sa "backup dir by oldboy"
      backup_dev "backup dir by oldboy"
      backup_db "backup dir by oldboy"

  2. 备份服务常见企业应用

  1. 企业全网备份项目说明 编写脚本
    ? 1) 所有服务器的备份目录必须都为/backup
    ? 2) 要备份的系统配置文件包括但不限于:
    a) 定时任务服务的配置文件 (/var/spool/cron/root) (适合web和nfs服务器)。
    b) 开机自启动的配置文件 (/etc/rc.local) (适合web和nfs服务器)。
    c) 日常脚本的目录 (/server/scripts)。
    d) 防火墙iptables的配置文件 (/etc/sysconfig/iptables-config)。
    e) 自己思考下还有什么需要备份呢?
    ? 3) Web服务器站点目录假定为 (/var/html/www)。
    ? 4) Web服务器访问日志路径假定为 (/app/logs)
    ? 5) 服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
    ? 6) 备份服务器上,不仅保留最近7天的备份数据,同时保留6个月内; 6个月之外每周一的所有数据副本保留
    ? 7) 备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
    ? 8) 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。

    确认有自己的邮箱: 163 qq 企业

image.png
image.png
image.png
全网备份项目完成说明
备份客户端操作说明
1) 所有服务器的备份目录必须都为/backup    
mkdir /backup/172.16.1.31/ -p

2) 进行重要数据本地备份(压缩)
cd /
tar zcvhf /backup/172.16.1.31/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts/ ./etc/sysconfig/iptables-config
tar zcvhf /backup/172.16.1.31/web_www_$(date +%F_week%w).tar.gz  ./var/html/www/
tar zcvhf /backup/172.16.1.31/web_app_$(date +%F_week%w).tar.gz  ./app/logs/

3) 将本地压缩包数据进行远程备份
方式一:
rsync -avz /backup/ [email protected]::backup_sa/172.16.1.31/ --password-file=/etc/rsync.password
方式二:
rsync -avz /backup/ [email protected]::backup_sa --password-file=/etc/rsync.password

4) 将本地7天以前的数据进行删除
find /backup -type f -name "*.tar.gz"  -mtime +7 -delete 

5) 创建指纹文件信息(用于验证数据完整性)
find /backup/ -type f -name "*$(date +%F).tar.gz"|xargs md5sum >/backup/172.16.1.31/finger.txt

备份服务端配置说明:
1) 需要验证数据完整性:
find /backup/ -type f -name "finger.txt"|xargs md5sum -c
find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_backup.txt 2>/dev/null

2) 需要进行系统发送邮件配置
foxmail 邮件客户端软件   ---> 企业邮件服务器 ---> 发送或接受
linux系统                ---> 企业邮件服务器 ---> 发送

第一个历程: 修改企业邮件服务器配置信息:
pkxmynvtgmkgbied  --- 获取授权码信息
smtp.qq.com       --- 获取发送邮件服务器域名信息

第二个历程: 编写系统邮件服务配置信息
vi /etc/mail.rc 
set [email protected]                --- 连接的邮箱信息
set smtp=smtp.qq.com                     --- 邮箱服务器域名信息
set [email protected]      --- 邮箱登录用户名称信息
set smtp-auth-password=pkxmynvtgmkgbied  --- 邮箱登录用户授权码信息
set smtp-auth=login                      --- 进行邮箱登录操作
systemctl restart postfix.service

第三个历程: 检查是否可以发送邮件
echo test_oldboy |mail -s "test" [email protected]
mail -s "check_data 2019-09-09" [email protected] $backup_dir/$IP_info/finger.txt

# 04. push date to backup_server
rsync -az $backup_dir/  [email protected]::backup --password-file=/etc/rsync.password

# 05. delete 7day ago
find /backup -type f -name "*.tar.gz"  -mtime +7 -delete

备份服务服务端脚本文件 
[root@backup /backup]# cat /server/scripts/backup_server.sh 
#!/bin/bash
backup_dir="/backup"


# 01. check date info
find $backup_dir/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_backup.txt 2>/dev/null

# 02. send mail info
mail -s "check_data $(date +%F)" [email protected] /dev/null 

9-8  周日   9-9   0点做数据备份 数据日期信息-9-9-week1    -d "-1 day"  --> 09-08 周日
9-9  周一   9-10  0点做数据备份 数据日期信息-9-10-week2     -d "-1 day"  --> 09-09 周一


服务端定时任务编写:
0 6 * * *  /bin/sh  /server/scripts/backup_server.sh  &>/dev/null
  1. 存储服务概念介绍
    作用什么:

    1. 实现网站数据统一存储
    2. 降低服务硬盘采购成本
      实现方式:
      硬件方式: IBM v5000 v7000 dsxxx/ EMC
      软件方式:
      NFS(不能部署在windows) FTP(配置复杂) samba(部署在windows linux 配置复杂) --- 中小型企业
      分布式存储 mfs glusterfs(
      ) fastdfs --- 数据丢失/不容易进行数据恢复
      用户A浏览器(10M) -- lb --- web01 ---> 存储服务器A 存储服务器A A-10m
      用户B浏览器(10M) -- lb --- web01 ---> 存储服务管理端 存储服务器B A-3M 存储服务器B A-10m
      用户C浏览器(10M) -- lb --- web01 ---> 存储服务器C A-3M

    NFS实现数据存储原理
    用户浏览器 -- lb --- web01(/mnt) -mount 网络挂载方式-> NFS 存储服务器 /data

image.png
image.png
image.png
  1. 存储服务部署过程:
    预备知识说明:
    RPC服务: 远程过程调用程序 (中介)

    服务端部署过程:
    第一个历程: 安装软件程序
    yum install -y rpcbind nfs-utils

    第二个历程: 编写配置文件
    vi /etc/exports
    定义存储数据目录 允许存储数据白名单(存储服务参数信息)
    /data 172.16.1.0/24(rw,sync)

    第三个历程: 创建存储数据目录/修改存储目录属主或属组信息
    mkdir /data
    chown nfsnobody.nfsnobody /data

    第四个历程: 启动存储服务
    systemctl start rpcbind
    systemctl start nfs
    centos7 先启动nfs 后启动rpcbind nfs进程和端口信息也可以进行注册

    第五个历程: 检查存储目录是否可以正常使用
    showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data 172.16.1.0/24

    客户端部署过程:
    第一个历程: 安装软件程序
    yum install -y nfs-utils

    第二个历程: 进行网络挂载操作
    mount -t nfs 172.16.1.31:/data /mnt

    第三个历程: 进行存储数据测试
    在客户端创建 删除 修改数据 == 服务端存储目录中 创建 删除 修改数据

  2. 存储服务配置参数信息:
    rw --- 指定让存储目录可读可写
    ro --- 指定让存储目录为只读模式
    sync --- 同步方式存储数据 用户存储数据 -数据-> web服务数据目录 --> nfs服务器 /data (磁盘中)
    async --- 异步方式存储数据 用户存储数据 -数据-> web服务数据目录 --> nfs服务器 --- 内存 --- /data (磁盘里)
    all_squash --- 将所有普通用户做身份映射转换 oldboy用户(数据) -oldboy - nfsnobody-> nfs服务端 /data(nfsnobody)
    no_all_squash --- 不会将普通用户身份做映射转换 oldboy用户(数据) -oldboy - oldboy -> nfs服务端 /data(nfsnobody)
    root_squash --- 会将root用户身份做映射转换 root用户(数据) -root - nfsnobody-> nfs服务端 /data(nfsnobody)
    no_root_squash --- 不会将root用户身份做映射转换 root用户(数据) -root - root -> nfs服务端 /data(nfsnobody)
    anonuid --- 设置指定映射的用户信息
    anongid --- 设置指定映射的用户组信息

    补充: reload 平滑重启 restart 重启
    reload: 已经建立的连接/连接上有数据传输时, 在重启服务时, 不会影响这些链接
    restart: 服务器在重启时, 会将所有连接断开, 进行重新建立

image.png
image.png
总结: 存储目录是否可以存储数据, 目录权限有什么有关系
01. 配置文件的权限参数配置有关
02. 目录本身权限有关系  755 属主属组是否正确

预习:

  1. nfs剩余课程
  2. sersync实时同步服务(用户上传数据)
  3. SSH远程服务 / ansible批量管理服务

你可能感兴趣的:(linux学习--week11--综合架构备份服务)