运维高阶知识

1、什么是linux的daemon进程?

daemon进程又称为守护进程,是在系统启动就运行,独立于终端之外不与客户端交互。一般进程在关闭客户端后就停止了,但是daemon进程不会停止。

如何判断一个进程是否为守护进程?

因为守护进程独立于终端,使用ps axj 查看进程时,其终端名(tty)显示为?,终端前台进程组ID(TPGID)显示为-1
Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。

守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程经常以超级用户(root)权限运行,因为它们要使用特殊的端口(1-1024)或访问某些特殊的资源。

守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理。

守护进程的名称通常以d结尾,比如sshd、xinetd、crond等

2、迭代

生成器
修饰器
闭包
Rnage xrange
Cookie session
Osi七层模型
Shell sed
Awk
Lvs十种算法
Tcp三次握手四次挥手(断开时如果server端提出断开请求怎么办)

3 、nginx与apache的区别?

nginx的两大优点:一是支持高并发访问;二是代理,能够快速解析静态文件,对于动态语言实现的动态程序传递到后台的服务,实现了动静网页的分离;
nginx是一个自由的开源的高性能的HTTP服务器和反向代理

4、代理服务器与反向代理服务器的区别?

代理服务器和方向代理服务器真正的区别在于代理服务器是工作在client端;
而反向代理服务器是工作在server端的。
在反向代理服务器中,nginx是最优越的

5、CDN优化

CDN内容(html\js\jpg\mp4..)分发(代理\缓存)网络(多地域\多运营商\大宽带\低延迟\调度系统),当用户访问互联网时,通过负载均衡的调度,将用户重定向到距离最近、压力较小的服务节点上,以减少网络拥塞,提高网站响应速度;
负载均衡是整个CDN的核心,负载均衡的准确性和效率直接决定了整个CDN的效率和性能,而nginx是完全可以胜任负载均衡的任务,所以nginx也很大程度上决定了CDN的效率和性能

6、nginx服务器的优化

1、关闭访问日志,如果确实需要记录日志,那么可以根据实际需要有选择地记录部分日志,nginx的访问日志可以具体到“区段”级别。因为在内存的堆栈中是以区段来实现的。在nginx中的区段有:http、server、location
2、使用epoll模型
仅支持Linux 内核2.6版本及其以后
3、nginx服务器配置优化

7、LVS四七层负载均衡

1、负载均衡分为L4 switch(四层交换),即在OSI第四层工作,就是TCP层,负载均衡不需要理解应用协议(如http/ftp/msyql等等)。例子:LVS,F5
2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。此时该负载均衡需要理解应用协议。

四七层技术原理上的区别:

所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

所谓七层负载均衡,也称为“内容交换“,负载均衡服务器读取报文中真正有意义的内容,在根据预先设置的服务器选择方式,决定最终选择的内部服务器。

以常见的TCP为例,负载均衡服务器如果要根据真正的应用层内容在去选择服务器,必须要假装(代理)最终的服务器和客户端建立链接(三次握手)后,才可能接收到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,比如将对图片类的请求转发到特定的图片服务器,将对视频、文字类的请求转发到特定对应的视频、文字服务器。这种情况下,负载均衡服务器相当于一层过滤分发装置,即client端和server端中间多了一个服务器,将client端的请求经过对应用层报文解析,精简筛选分类之后反馈给相应的后端服务器,决定了其优点是提升了应用系统在网络层的灵活性,从这种技术原理来看,负载均衡服务器分别与前端client端、后端server端建立TCP连接;当然,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。其缺点也很显著,那就是安全性、例如syn flood攻击,七层模式确实可以将这些流量屏蔽掉,但是负载均衡服务器本身要具有很大的抗ddos能力,否则即使服务器正常而作为中枢调度的负载均衡器设备故障也会导致整个应用的崩溃

8、常见的HTTP相应状态码

200:请求被正常处理
204:请求被受理但没有资源可以返回
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301:永久性重定向
302:临时重定向
303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用POST方法
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙

9、Cookie和Session的区别

HTTP 是一种无状态的连接,客户端每次读取 web页面时,服务器都会认为这是一次新的会话。但有时候我们又需要持久保持某些信息,比如登录时的用户名、密码,用户上一次连接时的信息等。这些信息就由 Cookie 和 Session 保存。

Cookie
cookie实际上是一小段文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个cookie,客户端浏览器会把cookie保存起来,当浏览器再次请求访问该网站时,浏览器把请求的网站连同该cookie一同提交给服务器,服务器检查该cookie,以此来辨认用户状态。

简单来说,cookie的工作原理可总结如下:
1,client连接server
2,client生成cookie(有效期),再次访问时携带cookie
3, server根据cookie的信息识别用户身份

Session
Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些。同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只要传回一个 ID,这个 ID 是客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的。这样每个客户端就有了一个唯一的 ID,客户端只要传回这个 ID 就行了,这个 ID 通常是 name为 JSESIONID 的一个 Cookie。Session依据这个id来识别是否为同一用户(只认ID不认人)。

cookie和Session区别:
cookie数据存放在客户的浏览器上,session数据放在服务器上。
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。考虑到安全应当使用session。
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

10:1、redis的优缺点:

(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上

2、redis相比memcached有哪些优势

(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
(2) redis可以持久化其数据

11、 Mysql的复制原理以及流程,简述基本原理流程,3个线程以及之间的关联

mysql主从复制原理:
从库有两个线程IO线程和SQL线程
1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;
2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库
3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名
4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。
5.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息
6.从库如果也要做主库,也要打开log_bin和
log-slave-update参数

12.请简单阐述keepalived的故障切换工作原理

keepalived是以VRRP协议为实现基础的VRRP,全称
VirtualRouterRedundancyProtocol,中文名为虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。
在两个负载均衡调度器上安装Keepalived以实现高可用的目的。
两个调度器之间通过VRRP协议来保证高可用性,当一台调度器宕机时,另一台备用的立即接替原主机服务,当主机被修复之后又将服务返还给主机。
在主节点正常工作的时候,会不断地向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点广播的消息,即可判定主节点发生故障,进而调用自身的接管程序,接管主节点的IP资源及服务。而而当主节点被修复时,备节点会释放主节点故障时自己所接管的IP资源和服务,恢复到原来备用的角色。

13.简述一下lvs和Nginx的优缺点

一、Nginx优点:

1、工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名、目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。
2、Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。
3、Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。
4、可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。
5、Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点。
6、不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器。LNMP也是近些年非常流行的Web架构,在高流量环境中稳定性也很好。
7、可作为中层反向代理使用。 8、可作为静态网页和图片服务器。
9、Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。
Nginx缺点:
1、适应范围较小,仅能支持http、https、Email协议。
2、对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。

二、LVS优点:

1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
LVS的缺点:
1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是
Nginx/HAProxy+Keepalived的优势所在。
2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有WindowsServer的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。

猜你喜欢

转载自blog.csdn.net/weixin_34366546/article/details/87479851
今日推荐