综合架构章节一 ----学习笔记
综合架构章节一 ----学习笔记-1
架构图讲解和实战
用户:网站访问人员
防火墙:保安
作用:访问策略控制
nginx (均衡): 迎宾
作用:负责流量分发
web服务器:php java 处理用户请求
数据库:存储数据
部署架构:
-
中小规模网站架构组成
1. 顾客--用户 访问网站的人员 2. 保安--防火墙 (firewalld. 进行访问策略控制 3. 迎宾--负载均衡服务器 (nginx. 对用户的访问请求进行调度处理 4. 服务员---web服务器 (nginx. 处理用户的请求 5. 厨师---数据库服务器 (mysql. 存储的字符数据 (耳机 500 索尼 黑色 北京地址 订单时间2019-05-05 13:00. 6. 厨师---存储服务器 (nfs. 存储图片 音频 视频 附件等数据信息 7. 厨师---备份服务器 (rsync+crond-定时备份 rsync+sersync--实时备份. 存储网站所有服务器的重要数据 8. 厨师---缓存服务器 (memcache redis mongodb. a 将数据信息存储到内存中 b 减缓服务器的压力 9. 经理---批量管理服务器 (ansible. 批量管理多台服务器主机
部署网站架构:
1. 需要解决网站架构单点问题
迎宾: 高可用服务---keepalived
数据库: 高可用服务---mha
存储服务: 高可用服务---keepalived实现
高可用服务---分布式存储
解决单点问题
nginx搞了高可用
数据库高可用 mha
存储服务器
1.实际配置模版机器
1.系统优化过程
1. 模板机优化配置---hosts文件配置
\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
ip 太多 不好记 所以我们用名称访问 方便记忆
2. 模板机优化配置---更改yum源
#更改yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup &&\
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
PS:yum repolist 列出yum源信息;讲解什么是epel源
注意: epel是yum的扩展源
3. 模板机优化配置---关闭selinux
#关闭selinux
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce
4. 模板机优化配置---关闭iptables
#关闭iptables centos7
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
5. 模板机优化配置---提权oldboy可以sudo (可选配置)
#提权oldboy可以sudo(可选配置)
#自己的配置
useradd oldboy
echo 12345|passwd --stdin it01
echo "it01 ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c
切换到it01下
就只能用sudo ls
来进行操作了 所有的命令都要加上sudo 才可以执行
实际操作演示
[root@master ~]# su it01
[it01@master root]$ mkdir it01
mkdir: cannot create directory ‘it01’: Permission denied
[it01@master root]$ sudo mkdir it01
[it01@master root]$ ls
ls: cannot open directory .: Permission denied
[it01@master root]$ sudo ls
anaconda-ks.cfg it01
#原别人配置
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
6. 模板机优化配置---英文字符集
#英文字符集
localectl set-locale LANG="en_US.UTF-8"
7. 模板机优化配置---时间同步
#时间同步
yum install -y ntpdate
ntpdate ntp1.aliyun.com
echo '#time sync by lidao at 2017-03-08' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
命令注解:
在Linux系统的root用户下设置一个定时任务,让系统每5分钟自动与阿里云的NTP服务器进行一次时间同步,并且不显示任何输出信息
crontab -l
[root@master ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
[root@master ~]# crontab -e
crontab: installing new crontab
2.虚拟机克隆
链接克隆
优点:省资源 时间很快
缺点:依赖模版主机 模版主机挂了 其他都挂
完整克隆
克隆后主机需做操作
1.修改主机名
hostnamectl set-hostname node
2.修改ip
#自己的虚拟机网卡信息
ip 10.0.1.0
子网掩码 255.225.225.0
网关 10.0.1.2
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
UUID="de826431-a23c-4dc2-bc58-1a885e9b5058"
DEVICE="eno16777736"
ONBOOT="yes"
HWADDR="00:0C:29:ED:03:07"
PEERDNS="yes"
PEERROUTES="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
如需修改网卡 可以删除原来的配置文件ens33 自己在重建一个
注意 修改网卡名必须
DEVICE="eno16777736"
NAME="eno16777736"
不光这里要一样 ,还有文件名必须是ifcfg-开头 最好都设置一样 不然会报错的
ubuntu的yaml格式更加严格
ROXY_METHOD="none"
BROWSER_ONLY="yes"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="de826431-a23c-4dc2-bc58-1a885e9b5058"
DEVICE="eno16777736"
ONBOOT="yes"
IPADDR=10.0.1.100
NETMASK=255.255.255.0
GATEWAY=10.0.1.2
DNS1=8.8.8.8
重启网卡
sudo systemctl enable NetworkManager.service # 若使用NetworkManager
sudo systemctl start NetworkManager.service # 启动服务
# 或者对于传统的network服务
sudo systemctl enable network.service
sudo systemctl start network.service
nmcli connection reload
或者reboot也行
#
各系统网卡生效方法
CentOS6
service network restart
CentOS7
systemctl restart network
CentOS8和rocky
nmcli connnection reload
nmcli connnettion up eth0
#通用
reboot
修改主机名
hostnamectl set-hostname node
问题: 补充: 克隆好的主机无法远程连接:
解决方式:
01. 利用ping方式测试
02. 关闭xshell软件重新打开
rsync服务
开源免费 : 备份 一个工具
本地备份 : cp
rsync可以当作cp
实战rsync备份
yum -y install rsync
如果报错 请输入全称试试
yum -y install rsync-3.1.2-12.el7_9.x86_64
本地备份实现
rsync ifcfg-eno16777736 /home
具体实操过程
[root@node ~]# ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@node ~]# cd /home
[root@node home]# ls
it01 wang
[root@node home]# cd
[root@node ~]# rsync ifcfg-eno16777736 /home
[root@node ~]# cat /home/
ifcfg-eno16777736 it01/ wang/
[root@node ~]# cat /home/
远程备份
scp 需要复制的文件 账户@目的ip地址:/对方的备份目录下
scp ifcfg-eno16777736 root@10.0.1.101:/mnt
实现过程
源主机
[root@node ~]# scp ifcfg-eno16777736 root@10.0.1.101:/mnt
The authenticity of host '10.0.1.101 (10.0.1.101)' can't be established.
ECDSA key fingerprint is ae:9d:91:23:b2:20:e5:5d:df:d9:8a:b3:34:64:68:16.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.1.101' (ECDSA) to the list of known hosts.
root@10.0.1.101's password:
ifcfg-eno16777736
目的主机
[root@node mnt]# ls
[root@node mnt]# ls
ifcfg-eno16777736
scp 常用选项
-r 递归复制
-p 保持文件属性
1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。
用rsync实现远程备份备份
rsync -rp 需要复制的文件 对方的ip地址:/ 需要复制到那个目录
rsync -rp /etc/hosts 10.0.1.101:/mnt
rsync -rp 递归保留文件原属性
具体实现过程
源主机
[root@node ~]# cat /etc/hosts
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
root@node ~]# rsync -rp /etc/hosts 10.0.1.101:/mnt
root@10.0.1.101's password:
目的主机
[root@node-1 mnt]# ls
ifcfg-eno16777736
[root@node-1 mnt]# ls
hosts ifcfg-eno16777736
[root@node-1 mnt]# cat hosts
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
rsync常用参数
rsync是一款强大的文件同步工具,具有丰富的选项。以下是一些常用的rsync命令行选项:
1. `-a` 或 `--archive`:
这是一个组合选项,相当于 `-rlptgoD`(递归、符号链接处理、保留属性、保持时间戳、复制硬链接、保留设备文件和特殊文件)。它用于归档模式,尽可能保持源文件的所有元数据。
2. `-v` 或 `--verbose`:
显示详细输出信息,包括正在处理的文件列表。
3. `-z` 或 `--compress`:
在传输过程中启用压缩,以减少网络带宽使用。
4. `-r` 或 `--recursive`:
递归地同步目录及其子目录内容。
5. `-u` 或 `--update`:
只更新比目标旧或不存在于目标的文件。
6. `-n` 或 `--dry-run`:
干运行模式,仅显示即将执行的操作,但不实际进行任何文件传输。
7. `-e` 或 `--rsh=COMMAND`:
指定用于连接远程系统的shell程序,默认为ssh。例如:`-e ssh`。
8. `-p` 或 `--perms`:
保持文件权限不变。
9. `-t` 或 `--times`:
保持文件修改时间戳不变。
10. `-g` 或 `--group`:
保持组信息不变。
11. `-o` 或 `--owner`:
保持所有者信息不变。
12. `-l` 或 `--links`:
保留硬链接关系(在归档模式下默认开启)。
13. `--delete`:
删除目标目录中源目录没有的文件或目录,确保两边一致。
14. `--exclude=PATTERN`:
排除匹配指定模式的文件或目录。
15. `-i` 或 `--itemize-changes`:
输出详细的更改信息,每个文件都会列出改变状态。
面试题
公司如何备份数据
使用rsync 实时同步到异地服务器
1. 利用开源软件实现数据备份 rsync(免费.
2. 利用企业网盘进行数据备份 七牛云存储
3. 利用自建备份存储架构 两地三中心
缓存服务: 高可用服务--- 缓存服务集群/哨兵模式
2. 内部员工如何远程访问架构
部署搭建VPN服务器 PPTP vpn
https://blog.oldboyedu.com/pptp-l2tp/
3. 内部员工操作管理架构服务器要进行审计
跳板机服务器 jumpserver
https://jumpserver.readthedocs.io/zh/docs/setup_by_centos.html
4. 架构中服务器出现问题需要进行提前报警告知
部署监控服务器 zabbix
跳板机 jumserver
zabbix 监控服务器
架构服务器优化
重点回顾
0.架构基础
01. 路由交换
- 交换机主要用于局域网(LAN)内部的数据交换,它通过学习和记忆网络中各设备的MAC地址来建立MAC地址表,并依据这个表将数据帧从一个端口转发至另一个端口,实现同网段内的快速二层通信。
- 路由器则是网络层设备,它主要负责不同网络之间的数据传输。路由器根据目标IP地址和路由表中的信息决定数据包的转发路径,实现不同局域网之间的互联和网络层的寻址。
02. 路由配置方法
- 静态路由:管理员手动在路由器上配置的固定路由规则,当网络拓扑结构稳定,或者小型网络中,常采用静态路由。
- 动态路由:路由器通过运行路由协议(如RIP、OSPF、BGP等)自动发现并维护网络拓扑变化,从而实时更新路由表。
03. OSI7层模型
- 数据封装与解封装:在数据从应用层传送到物理层的过程中,每一层都会在其基础上添加头部信息(封装),形成该层的协议数据单元(PDU)。相反,在接收端,数据经过物理层到应用层时,每一层都会去除相应头部信息(解封装)。
04. TCP/UDP协议
- TCP三次握手:客户端发送SYN,服务器回应SYN+ACK,客户端回应ACK,建立起TCP连接。
- TCP四次挥手:断开连接时,主动关闭方发送FIN,对方回应ACK,对方发送FIN,主动关闭方回应ACK,完成连接的彻底关闭。
- TCP十一种状态集转换:CLOSED、LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、LAST_ACK、TIME_WAIT、CLOSING等状态间的转换反映了TCP连接的整个生命周期。
05. 网络的重要原理
- DNS解析原理:域名系统(DNS)通过查询域名服务器将易于记忆的域名转换为计算机可识别的IP地址。
- 反向DNS解析:PTR记录,用于将IP地址解析回域名。
- ARP解析原理:地址解析协议(ARP)用于将IP地址解析为MAC地址,通过广播请求获取同一局域网内特定IP地址对应的硬件MAC地址。
06. IP地址划分
- IP地址的分类:A、B、C、D、E五类地址,其中前三类为主机地址,D类为组播地址,E类为保留地址。
- IP地址的子网划分方法:通过CIDR(无类别域间路由)技术和子网掩码对IP地址进行子网划分,以满足不同规模网络的需求。
07. Linux系统中路由配置
- 静态默认网关路由:设置默认路由出口,即当数据包的目的地不在本地路由表中有明确条目时,通过默认网关发送。
- 静态网段路由:为特定目的网络配置静态路由条目,指明下一跳路由器或直接接口。
- 静态主机路由:为单个目的主机配置静态路由,直接指向下一跳路由器或接口,不依赖于目的网络的路由决策。
1.中小规模网站架构组成
1, 顾客--用户
访问网站的人员
2, 保安--防火墙 (firewalld,
进行访问策略控制
3, 迎宾--负载均衡服务器 (nginx,
对用户的访问请求进行调度处理
4, 服务员---web服务器 (nginx,
处理用户的请求
5, 厨师---数据库服务器 (mysql,
存储的字符数据 (耳机 500 索尼 黑色 北京地址 订单时间2019-05-05 13:00,
6, 厨师---存储服务器 (nfs,
存储图片 音频 视频 附件等数据信息
7, 厨师---备份服务器 (rsync+crond-定时备份 rsync+sersync--实时备份,
存储网站所有服务器的重要数据
8, 厨师---缓存服务器 (memcache redis mongodb,
a 将数据信息存储到内存中
b 减缓服务器的压力
9, 经理---批量管理服务器 (ansible,
批量管理多台服务器主机
2.综合架构规划
综合架构规划
主机名称和IP地址规划
01. 防火墙服务器 firewalld 10.0.0.81(外网地址) 172.16.1.81(内外地址) 软件: firewalld
02. 负载均衡服务器 lb01 10.0.0.5 172.16.1.5 软件: nginx keepalived
03. 负载均衡服务器 lb02 10.0.0.6 172.16.1.6 软件: nginx keepalived
04. web服务器 web01 10.0.0.7 172.16.1.7 软件: nginx
05. web服务器 web02 10.0.0.8 172.16.1.8 软件: nginx
06. web服务器 web03 10.0.0.9(存储) 172.16.1.9 软件: nginx
07. 数据库服务器 db01 10.0.0.51 172.16.1.51 软件: mysql(慢) mariaDB
08. 存储服务器 nfs01 10.0.0.31 172.16.1.31 软件: nfs
09. 备份服务器 backup 10.0.0.41 172.16.1.41 软件: rsync
10. 批量管理服务器 m01 10.0.0.61 172.16.1.61 软件: ansible
11. 跳板机服务器 jumpserver 10.0.0.71(61) 172.16.1.71 软件: jumpserver
12. 监控服务器 zabbix 10.0.0.72(61) 172.16.1.72 软件: zabbix
先把路走通,再进行变通
*10. 缓存服务器 忽略
3.系统优化过程
1. 模板机优化配置---hosts文件配置
\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
ip 太多 不好记 所以我们用名称访问 方便记忆
2. 模板机优化配置---更改yum源
#更改yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup &&\
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
PS:yum repolist 列出yum源信息;讲解什么是epel源
3. 模板机优化配置---关闭selinux
#关闭selinux
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce
4. 模板机优化配置---关闭iptables
#关闭iptables centos7
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
5. 模板机优化配置---提权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
6. 模板机优化配置---英文字符集
#英文字符集
localectl set-locale LANG="en_US.UTF-8"
7. 模板机优化配置---时间同步
#时间同步
yum install -y ntpdate
echo '#time sync by lidao at 2017-03-08' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
crontab -l
8. 模板机优化配置---加大文件描述
yum install -y lsof
lsof -i:22
#加大文件描述
echo '* - nofile 65536' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
说明:
一个服务程序运行起来,会打开相应的文件
crond定时任务服务---systemctl start crond --- 打开相应文件
/var/spool/cron/root --- 加载打开配置文件
/var/log/cron --- 加载打开日志文件
9. 模板机优化配置---安装其他小软件
#安装其他小软件
yum install lrzsz nmap tree dos2unix nc telnet wget lsof ntpdate bash-completion bash-completion-extras -y
10. 模板机优化配置---ssh连接速度慢优化
#ssh连接速度慢优化
sed -i.bak 's@#UseDNS yes@UseDNS no@g;s@^GSSAPIAuthentication yes@GSSAPIAuthentication no@g' /etc/ssh/sshd_config
systemctl restart sshd
4.进行模板主机克隆操作
1. 进行模板机快照拍摄
2. 进行虚拟主机克隆
创建链接克隆 (学习环境)
优势:
a 节省物理主机资源
b 克隆主机效率快
劣势:
a 模板主机删除,链接主机也会失效
创建完整克隆 (企业应用)
优势:
a 模板主机删除,克隆主机依然可以使用
劣势:
a 比较消耗物理主机资源
b 克隆主机效率低
3. 克隆后虚拟主机配置
a 修改主机名称
hostnamectl set-hostname backup
b 修改主机地址
sed -i 's#200#41#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
grep 41 /etc/sysconfig/network-scripts/ifcfg-eth[01]
sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth[01]
grep UUID /etc/sysconfig/network-scripts/ifcfg-eth[01]
systemctl restart network
PS: 一台一台顺序启动,进行修改,不要同时启动
补充: 克隆好的主机无法远程连接:
解决方式:
01. 利用ping方式测试
02. 关闭xshell软件重新打开
5.备份服务器说明
作用:
01. 数据备份的服务器
02. 进行日志统一保存
[root@nfs01 backup]# grep -r oldboy /backup/
/backup/10.0.0.7_bak/oldboy.log:oldboy
如何部署搭建备份服务器: rsync服务
6.什么是rsync服务
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具
7.rsync软件使用方法:
rsync命令 1v4
a 本地备份数据 cp
[root@nfs01 backup]# cp /etc/hosts /tmp
[root@nfs01 backup]# rsync /etc/hosts /tmp/
b 远程备份数据 scp
scp -rp /etc/hosts root@172.16.1.41:/backup
root@172.16.1.41's password:
hosts 100% 371 42.8KB/s 00:00
-r --- 递归复制传输数据
-p --- 保持文件属性信息不变
[root@nfs01 ~]# rsync -rp /etc/hosts 172.16.1.41:/backup/hosts_rsync
root@172.16.1.41's password:
rsync远程备份目录:
[root@nfs01 ~]# rsync -rp /oldboy 172.16.1.41:/backup --- 备份的目录后面没有 /
root@172.16.1.41's password:
面试题: 有一个存储数据信息的目录, 目录中数据存储了50G数据, 如何将目录中的数据快速删除
rm /目录/* -rf
8.rsync命令语法格式
SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
本地备份数据:
src: 要备份的数据信息
dest: 备份到什么路径中
远程备份数据:
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
[USER@] --- 以什么用户身份拉取数据(默认以当前用户)
hosts --- 指定远程主机IP地址或者主机名称
SRC --- 要拉取的数据信息
dest --- 保存到本地的路径信息
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
SRC --- 本地要进行远程传输备份的数据
[USER@] --- 以什么用户身份推送数据(默认以当前用户)
hosts --- 指定远程主机IP地址或者主机名称
dest --- 保存到远程的路径信息
守护进程方式备份数据 备份服务
1. 可以进行一些配置管理
2. 可以进行安全策略管理
3. 可以实现自动传输备份数据
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
9.rsync服务部署安装过程
linux系统安装部署服务流程:
a 下载安装软件 yum
b 编写配置文件
c 搭建服务环境 备份的目录/目录权限
d 启动服务程序 开机自动启动
e 测试服务功能
10.课程总结
1. 网站架构组成
2. 网站架构规划(主机名称 主机地址 系统优化(脚本))
3. 虚拟主机克隆操作
a 关闭主机--链接克隆
b 克隆好的主机一台一台按顺序启动,修改配置(主机名称 主机地址)
4. rsync备份服务
rsync命令用法 1v4
rsync语法格式 本地备份 远程备份
学习新命令
scp
scp命令文件传输
scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
语法
scp(选项)(参数)
选项
-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。
参数
源文件:指定要复制的源文件。
目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)。
实例
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
从远处复制文件到本地目录
scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
从10.10.10.10机器上的/opt/soft/的目录中下载nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中。
从远处复制到本地
scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/
从10.10.10.10机器上的/opt/soft/中下载mongodb目录到本地的/opt/soft/目录来。
上传本地文件到远程机器指定目录
scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
复制本地/opt/soft/目录下的文件nginx-0.5.38.tar.gz到远程机器10.10.10.10的opt/soft/scptest目录。
上传本地目录到远程机器指定目录
scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
上传本地目录/opt/soft/mongodb到远程机器10.10.10.10上/opt/soft/scptest的目录中去。
rsync
rsync命令常用工具命令
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。
语法
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]host:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
对应于以上六种命令格式,rsync有六种不同的工作模式:
拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup
使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src
使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data
从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack
从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www
列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www
选项
-v, --verbose 详细模式输出。
-q, --quiet 精简输出模式。
-c, --checksum 打开校验开关,强制对文件传输进行校验。
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-r, --recursive 对子目录以递归模式处理。
-R, --relative 使用相对路径信息。
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀。
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
-l, --links 保留软链结。
-L, --copy-links 想对待常规文件一样处理软链结。
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。
--safe-links 忽略指向SRC路径目录树以外的链结。
-H, --hard-links 保留硬链结。
-p, --perms 保持文件权限。
-o, --owner 保持文件属主信息。
-g, --group 保持文件属组信息。
-D, --devices 保持设备文件信息。
-t, --times 保持文件时间信息。
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。
-n, --dry-run现实哪些文件将被传输。
-w, --whole-file 拷贝文件,不进行增量检测。
-x, --one-file-system 不要跨越文件系统边界。
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。
--delete 删除那些DST中SRC没有的文件。
--delete-excluded 同样删除接收端那些被该选项指定排除的文件。
--delete-after 传输结束以后再删除。
--ignore-errors 及时出现IO错误也进行删除。
--max-delete=NUM 最多删除NUM个文件。
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。
--force 强制删除目录,即使不为空。
--numeric-ids 不将数字的用户和组id匹配为用户名和组名。
--timeout=time ip超时时间,单位为秒。
-I, --ignore-times 不跳过那些有同样的时间和长度的文件。
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。
-T --temp-dir=DIR 在DIR中创建临时文件。
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。
-P 等同于 --partial。
--progress 显示备份过程。
-z, --compress 对备份的文件在传输时进行压缩处理。
--exclude=PATTERN 指定排除不需要传输的文件模式。
--include=PATTERN 指定不排除而需要传输的文件模式。
--exclude-from=FILE 排除FILE中指定模式的文件。
--include-from=FILE 不排除FILE指定模式匹配的文件。
--version 打印版本信息。
--address 绑定到特定的地址。
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。
--port=PORT 指定其他的rsync服务端口。
--blocking-io 对远程shell使用阻塞IO。
-stats 给出某些文件的传输状态。
--progress 在传输时现实传输过程。
--log-format=formAT 指定日志文件格式。
--password-file=FILE 从FILE中得到密码。
--bwlimit=KBPS 限制I/O带宽,KBytes per second。
-h, --help 显示帮助信息。
实例
SSH方式
首先在服务端启动ssh服务:
service sshd start
启动 sshd: [确定]
使用rsync进行同步
接下来就可以在客户端使用rsync命令来备份服务端上的数据了,SSH方式是通过系统用户来进行备份的,如下:
rsync -vzrtopg --progress -e ssh --delete work@172.16.78.192:/www/* /databack/experiment/rsync
work@172.16.78.192's password:
receiving file list ...
5 files to consider
test/
a
0 100% 0.00kB/s 527:35:41 (1, 20.0% of 5)
b
67 100% 65.43kB/s 0:00:00 (2, 40.0% of 5)
c
0 100% 0.00kB/s 527:35:41 (3, 60.0% of 5)
dd
100663296 100% 42.22MB/s 0:00:02 (4, 80.0% of 5)
sent 96 bytes received 98190 bytes 11563.06 bytes/sec
total size is 100663363 speedup is 1024.19
上面的信息描述了整个的备份过程,以及总共备份数据的大小。
后台服务方式
启动rsync服务,编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disable=no,并重启xinetd服务,如下:
vi /etc/xinetd.d/rsync
#default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync {
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
/etc/init.d/xinetd restart
停止 xinetd: [确定]
启动 xinetd: [确定]
创建配置文件,默认安装好rsync程序后,并不会自动创建rsync的主配置文件,需要手工来创建,其主配置文件为“/etc/rsyncd.conf”,创建该文件并插入如下内容:
vi /etc/rsyncd.conf
uid=root
gid=root
max connections=4
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsyncd.passwd
hosts deny=172.16.78.0/22
[www]
comment= backup web
path=/www
read only = no
exclude=test
auth users=work
创建密码文件,采用这种方式不能使用系统用户对客户端进行认证,所以需要创建一个密码文件,其格式为“username:password”,用户名可以和密码可以随便定义,最好不要和系统帐户一致,同时要把创建的密码文件权限设置为600,这在前面的模块参数做了详细介绍。
echo "work:abc123" > /etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd
备份,完成以上工作,现在就可以对数据进行备份了,如下:
rsync -avz --progress --delete work@172.16.78.192::www /databack/experiment/rsync
Password:
receiving file list ...
6 files to consider
./ files...
a
0 100% 0.00kB/s 528:20:41 (1, 50.0% of 6)
b
67 100% 65.43kB/s 0:00:00 (2, 66.7% of 6)
c
0 100% 0.00kB/s 528:20:41 (3, 83.3% of 6)
dd
100663296 100% 37.49MB/s 0:00:02 (4, 100.0% of 6)
sent 172 bytes received 98276 bytes 17899.64 bytes/sec
total size is 150995011 speedup is 1533.75
恢复,当服务器的数据出现问题时,那么这时就需要通过客户端的数据对服务端进行恢复,但前提是服务端允许客户端有写入权限,否则也不能在客户端直接对服务端进行恢复,使用rsync对数据进行恢复的方法如下:
rsync -avz --progress /databack/experiment/rsync/ work@172.16.78.192::www
Password:
building file list ...
6 files to consider
./
a
b
67 100% 0.00kB/s 0:00:00 (2, 66.7% of 6)
c
sent 258 bytes received 76 bytes 95.43 bytes/sec
total size is 150995011 speedup is 452080.87