rsync?

#1.什么是备份?为什么要备份?备份哪些数据?
简答:1、备份:就是给源文件增加一个副本
     2、为了数据的安全性
     3、防止误删
     4、能够快速恢复
     5、备份比较重要的数据

#2.为什么使用rsync来备份数据?为什么不用scp呢?
简答:rsync远程同步工具支持可以实现增量的同步
      scp不支持增量备份,只支持全量备份,会造成资源的浪费,比如磁盘空间等等

#3.为什么客户端推送给rsync服务器上的数据权限都会发生变化?
简答:因为客户端推送数据到rsync服务器,rsync服务器由对应的用户将数据写入,所以权限会发生变化

nfs

#1.nfs为什么要保证服务端压缩的用户与客户端的用户一致?
简答:因为我们要进行远程挂载,解决我们多台机器静态资源一致性问题

#2.nfs能否实现高可用?如何实现?高可用实现很麻烦是否考虑gfs?
简答:gfs主要是构建在廉价服务器之上的大型分布式文件系统,
      大部分都是以数GB的大文件,绝大数文件是在文件末尾进行追加,
      而不是覆盖,一旦写完之后,对文件的操作就只有读,而且都是顺序读

sersync

###1.为什么要使用sersync做实时同步。你们在什么场景下会使用到实时同步?
简答:主要是能够让本地快速切换至云端;在我们同步的目录数量高达几百G甚至1T以上,
       文件很多时,我们采用rsync+sersync

#2.sersync如何实现的实时同步,请说出实现思路?
简答:主要借助于一个通知接口,inotify.inotify监控本地主机的事件
(创建,删除,修改)则通知执行动作,这个动作可以是rsync同步,也可以是其他

http协议

#1.为什么会出现http1.0 1.1 2.0?
简答:HTTP1.0:最早(1996年)是在网页中使用,只是简单的使用在网页和网络请求上;一对一  短连接
      HTTP1.1:在1999年才开始广泛用于现在的各大浏览器网络请求中,也是目前最为广泛的HTTP协议;
              它主要体现在缓存处理、带宽优化及网络连接的使用,错误通知的管理,一对多  长连接

      HTTP2.0:多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行

#2.http请求中携带了哪些请求报文?
简答:请求头:
       1.GET
       2.POST
       3.head
     请求头部: 参数
       User-Agent
       Accept
       Host
     空行
     请求数据

#3.服务端响应客户端时,响应的状态码有哪些?响应的报文有哪些?都是什么含义?

200     ok                          正常
    301     redirect                    跳转 (永久)
    302     redirect                    跳转 (临时)
    304     Not Modified                代表浏览器缓存
    401     Authorization Required      验证失败
    403     Forbidden                   1.权限不足  2.找不到首页
    404     Not Found                   服务器上没有你想要的的资源
    500                                 服务器错误  ( 可能会碰到    代码  )
    502     Bad Gateway                 找不到后端服务  nginx --> php
    503                                 非常繁忙,负载过重,导致无法及时响应用户的请求
    504                                 后端服务超时

    响应的报文:报文首部:{状态行(HTTP版本,状态码)响应首部字段,通用首部字段,实体首部字段,空行,报文主体}

#4.如果访问网站出现403、404、500、502、504错误,大概都会是哪些呢?
简答:403 找不到首页,权限不足,nginx配置指定目录错误
          404 服务器上没有你想要的的资源,请求错误
          500 服务器错误(可能是代码的问题,后端服务配置错误)
          502 找不到后端服务(可能是nginx---php未启动)
          504 后端服务器超时,代理配置错误

nginx基础

#1.Nginx通过什么模块实现、php、java、python等web站点的运行?
简答:
    php:fastcgi
    java: proxy
    python: uwsgi

#2.nginx如何配置一个站点?
简答:通过配置server,配置监听的端口和域名,通过location匹配指定到目录

lnmp 架构

#1.lnmp分别都是啥?

linux+nginx+mysql+php
linux+nginx+mysql+python

#2.lnmp架构中 nginx与php之间的如何通讯的,或者说是如何进行工作的?

简答:nginx默认监听80端口,客户端发起http请求,nginx通过fastcgi协议将请求交给后端的php的管理程序php-fpm,php-fpm将请求下发给客户端,发起http请求,nginx进行location匹配

      静态资源nginx处理,动态资源通过fastcgi协议交给后端php
      php后端首先通过php-fpm管理程序叫请求下发给warrap工作进程
warrpa进程调用php进行解析
如果有需要查询数据库的操作由php连接数据库进行查询

#3.在搭建lnmp架构中在Nginx中通常会有一个fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name 这段配置到底是和含义?

简答:设定一个变量:SCRIPT_FILENAME;变量内容就是$document_root:当前请求的根目录 $fastcgi_script_name:当前请

nginx 负载均衡

#0.Nginx能实现那几层的负载均衡? 4层还是7层?

4层   7层

#1.Nginx使用哪两个模块来实现的负载均衡功能?

通过stream模块实现四层
通过upstream模块实现七层

#2.nginx作为负载均衡是不是必须要有keepalived服务?

不一定要有,nginx和keepalived没有关系,nginx需要借助于keepalived VIP地址漂移实现高可用

#3.Nginx反向代理与负载均衡的关系?
简答:nginx负载均衡就是通过upstream模块将后端服务定义为一个虚拟资源池,通过反向代理这个虚拟资源池来实现的负载

#4.Nginx反向代理与负载均衡的区别?
简答:反向代理只能代理一台服务器
      负载可以代理一组虚拟资源池,包含多台服务器
      负载均衡需要通过反向代理来实现,反向代理就是指nginx作为前端服务器,将请求转发到后端,再将后端服务器的结果,返回给我们的客户端,它在中间做了一个代理服务器的角色

      负载均衡对反向代理增加了一些策略,因为后端是多台服务器,nginx会根据设定的策略将请求转发给一个相对空闲的服务器,对负载进行分流,减轻服务器压力

#5.Nginx负载均衡中的Nginx代理与转发有什么区别?
简答:代理:代为办理,代替客户端向后端发起请求
      转发:改写数据包,就是修改数据包的端口和IP,来实现客户端的请求

#6.Nginx负载均衡如何解决会话共享的问题?分别有什么优缺点?

简答:1.ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
    解决问题: 能解决会话保持的问题
    带来新的问题: 会造成后端负载不均衡

    2.实现redis会话共享
    1. 不使用session,使用cookie
  session是存放在服务器端的,cookie是存放在客户端的,
    我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。
    你访问web服务器A,产生了session然后把它放到cookie里面,当你的请求被分配到B服务器时,
    服务器B先判断服务器有没有这个session,如果没有,再去看看客户端的cookie里面有没有这个session,
    如果也没有,说明session真的不存,如果cookie里面有,就把cookie里面的sessoin同步到服务器B,
    这样就可以实现session的同步了。

  说明:这种方法实现起来简单,方便,也不会加大数据库的负担,但是如果客户端把cookie禁掉了的话,
        那么session就无从同步了,这样会给网站带来损失;cookie的安全性不高,虽然它已经加了密,
        但是还是可以伪造的,所以这种方式也是不推荐的。

2. session存在数据库mysql
  session保存在数据库中,是把session表和其他的数据表存放在一起,那么当用户只要登录后随便操作了些什么就要去数据库验证一下session的状态,这样无疑加重了mysql数据库的压力;如果数据库也做了集群的话,那么也就是说每个数据库集群的节点都得保存这个session表,而且要保证每个集群的节点中数据库的session表的数据保持一致,实时同步

  说明:session保持在数据库,加重了数据库的IO,增大数据库的压力和负担,从而影响数据库的读写性能,而且mysql集群的话也不利于session的实时同步
3. session存在缓存memcache或者redis中
  memcache可以做分布式,php配置文件中设置存储方式为memcache,这样php自己会建立一个session集群,将session数据存储在memcache中。

  说明:这种方式来同步session,不会加大数据库的负担,而且安全性比用cookie保存session大大的提高,把session放到内存里面,比从文件中读取要快很多。但是memcache把内存分成很多种规格的存储块,有块就有大小,这种方式也就决定了,memcache不能完全利用内存,会产生内存碎片,如果存储块不足,还会产生内存溢出。

#7.Nginx后端多台web如果不使用负载均衡,如何能实现用户访问域名时能够均匀调度到后端的节点?

简答:可以通过DNS轮询的办法,为一个域名添加多个A记录,通过DNS解析来进行轮询调度,但这样会将服务器真实IP地址暴漏,不利于安全

#8.nginx作为负载均衡是不是必须要有keepalived服务?

nginx rewrite

https

#1.如何在不花钱申请一个公网真实的HTTPS?
简答:可以在阿里云申请ssl证书;证书分为三类:DV;OV;EV;EV为最高级的ssl证书,EV为企业级证书,我们可申请DV型免费证书

#2.https配置在那里,是负载均衡上即可,还是说所有的web机器上都需要配置443端口?
简答:配置在负载均衡上即可,负载均衡请求后方web时可通过http发起请求

#3.如何实现某个特定的链接不走https?
简答:通过location判断,当uri为指定时,不进行return跳转

keepalived

#1.keepalived主备和keepalived双主的区别是什么?各自在什么场景使用呢?
主备:一主一备,同时只有一个在使用
双主:会为主备,两个同时都在使用;同时运行两套架构,为节省资源

#2.keepalived抢占模式和非抢占模式区别在哪?各自有什么优势?
抢占式:一主一备,高优先级为master;抢占式会发生频繁切换,导致用户体验差,
非抢占:两个都为备份,且优先级不同,正在使用的就是master,但需要两台配置相同,

#3.Nginx与Keeplaived之间有什么关系?Nginx如何借助Keepalived软件来实现的服务高可用?
简答:没有关系,nginx使用keepalived的虚拟IP:vip,将域名解析到vip,当一台nginx服务器宕机,vip漂移到另一台服务器,实现用户无感知的切换

ansible

#1.ansible到底能为我们的运维工作带来什么帮助?
#1.Ansible中的playbook是干什么的?
#2.Ansible中的playbook语法?比如:缩进、短横线、冒号是干什么的?
#3.你了解过ansible中的哪些模块?

时间服务

#1.为什么要做时间同步
    简答:为了防止服务器长时间运行导致时间有偏差

#2.大规模机器如何实现时间同步,是所有主机都指向阿里云还是有其他方案?
    /10 * * * *ntpdate ntp1.aliyun.com > /dev/null

内网共享上网

#1、你为什么要做内部主机共享上网,是有什么痛点吗?
    简答:内部主机没有外网网卡,无法联网下载资源

#2、阿里云环境中如何来实现  “无公网IP的服务器”进行上网。有哪些方式?
    两种方式: 1.将内部主机的网关设为防火墙服务器,防火墙服务器开启数据转发,可以实现共享上网
              2.购买nat网关,将内部交换机连接nat网关,可以实现上网

跳板机

机?
#1.JumpServer跳板机能干啥,为什么很多公司都会选择跳板机?
    简答:可以通过跳板机管理内部主机,可以提高架构的安全性

#2.jumpserver 中的管理用户、系统用户、普通用户的区别?
#3.为什么很多公司先拨号openvpn,然后在登陆jumpserver跳板机,然后用JumpServer跳板机管理内部主机?
    简答:用户可以通过外网拨openvpn,openvpn会分配一个内网的地址,通过这个内网地址来连接后端的服务器,提高架构的安全性

监控

1.监控哪些东西?或者说是监控哪些对象?
2.监控的内容?     设定监控的阈值?

dns

#1.什么是递归查询?
    递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。
    如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
        客户机和服务器之间的查询是递归查询
        是递归查询告诉客户机IP

#2.什么是迭代查询?
    DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,
当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,
客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
服务器之间的查询是迭代查询
12-24 01:13