负载均衡LVS基础入门
目录:
前言:LVS技术的重要性
一、集群概念
二、LVS介绍
前言:LVS技术的重要性
LVS在实际应用开发中应用广泛,掌握该项技术可以提高个人竞争力,提高薪资水平。
LVS技术应用背景:
LVS虚拟服务器技术是国人开发的一项专利技术,从技术层面来讲,应用开发的功能十分的强大,从情感角度来讲,这是国人自主开发的一项技术,对于我们程序员来讲意义十分的重大。简言之,掌握好LVS技术都是程序员在学习Linux操作系统时的不二之选。
一、集群概念
Cluster概念
系统扩展方式︰
Scale UP:向上扩展,增强(优化物理设备)
/**业务场景是当公司的访问量不断增大,公司业绩不断攀升,*但问题是服务器无法承担起这么大的访问量。解决办法是提升*服务器的性能,两种方案,一种是向上扩展(买好机器,优化物理*设备),一种是向外扩展。
**/
Scale Out :向外扩展,增加设备,调度分配问题,Cluster
Cluster辅助理解示意图:
/**
*应用场景是:当三台web机器同时对外提供服务,这时用户发*来了访问请求,存在的问题便是该由哪台服务器对其提供服务呢?
*解决方案是按装台lvs调度器就可以解决了。
Lvs会自动收集用*户的请求,但问题是用户访问时使用的是关键
字,而不是具体*ip地址,这个时候又该如何将其请求转接到对应
的后端接口上*呢?dns的出现解决了这个问题,dns可以将其翻
译成对应的ip*这里vip不是日常生活中的vip(非常重要的人)而是虚拟地址。
*地址;vip虚拟ip地址,web1,web2这些才是真正的ip*被称为rip(真实的ip地址)。
**/
//dns意为域名解析器
//lvs是调度器
//vip是虚拟的ip地址
//rip为真实的后端ip地址
Cluster:集群为解决某个特定问题将多台计算机组合起来形成的单个系统
/**
*将多台机器(图中的web1,web2,web3)联合起来形成的单个系*统对外进行服务的模式便被称之为集群。
**/
Linux Cluster类型:
1、LB : Load Balancing,负载均衡
/**
*LB意为均衡负载集群(将用户的请求按照一定的比例分配给不同的*主机,以此来提高性能),典型的例子就是mysql的主从复制(存在
*一个单点失败的问题),当主机宕机时,便失去了写的功能,只能从*从服务器上进行读取数据的操作,因此,mysql的主从复制机制是*一个负载均衡的体现,而不是高可用性的体现。
**/
2、HA : High Availiablity,高可用(如MHA),SPOF ( single Point Of failure )
/**
*高可用的主要目的并不是为了实现性能的提升的,而是为了实现*集群的高可用性的;
例如:MHA的高可用性,当主机出现的宕*机的情况时,MHA可以自动提升一个从服务器为主服务器。
**/
//HA意为高可用集群
MTBF:Mean Time Between Failure平均无故障时间
MTTR:Mean Time To Restoration ( repair )平均恢复前时间
A=MTBF/ (MTBF+MTTR)(0,1): 99%,99.5%,99.9%,99.99%,99.999%
//此处的指标越高,高可用性便越强。
辅助理解示意图:
/**
*该模式存在一个缺陷,当lvs调度器出现问题时易导致整个
*集群环境的瘫痪,举例:前段时间阿里云公司出现的服务器*宕机事件。
**/
3、HPC : High-performance computing,高性能
4、参考网址:www.top500.org
//HPC意为高性能集群
/**
*HPC可以解决HC存在的缺陷,搭建多个lvs调度器,当一台失败*出现故障时,另一台机器仍可以负责器整个系统的正常运行。
**/
分布式系统︰
1、分布式存储︰云盘
分布式式存储系统存储方式辅助理解示意图:
/**
*例如云盘的存储方式便是将文件切分成很多个小块,分放在*很多台服务器上,如此,便可以实现高可用性,当其中一台*服务器出现宕机的情况时,还可以从其他服务器上调取数据。
*常见的分布式文件系统有fast,fs.
**/
2、分布式计算:hadoop ,Spark
集群和分布式的区别:
单机结构:全栈工程师(非常辛苦)
集群结构:全栈工程师+全栈工程师(比较辛苦,但也还过得去)
分布式:前端工程师+后端工程师(相比之下较为轻松)
Cluster分类
1、LB Cluster的实现
2、硬件
F5 Big-IP
Citrix NetscalerA10 A10
3、软件
lvs : Linux Virtual Server
nginx:支持七层调度
haproxy:支持七层调度
ats : apache traffic server , yahoo捐助
perlbal : Perl 编写
4、基于工作的协议层次划分∶
5、传输层(通用) :DPORT(只可以实现传输层以下的协议,如DNAT)
LVS :
nginx : stream
haproxy : mode tcp
6、应用层(专用)︰针对特定协议,自定义的请求模型分类
proxy server :
http : nginx, httpd, haproxy(mode http),...fastcgi : nginx, httpd, ...
mysql : mysql-proxy(读写分离),..
pound
Cluster相关
1、会话保持:负载均衡
(1) session sticky :同一用户调度固定服务器
Source IP : LVS sh算法(对某一特定服务而言)
Cookie
附:Cookic辅助理解示意图
注:一个Cooke对应一个主机,一对一相应
/***当A机器调度到1上时,1上面会存储一个session信*息,可当用户第二次访问的时候如果被调度到2机器上去*时,又该如何解决呢?
解决方案是1,2,3三台集群互相复*制session信息。这样做的缺陷是易造成数据冗余,消耗*服务器性能,且不适用于用户量过大时的应用场景。
**/
(2) session replication:每台服务器拥有全部session
session multicast cluster
(3) session server : 专门的session服务器
Memcached . Redicl
//第三种解决方案是建立主从服务器,搭建Redis缓存。
2、HA集群实现方案
keepalived:vrrp协议
ais:应用接口规范
heartbeat
cman+rgmanager(RHCS)
coresync_pacemaker
二、LVS介绍
1、LVS : Linux Virtual Server,负载调度器,集成内核
/**LVS作为调度器时,性能十分的优异,但缺陷也十分显著,相对来*讲,它的功能较差。Idirectored的出现弥补了LVS功能上的缺陷,*由此可见Idirected的重要性。
**/
官网: http://www.linuxvirtualserver.org/
vs: Virtual Server,负责调度'
RS: Real Server,负责真正提供服务
L4∶四层路由器或交换机
2、工作原理:VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS
注意:工作原理需要重点关注,要求是掌握,LVS的工作原理是公司面试时的常问点。
3、iptables/netfilter :
iptables:用户空间的管理工具netfilter :内核空间上的框架
流入:PREROUTING --> INPUT流出:OUTPUT --> POSTROUTING
转发:PREROUTING -->FORWARD --> POSTROUTINGDNAT︰目标地址转换;PREROUTING
/**
*DNAT可以实现将目标地址进行转换,适用场景是*互联网发出的请求去访问企业内部,在访问内部是,访问的*先后顺序是先去访问连接公网的地址,然后再将其请求转换*到内网的私有地址,以此来对外提供服务。
鉴于DNAT本身*的一对一的特性,无法将请求分配到多台服务器上,只能实*一对一转换。
而vs则可以实现根据请求的报文的目标ip和*目标协议及端口将其调度转发至某RS,根据调度算法来挑选*RS。
/***DNAT可以实现将目标地址进行转换,适用场景是*互联网发出的请求去访问企业内部,在访问内部是,访问的*先后顺序是先去访问连接公网的地址,然后再将其请求转换*到内网的私有地址,以此来对外提供服务。
鉴于DNAT本身*的一对一的特性,无法将请求分配到多台服务器上,只能实*一对一转换。
而vs则可以实现根据请求的报文的目标ip和*目标协议及端口将其调度转发至某RS,根据调度算法来挑选*RS。
**/
**/