开发者学堂课程【LVS负载均衡实战:负载均衡LVS基础入门】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/553/detail/7631
负载均衡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-prox
y
(读写分离),..
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