期中架构(1)--- 集群构架 & 备份服务

01. 了解集群架构服务器组成

基本架构组成:(用于让用户进行访问)

# 前端服务部分:
1)顾客-用户
   是一个访问者,请求访问网站页面
   
2)保安-防火墙设备
   对访问架构用户进行策略控制,正常访问网站用户,可以放行进入;非法人员(***)访问网站,禁止进入
   
3)对讲机-交换机(外网)
   提供架构中服务器相互通讯交流的需求(提供外部人员访问)
   
4)迎宾人员-负载均衡服务器
   对用户的访问请求进行调度处理
   
5)服务员-网站web服务器
   对用户的请求进行响应处理
   
# 后端服务部分:
1)对讲机-交互机(内网)
   提供架构中服务器相互通讯交流的需求(提供内部局域网服务器通讯交流)
   
2)厨师-数据库服务器
   主要用于存储用户提交文字(字符串)数据信息
   
3)厨师-存储服务器
   主要用于存储用户上传视频 音频 图片 附件等数据资料
   
4)厨师-备份服务器
   主要用于对用户存储(上传)数据信息进行统一备份管理
   
5)厨师-缓存服务器
   主要用于存储用户经常访问的数据信息,提升请求数据信息的响应效率

 

扩展架构组成:(用于让运维人员远程管理架构中的服务器)

1)员工-运维人员
   可以远程管理架构中服务器
   
2)审计-跳板机服务器
   用于监管内部运维人员操作记录信息,一旦出现架构问题,可以快速定位问题原因,进行相应人员失误问责
   
3)经理-批量管理服务器
   通过批量管理服务器可以批量管理架构中多台服务器,提升工作效率
   
4)监控-监控服务器
   用于监控管理架构中的服务器运行情况,一旦出现问题进行发送告警给相关运维管理人员

 

基本架构结构:

期中架构(1)--- 集群构架 & 备份服务

基本架构组成、作用及软件实现

期中架构(1)--- 集群构架 & 备份服务

 

扩展架构结构:

期中架构(1)--- 集群构架 & 备份服务

扩展架构组成、作用及软件实现

期中架构(1)--- 集群构架 & 备份服务

 

02. 集群架构环境统一规划说明

1. 服务器及服务规划说明
2. 主机地址及主机名规划
3. 安装及配置路径等规划 

1. 服务器及服务规划说明

期中架构(1)--- 集群构架 & 备份服务

2. 主机地址及主机名规划

2.1 前端服务

期中架构(1)--- 集群构架 & 备份服务

2.2 后端服务

期中架构(1)--- 集群构架 & 备份服务

3. 安装及配置路径等规划

期中架构(1)--- 集群构架 & 备份服务

 

虚拟软件网络配置 --- 配置虚拟网络信息

# 第一步:在虚拟软件中配置虚拟局域网:
          配置虚拟网段信息,以及虚拟网关信息

# 第二步:在虚拟机软件中虚拟机添加网卡
          虚拟主机中设置了两块网卡:
            eth0: nat塔式网卡
            eth1: LAN区段网卡(区段名称为 172.16.1.0/24 )

# 第三步: 在虚拟软件中虚拟机网卡配置

# 第四步: 在虚拟软件中虚拟机系统优化:
    4.1 模板机优化配置 --- hosts 文件配置:(IP地址与主机名的解析关系)
        cp /etc/hosts{,.bak}
        cat >/etc/hosts<<EOF
        127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
        ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
        172.16.1.5      lb01
        172.16.1.6      lb02
        172.16.1.7      web01
        172.16.1.8      web02
        172.16.1.9      web03
        172.16.1.51     db01
        172.16.1.31     nfs01
        172.16.1.41     backup
        172.16.1.61     m01
        EOF

    4.2 模板机优化配置 --- 更改 yum 源 :
        #更改yum源 (系统默认的 yum 源在 /etc/yum.repos.d/ 目录下)
        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo        # Base 源更改为 阿里云的 yum 源
        wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo                # epel 源更改为    阿里云的 yum 源
        #PS:yum repolist 列出yum源信息;epel源:扩展 yum 源
    
        
    4.3 模板机优化配置---关闭selinux
        #关闭selinux
        sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
        grep SELINUX=disabled /etc/selinux/config 
        setenforce 0
        getenforce 
        
    4.4 模板机优化配置---关闭iptables 
        #关闭iptables         
        /etc/init.d/iptables stop
        /etc/init.d/iptables stop
        chkconfig iptables off

        
    4.5 模板机优化配置---精简开机自启动服务
        #精简开机自启动服务
        export LANG=en
        chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash
        chkconfig --list|grep 3:on

        
    4.6 模板机优化配置---授权oldboy可以sudo
        #提权oldboy可以sudo(可选配置)
        useradd oldboy
        echo 123456|passwd --stdin oldboy
        cp /etc/sudoers /etc/sudoers.ori
        echo "oldboy  ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
        tail -1 /etc/sudoers
        visudo -c

        
    4.7 模板机优化配置---英文字符集
        #英文字符集
        cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori
        echo 'LANG="en_US.UTF-8"'  >/etc/sysconfig/i18n 
        source /etc/sysconfig/i18n
        echo $LANG

        
    4.8 模板机优化配置---时间同步
        #时间同步
        echo '#time sync by lidao at 2017-03-08' >>/var/spool/cron/root
        echo '*/5 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1' >>/var/spool/cron/root
        crontab -l

        
    4.9 模板机优化配置---加大文件描述
        #加大文件描述
        echo '*               -       nofile          65535 ' >>/etc/security/limits.conf 
        tail -1 /etc/security/limits.conf 

        
    4.10 模板机优化配置---内核优化
        #内核优化
        cat >>/etc/sysctl.conf<<EOF
        net.ipv4.tcp_fin_timeout = 2
        net.ipv4.tcp_tw_reuse = 1
        net.ipv4.tcp_tw_recycle = 1
        net.ipv4.tcp_syncookies = 1
        net.ipv4.tcp_keepalive_time = 600
        net.ipv4.ip_local_port_range = 4000    65000
        net.ipv4.tcp_max_syn_backlog = 16384
        net.ipv4.tcp_max_tw_buckets = 36000
        net.ipv4.route.gc_timeout = 100
        net.ipv4.tcp_syn_retries = 1
        net.ipv4.tcp_synack_retries = 1
        net.core.somaxconn = 16384
        net.core.netdev_max_backlog = 16384
        net.ipv4.tcp_max_orphans = 16384
        #以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
        net.nf_conntrack_max = 25000000
        net.netfilter.nf_conntrack_max = 25000000
        net.netfilter.nf_conntrack_tcp_timeout_established = 180
        net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
        net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
        net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
        EOF
        sysctl -p

        
    4.11 模板机优化配置---安装其他小软件
        #安装其他小软件
        yum install lrzsz nmap tree dos2unix nc telnet sl -y
        
    
    4.12 模板机优化配置---ssh连接速度慢优化
        #ssh连接速度慢优化          
        sed -i.bak 's@#UseDNS yes@UseDNS no@g;s@^GSSAPIAuthentication yes@GSSAPIAuthentication no@g'  /etc/ssh/sshd_config
        /etc/init.d/sshd reload

 

虚拟主机克隆操作期中架构(1)--- 集群构架 & 备份服务

# 第一步:调整虚拟主机网络配置信息:
          # 一清空 两删除 
          # 两删除:删除网卡(eth0 eth1)中的 UUID(硬件标识信息)和 HWADDR(网络mac地址)
          # 一清空:清空网络规则配置文件
        
# 两删除:
[root@NEO ~]# sed -ri '/UUID|HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth[01]        # ifcfg-eth[01] ---> 删除 eth0 和 eth1 中的 UUID 和 HWADDR
[root@NEO ~]# grep -E 'UUID|HWADDR' /etc/sysconfig/network-scripts/ifcfg-eth[01]
[root@NEO ~]# 

# 一清空:
[root@NEO ~]# >/etc/udev/rules.d/70-persistent-net.rules     # 清空网络规则配置文件;每次系统重新启动时,这个文件都会重新生成,所以要把这个命令追加到系统的启动文件中
[root@NEO ~]# echo '>/etc/udev/rules.d/70-persistent-net.rules' >>/etc/rc.local     # 追加到系统启动文件中
[root@NEO ~]# tail -1 /etc/rc.local
>/etc/udev/rules.d/70-persistent-net.rules
[root@NEO ~]# 

# 第二步:关闭虚拟模板机
    shutdown -h now
        
# 第三步:虚拟机的克隆操作
    链接克隆:
        优势:节省系统资源,克隆效率高
        劣势:模板主机一旦出现问题,所有克隆主机也无法正常工作
    完整克隆:
        优势:模板主机和克隆主机相互独立,模板主机出现问题,克隆主机依旧可以正常使用
        劣势:占用系统资源,克隆效率低
        
# 第四步:开启克隆虚拟主机(如果一下克隆了多台虚拟主机,要一台一台开启,并且要确认模板主机关闭),设置虚拟主机地址和网卡信息
# 修改主机名称:
[root@NEO ~]# hostname backup
[root@NEO ~]# sed 's#NEO#backup#g' /etc/sysconfig/network -i
[root@NEO ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=backup
[root@NEO ~]#         
        
# 修改主机IP地址信息:
[root@NEO ~]# sed -i "s#200#41#g" /etc/sysconfig/network-scripts/ifcfg-eth[01]        # 把 eth0 和 eth1 这两个虚拟网卡中的IP地址的 200 改为 41
[root@NEO ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth[01]
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=10.0.0.41        # 此处的 200 改成了 41
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
USERCTL=no
PEERDNS=yes
IPV6INIT=no
DNS1=223.5.5.5
DNS2=223.6.6.6
# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
DEVICE=eth1
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
IPADDR=172.16.1.41        # 此处的 200 改成了 41
NM_CONTROLLED=no
PEERDNS=yes
ONBOOT=yes
IPV6INIT=no
USERCTL=no
[root@NEO ~]# 
# 重启网络服务,重新连接虚拟主机
[root@NEO ~]# /etc/init.d/network restart

 

备份服务实践

# Rsync服务概念特性介绍:
# Rsync属于一款实现全量及增量复制同步的软件工具

# Rsync 服务命令在就用时,属于一个非常强大的命令,可以通过 rsync 一个命令,替换下面4个命令的操作:
    1. 实现本场数据同步复制(等价命令cp)
    2. 实现远程数据同步复制(等价命令scp:远程复制命令)
    3. 实现数据信息删除功能(等价命令rm)
    4. 实现数据信息查看功能(等价命令ls)
        
# 1. rsync === cp
[root@backup ~]# cp -a /etc/hosts /tmp/
[root@backup ~]# ll /tmp/
total 184
-rw-r--r--  1 root root  43252 May  1 00:46 date.log
-rw-r--r--. 1 root root    352 Apr 30 16:36 hosts
-rw-r--r--  1 root root 129368 May  1 00:46 ip.log
[root@backup ~]# rsync -a /etc/sysconfig/network /tmp/        # rsync 的 cp 复制 功能
[root@backup ~]# ll /tmp/
total 188
-rw-r--r--  1 root root  43253 May  1 00:47 date.log
-rw-r--r--. 1 root root    352 Apr 30 16:36 hosts
-rw-r--r--  1 root root 129378 May  1 00:47 ip.log
-rw-r--r--  1 root root     31 May  1 00:32 network
[root@backup ~]# 
        
        
# 2. rsync === scp  # 远程复制命令
# scp -rp ---> r 参数表示递归,复制目录的时候要加上这个参数; p 参数表示保持复制数据的属性信息
# 当前主机(备份服务器)上的scp操作:
[root@backup ~]# scp -rp /tmp/ 172.16.1.31:/tmp/  # 把当前主机的 /tmp/ 目录 复制到 远端 172.16.1.31 主机的 /tmp/ 下
The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
RSA key fingerprint is 22:07:4d:36:3c:5e:eb:46:80:a2:ef:40:45:8c:93:46.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.31' (RSA) to the list of known hosts.
root@172.16.1.31's password: 
date.log                                                                               100%   42KB  42.3KB/s   00:00    
hosts                                                                                  100%  352     0.3KB/s   00:00    
ip.log                                                                                 100%  127KB 126.5KB/s   00:00    
network                                                                                100%   31     0.0KB/s   00:00    
[root@backup ~]# 

# 远程主机(存储服务器) 172.16.1.31 上的操作:
[root@nfs01 ~]# ll /tmp/
total 184
-rw-r--r-- 1 root root  43267 May  1 01:06 date.log
-rw-r--r-- 1 root root 129520 May  1 01:06 ip.log
drwxrwxrwx 3 root root   4096 May  1 00:47 tmp            # 已经复制到了该远程主机
[root@nfs01 ~]# tree /tmp/
/tmp/
├── date.log
├── ip.log
└── tmp
    ├── date.log
    ├── hosts
    ├── ip.log
    └── network

1 directory, 6 files
[root@nfs01 ~]# cd /tmp/
[root@nfs01 tmp]# \rm -rf tmp/
[root@nfs01 ~]# 


# 当前主机(备份服务器)上的rsync操作:
[root@backup ~]# rsync -rp /tmp/ 172.16.1.31:/tmp/    # 复制到远程服务器
root@172.16.1.31's password: 
[root@backup ~]# 

# 远程主机(存储服务器) 172.16.1.31 上的操作:
[root@nfs01 ~]# ll /tmp/
total 180
-rw-r--r-- 1 root root  43285 May  1 01:19 date.log
-rw-r--r-- 1 root root    352 May  1 01:18 hosts        # 此时 rsync 复制到远程服务器时,是把 源目录 /tmp/ 中的内容复制到了远程服务器中
-rw-r--r-- 1 root root 129698 May  1 01:19 ip.log
-rw-r--r-- 1 root root     31 May  1 01:18 network
[root@nfs01 ~]# \rm -f /tmp/hosts /tmp/network 
[root@nfs01 ~]# ll /tmp/
total 172
-rw-r--r-- 1 root root  43291 May  1 01:25 date.log
-rw-r--r-- 1 root root 129758 May  1 01:25 ip.log
[root@nfs01 ~]# 

# 注意:同步数据时, 源目录(如:/tmp/目录)后面要是有 / ,则表示将目录下面的数据内容备份到远程服务器;
#      同步数据时, 源目录(如:/tmp/目录)后面要是没有 / ,表示将目录及目录下面的数据内容备份到远程服务器

# 当前主机(备份服务器)上的rsync操作(源目录后面没有 / ):
[root@backup ~]# rsync -rp /tmp 172.16.1.31:/tmp/    # /tmp 后面没有 /
root@172.16.1.31's password: 
[root@backup ~]# 
# 远程主机(存储服务器) 172.16.1.31 上的操作:
[root@nfs01 ~]# ll /tmp/
total 176
-rw-r--r-- 1 root root  43292 May  1 01:26 date.log
-rw-r--r-- 1 root root 129768 May  1 01:26 ip.log
drwxrwxrwt 3 root root   4096 May  1 01:26 tmp
[root@nfs01 ~]# tree /tmp
/tmp
├── date.log
├── ip.log
└── tmp
    ├── date.log
    ├── hosts
    ├── ip.log
    └── network

1 directory, 6 files
[root@nfs01 ~]# 

# 3. rsync === rm  
# 原理:rsync 实现删除目录中数据内容过程,就是将一个空目录和一个有数据的目录进行同步,从而实现将有数据的目录中的文件进行清空
[root@backup ~]#ll /alexdir/
total 4
drwxr-xr-x 2 root root 4096 Apr  2 03:15 test
[root@backup ~]# mkdir /null                                # 先创建一个空目录
[root@backup ~]# rsync -r --delete /null/ /alexdir/            # 用/null 这个空目录去清空 /alexdir/ 这个目录中的数据;rsync 命令在删除目录时,要加上 -r 参数 和 --delete 参数
[root@backup ~]# ll /alexdir/
total 0
[root@backup ~]# 

# 4. rsync === ls 
[root@backup ~]# ls -l /etc/hosts
-rw-r--r--. 2 root root 352 Apr 30 16:36 /etc/hosts
[root@backup ~]# rsync /etc/hosts
-rw-r--r--         352 2019/04/30 16:36:02 hosts
[root@backup ~]# 

Rsync备份软件7大特性:

# 1. 支持干拷贝普通文件与特殊文件如链接文件、设备等
# 2. 支持排除指定文件或目录同步的功能,类似tar命令排除功能
# 3. 支持保持原文件或目录的所有属性信息不变
# 4. 支持增量同步,既只同步变化数据,提升数据传输效率
# 5. 支持使用rcp、 rsh、 ssh 等方式来配合进行隧道加密传输文件
# 6. 支持使用通过socket(守护进程方式)传输文件或目录数据信息
# 7. 支持用户认证方式传输数据,提升数据同步安全性

Rsync服务工作方式介绍:

# 1. 本地数据传输模式:
    采用此种方式进行数据同步复制,类似于上文中所提到的cp本地复制命令功能。
    采用本地数据传输模式语法格式信息为:
        Local:  
        rsync [OPTION...] SRC... [DEST]
        
        rsync    --- 数据备份传输命令
        option   --- 可以输入一下和rsync传输数据有关的参数
        src      --- 要进行备份的数据(文件/目录)
        dest     --- 将数据信息备份到什么位置(相应路径中)
        
# 2. 远程数据备份方式:
    采用此种方式进行数据同步复制,类似于上文中所提到的scp远程复制命令功能。
    采用远程数据传输模式语法格式信息为:
    Access via remote shell:
    Pull:   rsync  [OPTION...]    [USER@]HOST:SRC...      [DEST]                # 把数据从远程服务器拉到本地服务器
    Push:   rsync  [OPTION...]    SRC...                [USER@]HOST:DEST    # 把数据从本地服务器备份到远程服务器
    
    pull方式语法说明:
    rsync    --- 数据备份传输命令
    option   --- 可以输入一下和rsync传输数据有关的参数
    [USER@]HOST:  --- USER:指定以什么用户身份登陆到远程主机,如果省略USER信息,表示以当前用户身份进行登陆
                  --- HOST:登陆主机地址或域名信息
    SRC      --- 指定远程主机要传输到本地的数据信息
    DEST     --- 将数据保存到本地的什么路径中

# PULL 方式:
[root@backup ~]# ll /alexdir/
total 0
[root@backup ~]# rsync -a root@172.16.1.31:/etc/sysconfig/network /alexdir/
root@172.16.1.31's password: 
[root@backup ~]# ll /alexdir/
total 4
-rw-r--r-- 1 root root 30 May  1 00:40 network
[root@backup ~]# 

    push方式语法说明:
    rsync    --- 数据备份传输命令
    option   --- 可以输入一下和rsync传输数据有关的参数
    [USER@]HOST:     --- 需要指定以什么用户身份登录到远程主机,
                         如果省略USER信息,表示以当前用户身份进行登录
                         登录主机地址或域名信息
    SRC      --- 指定本地主机要传输到远程主机的数据
    dest     --- 将本地数据保存到远端的什么路径中


# 守护进程传输方式:
    采用此种方式进行数据同步复制,是采用客户端与服务端的数据同步方式。
    采用守护进程传输模式语法格式信息为:
    Access via rsync daemon:
    Pull:  rsync  [OPTION...]  [USER@]HOST::SRC...                 [DEST]        # 语法一: HOST 和 SRC 之间是双冒号
            rsync  [OPTION...]  rsync://[USER@]HOST[:PORT]/SRC...   [DEST]        # 语法二
    Push:  rsync  [OPTION...]  SRC...      [USER@]HOST::DEST                    # 语法一: 也是双冒号
            rsync  [OPTION...]  SRC...      rsync://[USER@]HOST[:PORT]/DEST        # 语法二

    pull模式:rsync [OPTION...] [USER@]HOST::SRC... [DEST]
    [USER@]HOST::       --- 指定远程连接的认证用户
    SRC                 --- 指定相应的模块信息
    [DEST]              --- 将远程数据保存到本地的路径信息

    Push模式: rsync [OPTION...] SRC... [USER@]HOST::DEST
    [USER@]HOST::       --- 指定远程连接的认证用户
    SRC                 --- 指定本地要进行推送的数据信息
    [DEST]              --- 远程进行保存数据的模块信息

数据传输参数说明:

期中架构(1)--- 集群构架 & 备份服务

期中架构(1)--- 集群构架 & 备份服务

期中架构(1)--- 集群构架 & 备份服务

 

守护进程部署过程:

1. 服务端部署:

1.1 Rsync服务端部署流程:

# 第一步:检查软件是否安装
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64

# 第二步:编写配置文件  # /etc/rsyncd.conf 是 rsync 默认配置文件的固定写法
[root@backup ~]# vim /etc/rsyncd.conf
[root@backup ~]# cat /etc/rsyncd.conf
#rsync_config
#created by NEO at 2019
##rsyncd.conf start##

uid = rsync            # 备份目录管理用户
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log    # 错误日志
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup                # 认证用户
secrets file = /etc/rsync.password        # 认证文件
[backup]    # [backup] 是一个模块,模块之上的配置是全局配置
comment = "backup dir by NEO"
path = /backup                    # 备份目录
[root@backup ~]# 


# 也可以再加一个nfs模块
[nfs]
comment = "backup dir by NEO"
path = /nfs


# 第三步:创建备份目录管理用户
[root@backup ~]# useradd rsync -M -s /sbin/nologin
[root@backup ~]# 
 
# 第四步:创建备份目录
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup
[root@backup ~]# 

# 第五步:创建认证文件
[root@backup ~]# echo "rsync_backup:oldboy123"  >>/etc/rsync.password    # rsync_backup:oldboy123 ---> 认证用户:密码  ; /etc/rsync.password ---> 认证文件
[root@backup ~]# chmod 600 /etc/rsync.password    # 把认证文件的权限改成 600


# 第六步:启动rsync守护进程服务
[root@backup ~]# rsync --daemon        # 启动rsync守护进程服务
[root@backup ~]# ps -ef|grep rsync    # 检测 rsync 服务是否已经启动
root       2921      1  0 11:40 ?        00:00:00 rsync --daemon
root       2923   2837  0 11:40 pts/1    00:00:00 grep --color=auto rsync
[root@backup ~]# netstat -lntup |grep rsync        # 查看 rsync 默认的端口号:873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      2921/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      2921/rsync 
[root@backup ~]# 

1.2 守护进程部署过程 --- 配置文件详述:

期中架构(1)--- 集群构架 & 备份服务

期中架构(1)--- 集群构架 & 备份服务

期中架构(1)--- 集群构架 & 备份服务

2. 客户端部署(存储服务器):

# Rsync客户端部署流程:
# 第一步:确认软件是否安装
[root@nfs01 ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
[root@nfs01 ~]# 

# 第二步:创建认证密码文件(创建认证用户授权密码文件,并对密码文件进行授权)
[root@nfs01 ~]# echo "oldboy123" >>/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# 

# 第三步:进行数据备份测试
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password     # rsync 命令常用的参数: -avz ;rsync_backup@172.16.1.41::backup ---> rsync_backup 为远端认证用户,172.16.1.41 为远端地址, backup 为模块名称(不是目录名);--password-file=/etc/rsync.password  ---> 指定密码文件
sending incremental file list
hosts

sent 189 bytes  received 27 bytes  432.00 bytes/sec
total size is 352  speedup is 1.63
[root@nfs01 ~]# 

# 查看服务端是否已经收到数据
[root@backup ~]# ll /backup/
total 4
-rw-r--r-- 1 rsync rsync 352 Apr 30 16:36 hosts
[root@backup ~]# 

 

备份服务报错总结:

rsync 服务错误排查方法:

# 1. 检查错误日志:
    # 在服务端(备份服务器)实时查看日志的内容: 
    tail -f /var/log/rsyncd.log   # /var/log/rsyncd.log ---> rsync 配置文件中的日志路径 
    
# 2. 可以在模拟环境下,模拟练习一些错误

Rsync服务常见问题汇总讲解:

1. rsync服务端开启的iptables防火墙
  【客户端的错误】
   No route to host        # ---> 这个错误就表明是 防火墙没有关闭
  【错误演示过程】
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   rsync: failed to connect to 172.16.1.41: No route to host (113)
   rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
  【异常问题解决】
   关闭rsync服务端的防火墙服务(iptables)
   [root@backup mnt]# /etc/init.d/iptables stop
   iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
   iptables: Flushing firewall rules:                         [  OK  ]
   iptables: Unloading modules:                               [  OK  ]
   [root@backup mnt]# /etc/init.d/iptables status
   iptables: Firewall is not running.

2. rsync客户端执行rsync命令错误
  【客户端的错误】
   The remote path must start with a module name not a /     # ---> 这个错误表明 是把 模块名称 backup 写成了 路径 /backup
  【错误演示过程】
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backup
   ERROR: The remote path must start with a module name not a /
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  【异常问题解决】
   rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)

3. rsync服务认证用户失败*****
  【客户端的错误】
   auth failed on module oldboy
  【错误演示过程】
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   @ERROR: auth failed on module backup
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  【异常问题解决】
   1. 密码真的输入错误,用户名真的错误
   2. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致
   3. /etc/rsync.password文件权限不是600 (在服务端修改)
   4. rsync_backup:123456密码配置文件后面注意不要有空格
   5. rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称

4. rsync服务位置模块错误
  【客户端的错误】
   Unknown module 'backup'   
  【错误演示过程】  
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   @ERROR: Unknown module 'backup'
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  【异常问题解决】
   1. /etc/rsyncd.conf配置文件模块名称书写错误
   
5. rsync服务权限阻止问题
  【客户端的错误】
   Permission denied
  【错误演示过程】 
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   sending incremental file list
   hosts
   rsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13) 
   sent 196 bytes  received 27 bytes  63.71 bytes/sec
   total size is 349  speedup is 1.57
   rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]   
  【异常问题解决】
   1. 备份目录的属主和属组不正确,不是rsync
   2. 备份目录的权限不正确,不是755
   
6. rsync服务备份目录异常
  【客户端的错误】
   chdir failed   
  【错误演示过程】   
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   @ERROR: chdir failed
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  【异常问题解决】  
   1. 备份存储目录没有建立
   2. 建立的备份存储目录和配置文件定义不一致
   说明:如果没有备份存储目录

7. rsync服务无效用户信息
  【客户端的错误】
   invalid uid rsync
  【错误演示过程】    
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   @ERROR: invalid uid rsync
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  【异常问题解决】  
   rsync服务对应rsync虚拟用户不存在了
    
8. 客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码
  【客户端的错误】
   password file must not be other-accessible
  【错误演示过程】 
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
   password file must not be other-accessible
   continuing without password file
   Password: 
   sending incremental file list
   sent 26 bytes  received 8 bytes  5.23 bytes/sec
   total size is 349  speedup is 10.26
  【异常问题解决】  
   rsync客户端的秘钥文件也必须是600权限

9. rsync客户端连接慢问题
   IP   ===>  域名   # 反向DNS解析
  【错误日志信息】 
   错误日志输出
   2017/03/08 20:14:43 [3422] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
   2017/03/08 20:14:43 [3422] name lookup failed for 172.16.1.31: Name or service not known
   2017/03/08 20:14:43 [3422] connect from UNKNOWN (172.16.1.31)
   2017/03/08 20:14:43 [3422] rsync to backup/ from rsync_backup@unknown (172.16.1.31)
   2017/03/08 20:14:43 [3422] receiving file list
   2017/03/08 20:14:43 [3422] sent 76 bytes  received 83 bytes  total size 349
   正确日志输出
   2017/03/08 20:16:45 [3443] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
   2017/03/08 20:16:45 [3443] connect from nfs02 (172.16.1.31)
   2017/03/08 20:16:45 [3443] rsync to backup/ from rsync_backup@nfs02 (172.16.1.31)
   2017/03/08 20:16:45 [3443] receiving file list
   2017/03/08 20:16:45 [3443] sent 76 bytes  received 83 bytes  total size 349
  【异常问题解决】
   查看日志进行分析,编写rsync服务端hosts解析文件

10 rsync服务没有正确启动
  【错误日志信息】 
   Connection refused (111)
  【错误演示过程】 
   [root@oldboy-muban ~]#  rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   rsync: failed to connect to 172.16.1.41: Connection refused (111)
   rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
  【异常问题解决】
   [root@oldboy-muban ~]# rsync --daemon
   [root@oldboy-muban ~]# ss -lntup |grep rsync
   tcp    LISTEN     0      5                     :::873                  :::*      users:(("rsync",1434,5))
   tcp    LISTEN     0      5                      *:873                   *:*      users:(("rsync",1434,4))
   [root@oldboy-muban ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   sending incremental file list
   hosts  
   sent 196 bytes  received 27 bytes  49.56 bytes/sec
   total size is 349  speedup is 1.57

# 改变 rsync 的端口号的方法:
killall rsync  # 停掉 rsync 服务
rsync --daemon --port 8730  # 启动 rsync 守护进程,并把端口号改成 8730
netstat -lntup   # 查看端口号

# 启动rsync守护进程服务时,指定 配置文件(如,rsync 配置文件没有放在 /etc/ 目录下)
rsync --daemon --config=/alexdir/rsyncd.conf

 

备份扩展功能

# 1. 守护进程多模块功能配置
#第一步:修改配置文件
vim /etc/rsyncd.conf
[backup01]
comment = "backup dir by oldboy"
path = /backup
[backup02]        
comment = "backup dir by oldboy"
path = /backup02
 
# 第二步:创建多模块目录
[root@backup ~]# mkdir /backup02                    # 创建新目录 /backup02
[root@backup ~]# chown -R rsync.rsync /backup02        # 给新目录授权

# 第三步:重启服务程序
[root@backup ~]# killall rsync
[root@backup ~]# killall rsync
rsync: no process killed
[root@backup ~]# rsync --daemon
     
# 第四步:进行测试检查
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup02 --password-file=/etc/rsync.password 
sending incremental file list
hosts

sent 189 bytes  received 27 bytes  432.00 bytes/sec
total size is 352  speedup is 1.63
[root@nfs01 ~]# 

[root@backup ~]# ll /backup02/
total 4
-rw-r--r-- 1 rsync rsync 352 Apr 30 16:36 hosts        # /backup02/ 目录中已经有了备份的 hosts 文件
[root@backup ~]# 
     

2. 守护进程的排除功能实践
# 第一种数据备份排除方式:--exclude 

[root@nfs01 ~]# mkdir /test_dir
[root@nfs01 ~]# touch /test_dir/{a..d}
[root@nfs01 ~]# rsync -avz /test_dir/ --exclude=b --exclude=d rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsy
nc.password 
sending incremental file list
./
a
c

sent 113 bytes  received 49 bytes  324.00 bytes/sec
total size is 0  speedup is 0.00
[root@nfs01 ~]# 
    
    
# rsync -avz /test_dir/ --exclude=b --exclude=d rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password 
# rsync -avz /test_dir/ --exclude={b,d} rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password  
# rsync -avz /test_dir/ --exclude={b..d} rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password  
    
     
# 第二种数据备份排除方式:--exclude-from=file  
[root@nfs01 ~]# vim /test_dir/exclude_file.txt
[root@nfs01 ~]# cat /test_dir/exclude_file.txt 
b                        # 排除文件中的文件或目录要用相对路径 (这个相对路径会和 /test_dir/ 路径自动拼接 )
d                        # 排除文件中,每一行代表一个要排除的文件或目录
exclude_file.txt
[root@nfs01 ~]# rsync -avz /test_dir/ --exclude-from=/test_dir/exclude_file.txt rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password 
sending incremental file list
./
a
c

sent 117 bytes  received 49 bytes  332.00 bytes/sec
total size is 0  speedup is 0.00
[root@nfs01 ~]# 


3. 守护进程来创建备份目录
[root@nfs01 ~]# rsync -avz /etc/hosts --exclude-from=/test_dir/exclude_file.txt rsync_backup@172.16.1.41::backup01/sa/ --password-file=/etc/rsync.password        # sa 后面要加上 / ,表示一个目录;备份到 backup01 模块下的 /sa/ 目录(/sa/目录有就备份,没有则先创建再备份)
sending incremental file list
created directory sa
hosts

sent 189 bytes  received 27 bytes  432.00 bytes/sec
total size is 352  speedup is 1.63
[root@nfs01 ~]# rsync -avz /etc/hosts --exclude-from=/test_dir/exclude_file.txt rsync_backup@172.16.1.41::backup01/dev/ --password-file=/etc/rsync.password
sending incremental file list
created directory dev
hosts

sent 189 bytes  received 27 bytes  144.00 bytes/sec
total size is 352  speedup is 1.63
[root@nfs01 ~]# 

# 在备份服务器中检测
[root@backup ~]# tree /backup
/backup
├── a
├── c
├── dev
│   └── hosts
└── sa
    └── hosts

2 directories, 4 files
[root@backup ~]# 


4. 守护进程的访问控制配置
    三种情况:
    1. rsync配置文件中,只有白名单,白名单网段或主机信息允许。其余阻止
    2. rsync配置文件中,只有黑名单,黑名单网段或主机信息阻止,其余允许
    3. rsync配置文件中,有黑名单也要白名单,白名单网段或主机信息允许,黑名单网段或主机信息阻止,其余允许
    建议只选择前两种方式配置
    hosts allow = 172.16.1.0/24
    hosts deny = 0.0.0./32
    

5. 守护进程无差异同步配置
    # rsync 的 --delete 参数
    我有的,你也有;我没有的,你也不能有
    rsync -avz /test_dir/ --delete rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
    说明:一定要谨慎使用,否则可能会清空备份目录;
          如果要快速清空目录数据,也可以使用无差异同步清空


6. 守护进程的列表功能配置
    list = false
    说明:表示是否列表显示rsync服务端所有模块信息
    [root@nfs01 test_dir]# rsync rsync_backup@172.16.1.41::
    backup01           "backup dir by oldboy"
    backup02           "backup dir by oldboy"
上一篇:项目:全网数据脚本自动化备份!!!难道这就是……


下一篇:MySql定时备份脚本