运维工程师必会原理知识

一、DNS系统架构与解析原理

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于
TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。
DNS 的过程?

关于DNS的获取流程:
   DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip
地址。
   具体过程如下:
①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了

②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.baidu.com/, 并将这个主机名传送给DNS应用
 的客户端

③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群
 的工作)

④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址

⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接

二、http协议通信原理

(1) 建立TCP连接
(2) Web浏览器向Web服务器发送请求命令
(3) Web浏览器发送请求头信息
(4) Web服务器应答
(5) Web服务器发送应答头信息
(6) Web服务器向浏览器发送数据
(7) Web服务器关闭TCP连接

三、TCP/IP三次握手与四次挥手

在这里插入图片描述

三次握手:

第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个SYN=1的连接请求信号,”服务端哥哥,我想给你说说
话”。
第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息,”我知道了(ACK),我这边已经准备好了,你现在能
连吗(SYN)”。
第三次握手:当客户端收到了服务端的确认连接信息后,要礼貌的告知一下服务端,“好的,咱们开始联通吧(ACK)”。
到此整个建立连接的过程已经结束,接下来就是双方你一句我一句甚至同时交流传递信息的过程了。

四次挥手:

第一次挥手:双方交流的差不多了,此时客户端也已经结尾了,接下来要断开通信连接,所以告诉服务端“我说完了(FIN)”,此时
自身形成等待结束连接的状态。
    
第二次挥手:服务端知道客户端已经没话说了,服务端此时还有两句心里话要给客户端说,“我知道你说完了(ACK),我再给你说两
句,&*……%¥”。
    
第三次挥手:此时客户端洗耳恭听继续处于等待结束的状态,服务器端也说完了,自身此时处于等待关闭连接的状态,并对告诉客户
端,“我说完了,咱们断了吧(FIN)”。
    
第四次挥手:客户端收知道服务端也说完了,也要告诉服务端一声(ACK),因为连接和断开要双方都按下关闭操作才能断开,客户
端同时又为自己定义一个定时器,因为不知道刚才说的这句话能不能准确到达服务端
    
 到此为止双方整个通信过程就此终结。这里要声明一下:断开链接不一定就是客户端,谁都可以先发起断开指令,另外客户端和服务
端是没有固定标准的,谁先发起请求谁就是客户端。

四、MySQL主从同步原理

mysql主从简介:
 			- 一主一从
			 - 主主复制
 			- 一主多从---扩展系统读取的性能,因为读是在从库读取的
 			- 多主一从--5.7开始支持
 			- 联级复制

在这里插入图片描述

用途及条件:

 mysql主从复制用途
实时灾备,用于故障切换
读写分离,提供查询服务
备份,避免影响业务
 
 主从部署必要条件:
主库开启binlog日志(设置log-bin参数)
主从server-id不同
从库服务器能连通主库

主从原理
mysql主从复制原理

在这里插入图片描述
从库生成两个线程,一个I/O线程,一个SQL线程

i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) ;文件中主库会生成一个log dump线程,
用来给从库 i/o线程传binlog;SQL 线程会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终
数据一致;

五、Nginx配合PHP工作的FastCGI工作原理

(1) 什么是 FastCGI?

   FastCGI的方式是,web服务器收到一个请求时,他不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不
会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后
进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出.

在这里插入图片描述
(2)Nginx+FastCGI运行原理

(1) Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
(2)FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。
(3)为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定
在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接
收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通
过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。这就是Nginx+FastCGI的整个运作
过程.

在这里插入图片描述

五、LVS四种工作模式原理

LVS 简介

LVS 是 Linux  Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层
结构:

负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上执行,
而client端认为是返回来一个同一个IP【通常把这个IP 称为虚拟IP/VIP】
服务器池(server pool):一组真正执行client 请求的服务器,一般是我们的web服务器;除了web,还有FTP,MAIL,DNS
共享存储(shared stored):它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相同的服务

(1)直接路由模式(LVS-DR)
在这里插入图片描述

client 发送一个pv请求给VIP;
    VIP 收到这请求后会跟LVS设置的LB算法选择一个LB 比较合理的realserver,然后把此请求的package 的MAC地址修改为
 realserver的MAC地址;

注意:
    (1)LVS 的VIP 和 realserver 必须在同一个网段,不然广播后所有的包都会丢掉: 提前确认LVS/硬件LB 是什么模式,
是否需要在同一个网段
    (2)所有的realserver 都必须绑定VIP的IP地址,否则realserver 收到package后发现dst 不是自己的IP,所有包都
会丢掉。

(2)NAT模式(LVS-NAT)
在这里插入图片描述

-首先client 发送请求[package] 给VIP
-VIP 收到package后,会根据LVS设置的LB算法选择一个合适的realserver,然后把package 的DST IP 修改为realserver
-realserver 收到这个package后判断dst ip 是自己,就处理这个package ,处理完后把这个包发送给LVS VIP
-LVS 收到这个package 后把sorce ip改成VIP的IP,dst ip改成 client ip然后发送给client

(3)Full NAT模式(LVS-FullNAT)

FULL NAT  在client请求VIP 时,不仅替换了package 的dst ip,还替换了package的 src ip;
但VIP 返回给client时也替换了src ip;还是通过上面NAT 模式的工作原因的图进行分析 FULL NAT 的工作原理
  	   1、首先client 发送请求[package] 给VIP
	   2、VIP 收到package后,会根据LVS设置的LB算法选择一个合适的realserver,然后把package 的DST IP 修改
    为realserver;把sorce ip 改成 lvs 集群的LB IP
  	   3、realserver 收到这个package后判断dst ip 是自己,就处理这个package ,处理完后把这个包发送给LVS VIP
	   4、LVS 收到这个package 后把sorce ip改成VIP的IP,dst ip改成 client ip然后发送给client
  
  注意事项:
(1)FULL NAT 模式也不需要 LBIP 和realserver ip 在同一个网段;
(2)full nat 跟nat 相比的优点是:保证RS回包一定能够回到LVS;因为源地址就是LVS--> 不确定
(3)full nat  因为要更新sorce ip 所以性能正常比nat 模式下降 10%

(4)IP隧道模式(LVS-Tunnel)
在这里插入图片描述
基本原理

  1、首先client 发送请求[package] 给VIP
  2、VIP 收到package后,会根据LVS设置的LB算法选择一个合适的realserver;并把client发送的package 包装到一个新
的IP包里面;新的IP包的dst是realserver的IP
  3、realserver 收到这个package后判断dst ip 是自己,然后解析出来的package的dst是VIP;会检测我们的网卡上是否
帮了VIP的ip地址;如果帮了就会处理这个包,如果没有直接丢掉。 我们一般在realserver上面 lo:0 绑定了VIP的ip地址,
就可以处理

IP TUNNEL 模式的注意:
    (1)TUNNEL 模式必须在所有的realserver 机器上面绑定VIP的IP地址
    (2)TUNNEL 模式的vip ------>realserver 的包通信通过TUNNEL 模式,不管是内网和外网都能通信,所以不需要lvs vip
  跟realserver 在同一个网段内
    (3)TUNNEL 模式 realserver会把packet 直接发给client 不会给lvs了
    (4)TUNNEL 模式走的隧道模式,所以运维起来比较难,所以一般不用

四种模式性能比较:

因为DR模式   TP TUNELL 模式都是在package in 时经过LVS ;
在package out是直接返回给client;所以二者的性能比NAT 模式高;
但IP TUNNEL 因为是TUNNEL 模式比较复杂,其性能不如DR模式;
FULL NAT 模式因为不仅要更换 DST IP 还更换 SOURCE IP  所以性能比NAT 下降10%
4种模式的性能如下:DR  --> IP TUNNEL  --->NAT ----->FULL NAT

七、memcached工作原理(内存管理机制)

memcached简介:

memcached是一种缓存技术,存储在内存中(高性能分布式内存缓存服务器)。
  目的:提速。(传统的都是把数据保存在关系型数据库管理系统即RDBMS,客户端请求时会从RDBMS中读取数据并在浏览器中显示,
这样当访问量过大时或集中时,导致RSBMS负担过重,数据库响应恶化,浏览器中显示延迟等严重问题,
使用memcached减少数据库查询和访问次数以提高访问速度,提高扩展性)
    
memcache工作原理:
 (1)memcache 的工作就是在专门的机器的内存里维护一张巨大的 hash 表,来存储经常被读写的一些数组与文件,从而极大的提
高网站的运行效率。
 (2)采用的是C/S模式,在 server 端启动服务进程,在启动时可以指定监听的 ip,自己的端口号,所使用的内存大小等几个
关键参数。
 (3)采用了单进程,单线程,异步I/O,基于事件 (event_based) 的服务方式.使用 libevent 作为事件通知实现。每个Ser
ver 只是对自己的数据进行管理。Client 端通过指定 Server 端的ip 地址(通过域名应该也可以)。以key->value形式,key
的值通过 hash 进行转换,然后确定对那台sever存储/获取数据。

memcache作用:

  高性能分布式缓存服务器(缓存数据库查询结果,减少数据库访问次数)

在这里插入图片描述
memcached适合做的东西:

1、访问频繁的字典数据
2、大量的hot数据(热门数据缓存)
3、页面缓存(web站常用)
4、搜索的查询条件和结果(热门搜索的内容缓存起来)
5、临时处理数据(不需要入库,排重)

八、 keepalived高可用服务工作原理

  (1) Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了
可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(Nginx、Haproxy、MySQL等)
的高可用解决方案软件。
  (2)Keepalived软件主要是通过VRRP协议实现高可用功能的。
VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故
障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。所以,Keepalived 一方面具有配置管理LVS的功能,同时
还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。

在这里插入图片描述
了解VRRP:

Keepalived高可用对之间是通过VRRP通信的,因此,我们从 VRRP开始了解起:

 (1) VRRP,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的
单点故障。

 (2) VRRP是通过一种竟选协议机制来将路由任务交给某台VRRP路由器的。

 (3) VRRP用 IP多播的方式(默认多播地址(224.0_0.18))实现高可用对之间通信。

 (4) 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的开源。
	   备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。

 (5) VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。

Keepalived服务的工作原理:

Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会
优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。
	
在Keepalived服务,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听
不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。

九、CND工作原理

CDN的百度百科的解释为:

CDN的全称是Content Delivery Network,即内容分发网络。

  其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放
置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络。

  CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户
最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

通常网络访问中会有"三公里"路程

第一公里为:源站到ISP接入点
第二公里为:源站ISP接入点到访问用户的ISP接入点
第三公里(最后一公里)为:用户ISP接入点到用户客户端

  第一公里的耗时取决于源站自身响应能力和出口带宽
  第二公里的耗时取决于从源站的接入点到最终用户的接入点之间的传输路径,主要为网络运营商之间的互连瓶颈问题,不同地区骨干
网之间的数据交换、传输,会导致传输途中的路由阻塞和延迟
  第三公里的耗时取决于最终用户接入Internet的方式,会越来越快,以后不会是瓶颈

而CDN网络层主要用来加速第二公里,怎么加速呢?原理并不难,下面简单介绍下:
首先看下访问网站的一个普通流程

在这里插入图片描述
再看下面的CDN层的访问流程

在这里插入图片描述

CDN的好处不止是加速,还可以有效地降低源站负载,降低高额的带宽成本(不必按峰值带宽直接向ISP购买带宽),防止DDOS等攻击。

转载地址: https://blog.csdn.net/qq_17054989/article/details/83043007
原创作者:齐泽文的Blog

猜你喜欢

转载自blog.csdn.net/wgw_dream/article/details/84309351
今日推荐