综合架构章节一 ----学习笔记

综合架构章节一 ----学习笔记-1

架构图讲解和实战

用户:网站访问人员

防火墙:保安

作用:访问策略控制

nginx (均衡): 迎宾

作用:负责流量分发

web服务器:php java 处理用户请求

数据库:存储数据

部署架构:

  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.
       批量管理多台服务器主机
    

部署网站架构:

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

https://www.jumpserver.org/

zabbix 监控服务器

https://www.zabbix.com/

架构服务器优化

重点回顾

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


posted @ 2024-03-15 23:22  三思博客  阅读(5)  评论(0编辑  收藏  举报