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"

Linux(9):期中架构(1)--- 集群构架 & 备份服务的更多相关文章

  1. Linux系统——MHA-Atlas-MySQL高可用集群

    Linux系统——MHA-Atlas-MySQL高可用集群 MHA MHA介绍MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的 ...

  2. 在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台

    KubeSphere 是在 Kubernetes 之上构建的以应用为中心的企业级容器平台,所有供为用户提供简单易用的操作界面以及向导式操作方式.同时,KubeSphere Installer 提供了 ...

  3. 庐山真面目之四微服务架构Consul集群和Nginx版本实现

    庐山真面目之四微服务架构Consul集群和Nginx版本实现 一.简介      在上一篇文章<庐山真面目之三微服务架构Consul版本实现>中,我们已经探讨了如何搭建基于单节点Consu ...

  4. 庐山真面目之六微服务架构Consul集群、Ocelot网关集群和Nginx版本实现

    庐山真面目之六微服务架构Consul集群.Ocelot网关集群和Nginx版本实现 一.简介      在上一篇文章<庐山真面目之五微服务架构Consul集群.Ocelot网关和Nginx版本实 ...

  5. 庐山真面目之七微服务架构Consul集群、Ocelot网关集群和IdentityServer4版本实现

    庐山真面目之七微服务架构Consul集群.Ocelot网关集群和IdentityServer4版本实现 一.简介      在上一篇文章<庐山真面目之六微服务架构Consul集群.Ocelot网 ...

  6. LVS : Linux Virtual Server 负载均衡,集群,高并发,robust

    1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...

  7. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  8. Linux环境快速部署Zookeeper集群

    一.部署前准备: 1.下载ZooKeeper的安装包: http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper-3.4.9. 2.将下载的 ...

  9. 《跟老男孩学Linux运维:Web集群实战》读书笔记

    Linux 介绍 Linux 安装 Linux 调优 Web 基础 Nginx 应用 LNMP 应用 PHP 缓存加速 Nginx 调优 MySQL 应用 NFS 网络文件共享 Nginx 反向代理与 ...

随机推荐

  1. 洛谷 P1363 幻想迷宫

    题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...

  2. codevs 2059 逃出克隆岛

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description oi小组的yh酷爱玩魔兽rpg,每天都会在u9搜索最新的rpg地图. 今天,他 ...

  3. 技术大众化--10款无需编程的App DIY开发工具

    你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App DIY开发工具.DIY开发工具不仅节省了开发时间和资金,更为那些创意无限热爱应用的人提供 ...

  4. 转向ARC的说明

    转自hherima的博客原文:Transitioning to ARC Release Notes(苹果官方文档) ARC是一个编译器特征,它提供了对OC对象自动管理内存.ARC让开发者专注于感兴趣的 ...

  5. c++ 中的函数调用中的参数传递

    概述 初学 \(c++\),一直搞不懂其参数传递方式.故找到一篇不错的文章:刘志华的深入探讨C++语言中参数传递问题.亲自实践一遍,并作此记录,以加深印象.     主要内容 本文主要分为五个小部分, ...

  6. java反序列化字节转字符串工具

    https://github.com/NickstaDB/SerializationDumper SerializationDumper-v1.1.jar 用法 : java -jar Seriali ...

  7. 企业自颁布服务器证书的有效性验证(C#为例)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/notjusttech/article/details/72779904 目前根据项目的需要,整理了一 ...

  8. PAT (Basic Level) Practise (中文)-1029. 旧键盘(20)

    PAT (Basic Level) Practise (中文)-1029. 旧键盘(20) http://www.patest.cn/contests/pat-b-practise/1029 旧键盘上 ...

  9. activiti整合开发实例总结

    参考手册:http://www.mossle.com/docs/activiti/ 一.applicationContext.xml中引入activiti相关配置的xml文件 <!-- begi ...

  10. tp5对接支付宝支付简单集成

    对于每个刚开始工作的新手来说,无论支付宝支付还是微信支付都是跑不掉的一个小门槛. 在加上本人比较技术比较渣(比较懒导致的),不太喜欢引用那么大的SDK,于是就简单集成了一下支付宝的支付. 但也只是只有 ...