01. 了解集群架构服务器组成
基本架构组成:(用于让用户进行访问)
# 前端服务部分: 1)顾客-用户 是一个访问者,请求访问网站页面 2)保安-防火墙设备 对访问架构用户进行策略控制,正常访问网站用户,可以放行进入;非法人员(***)访问网站,禁止进入 3)对讲机-交换机(外网) 提供架构中服务器相互通讯交流的需求(提供外部人员访问) 4)迎宾人员-负载均衡服务器 对用户的访问请求进行调度处理 5)服务员-网站web服务器 对用户的请求进行响应处理 # 后端服务部分: 1)对讲机-交互机(内网) 提供架构中服务器相互通讯交流的需求(提供内部局域网服务器通讯交流) 2)厨师-数据库服务器 主要用于存储用户提交文字(字符串)数据信息 3)厨师-存储服务器 主要用于存储用户上传视频 音频 图片 附件等数据资料 4)厨师-备份服务器 主要用于对用户存储(上传)数据信息进行统一备份管理 5)厨师-缓存服务器 主要用于存储用户经常访问的数据信息,提升请求数据信息的响应效率
扩展架构组成:(用于让运维人员远程管理架构中的服务器)
1)员工-运维人员 可以远程管理架构中服务器 2)审计-跳板机服务器 用于监管内部运维人员操作记录信息,一旦出现架构问题,可以快速定位问题原因,进行相应人员失误问责 3)经理-批量管理服务器 通过批量管理服务器可以批量管理架构中多台服务器,提升工作效率 4)监控-监控服务器 用于监控管理架构中的服务器运行情况,一旦出现问题进行发送告警给相关运维管理人员
基本架构结构:
基本架构组成、作用及软件实现
扩展架构结构:
扩展架构组成、作用及软件实现
02. 集群架构环境统一规划说明
1. 服务器及服务规划说明 2. 主机地址及主机名规划 3. 安装及配置路径等规划
1. 服务器及服务规划说明
2. 主机地址及主机名规划
2.1 前端服务
2.2 后端服务
3. 安装及配置路径等规划
虚拟软件网络配置 --- 配置虚拟网络信息
# 第一步:在虚拟软件中配置虚拟局域网: 配置虚拟网段信息,以及虚拟网关信息 # 第二步:在虚拟机软件中虚拟机添加网卡 虚拟主机中设置了两块网卡: 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
虚拟主机克隆操作
# 第一步:调整虚拟主机网络配置信息: # 一清空 两删除 # 两删除:删除网卡(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 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 守护进程部署过程 --- 配置文件详述:
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"