应用层 : 网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS
表示层: 数据的表示、安全、压缩 格式有,JPEG、ASCll、DECOIC、加密格式等在五层模型里面已经合并到了应用层)
会话层 建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
传输层 定义传输数据的协议端口号,以及流控和差错效验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层 进行逻辑地址寻址,实现不同网络之间的路径选择 协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层 建立逻辑连接、进行硬件地址寻址、差错效验等功能。(由底层网络定义协议)
物理层 建立、维护、断开物理连接。(由底层网络定义协议)
简记:应 表 会 传 网 数 物
四层:IP+PORT转发 七层:协议+内容交换
四层负载 在四层负载设备中,把client发送的报文目标地址(原来是负载均衡设备的IP地址),根据均衡设备设置的选择web服务器的规则选择对应的web服务器IP地址,这样client就可以直接跟此服务器建立TCP连接并发送数据。
七层代理 七层负载均衡服务器起了一个反向代理服务器的作用,服务器建立一次TCP连接要三次握手,而client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client;所以,七层负载均衡设备起到了代理服务器的作用。
简介:
LVS的是Linux Virtual Server的简写,翻译为Linux虚拟服务器,即一个虚拟的服务器集群系统, 是由我国章文嵩博士在1998年5月所研究成立,也是中国国内最早出现的自由软件项目之一。 LVS由2部分程序组成,包括 ipvs 和 ipvsadm 1. ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。 2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)
LVS相关的几种IP:
VIP :(virtual IP) LVS服务器上接收外网数据报文的网卡IP地址 DIP: (director IP) LVS服务器上发送数据报文到real server的网卡IP地址 RIP :(real server) 真实服务器上的IP,即提供服务的服务器IP(常简称为RS) CIP :(client IP ) 客户端的IP
工作模式:LVS常用的工作模式有DR模式、TUN模式、以及NAT模式
1.DR模式 直接路由: Director Route
(1).工作原理
每个RS(Real Server)上都有两个IP:VIP和RIP,但是VIP是隐藏的,即不能提供解析等功能, 只是用来做请求回复的源IP的,Director(VS)上只需要一个网卡,在该网卡上配置两个IP:VIP和DIP, 在VS接收到客户端的请求后,VS根据负载算法选择一台RS的网卡mac作为客户端请求包中的目标mac, 通过arp转交给后端RS处理,后端RS再通过自己的路由网关回复给客户端client。
2.TUN模式
(1).工作原理
它的连接调度和管理与LVS/NAT中的一样,利用ip隧道技术的原理,即在原有的客户端请求包头中再加一层IP Tunnel的包头ip首部信息, 不改变原来整个请求包信息,只是新增了一层ip首部信息,再利用路由原理将请求发给RS server,不过要求的是所有的server必须支持”IPTunneling”或者”IP Encapsulation”协议。
(2).特点
1.RIP、VIP、DIP全是公网地址 2.RS的网关不会也不可能指向DIP 3.所有的请求报文经由Director Server,但响应报文必须不能进过Director Server 4.不支持端口映射, 5.RS的系统必须支持隧道
3.NAT模式
(1).工作原理
当数据包到达VS时,VS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到数据包以后,仿佛是客户端直接发给它的一样。 RS处理完,返回响应时,源IP是RIP,目标IP是客户端的IP。这时RS的包通过网关(VS)中转,VS会做源地址转换(SNAT), 将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是VS直接返回给它的
(2). 特点
1.RS应该使用私有地址,RS的网关必须指向DIP 2.DIP和RIP必须在同一个网段内 3.请求和响应报文都需要经过DS,高负载场景中,DS易成为性能瓶颈 4.支持端口映射 5.RS可以使用任意操作系统 6.缺陷:对Director Server压力会比较大,请求和响应都需经过director server
优点:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。 2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。 3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。 4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。 5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。 缺点: 1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。 2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有WindowsServer的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
应用方向 正向代理 反向代理 负载均衡 HTTP服务器(包含动静分离)
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。 国内使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
工作原理:
1. Nginx由内核和模块组成。Nginx本身做的工作实际很少,当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block, 2. 而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者。 3. 通常一个location中的指令会涉及一个handler模块和多个filter模块(当然,多个location可以复用同一个模块)。 4. handler模块负责处理请求,完成响应内容的生成,而filter模块对响应内容进行处理。用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强
Nginx的模块从功能上分为:
Core : 核心模块;构建nginx基础服务、管理其他模块。 Handlers: 处理器模块;此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers 处理器模块一般只能有一个。 Filters : 过滤器模块,此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。 Proxies : 代理类模块;此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如Fast CGI等进行交互,实现服务代理和负载均衡等功能。 Nginx的核心模块:主要负责建立nginx服务模型、管理网络层和应用层协议、以及启动针对特定应 用的一系列候选模块。 其他模块负责分配给web服务器的实际工作: (1) 当Nginx发送文件或者转发请求到其他服务器,由Handlers(处理模块)或Proxies(代理类模块)提供服务; (2) 当需要Nginx把输出压缩或者在服务端加一些东西,由Filters(过滤模块)提供服务。
Nginx模块处理流程:
1.客户端发送HTTP请求 2.Nginx基于配置文件中的位置选择一个合适的处理模块 3.负载均衡模块选择一台后端服务器 (如果有) 4.处理模块进行处理并把输出缓冲放到第一个过滤模块上 5.第一个过滤模块处理后输出给第二个过滤模块 6.然后第二个过滤模块又到第三个 7.依此类推,最后把响应发给客户端。
优点:
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就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。