LVS集群
lvs集群
背景
在互联网应用中,随着站点对硬件性能,响应速度,服务稳定性,数据可靠新等需求约来越高,单台服务器将难以承担素有的访问。
除了使用价格昂贵的大型机,企业含有另一种徐泽来解决难题,通过整合多台廉价的普通服务器来构建大型集群环境。以同一个地址对外提滚相同的服务。
类型
无论是哪种群集,至少包括两台节点服务器,而对外表为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机能力,根据群集所针对的目标差异,可以分为以下三种类型:
(1)负载均衡群集Load Balance Cluster(LB)
以提高应用系统的相应能力、尽可能处理更多的访问请求、减少延迟为目标、获得高并发、高负载(LB)的整体性能。
例如:DNS轮询,应用层交换,反向代理等
负载分配依赖于节点(调度器|负载均衡器)的分流算法,将来自客户端的访问请求封单多个服务器节点,从而缓解整个系统的负载压力,
这类集群软件中比较著名的有:Linux Virtual Server(LVS)、Haproxy、Nginx。
实现集群的硬件:F5 BIG-IP(重要)、Ctrix Netscale人、A10(重要)、Array(重要)、绿盟、梭子鱼
阿里云基于LVS和Nginx包装一个产品:SLB
(2)高可用集群High Availability Cluster(HA)
以提高应用系统的可靠性、尽可能减少中断时间为目标、确保服务的连续性、达到高可用(HA)的容错效果。
例如:故障切换、双机热备、多机热备等。
工作模式:有双工、主从俩种模式。双工即节点同时在线;主从则只有主节点在线,当出现故障时从节点自动切换为主节点。
这类集群中比较著名的有:Heartebat、Keepalived。
(3)高性能运算集群(High Performance Computer Cluster)HPC
以提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型,超级计算机的高性能运算(PHC)能力,
例如:云计算、网络计算
HPC主要依赖分布 式运算,并行计算,通过专用硬件和软件将多个服务器的CPU,内存等资源整合在一起,实现大型,超级计算机才具有的计算能力。
这类软件有:Hadoop
负载均衡实现方式:
软件方式: lvs haproxy nginx
硬件方式 F5
LVS模式及工作原理
LVS负载均衡的三种包转发方式
LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)。不同的转发模式决定了不同的cluster的网络结构
NAT(网络地址映射)
NAT: 网络地址转换
DNAT: 目标地址转换 改变的是目标地址
SNAT: 原地址转换 改变的是原地址
LVS-NAT 就是使用的SNAT和DNAT完成报的转发
*NAT***方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。
IP Tunneling(IP隧道)
director**(分发器)分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。**
Direct Routing(直接路由)
与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。
正向代理概念
正向代理,也就是传说中的代理,他的工作原理就像一个跳板;举个例子:我想访问某个网站,可惜我访问不了(你懂得),但是我有一个代理服务器,这个代理服务器可以访问这个网站,于是我需要先连接上代理服务器,告诉代理服务器,我需要这个网站的内容,让代理服务器去取回来,然后返回给我。网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
结论就是,正向代理 是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理
反向代理概念
反向代理就是代理服务器为服务器做代理人,站在服务器这边,它就是对外屏蔽了服务器的信息,常用的场景就是多台服务器分布式部署,像一些大的网站,由于访问人数很多,就需要多台服务器来解决人数多的问题,这时这些服务器就由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理。
透明代理概念
客户端向真实服务器发起连接,代理机冒充服务器与客户端建立连接,并以客户端ip与真实服务器建立连接进行代理转发。因此对于客户端与服务器来说,代理机都是透明的。
正向与反向代理二者区别
从用途上来讲:
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
从安全性来讲:
的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
从安全性来讲:
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。